![Олег Захаров](/assets/images/avatars//27f6c50de930bbe3ba65ec43a7d5a8ef-64.jpg?t=1725751590)
Олег Захаров
С нами с 14 октября 2017; Место в рейтинге пользователей: #103Localizator: TV и MIGX не переводило, а ларчик оказалось открывался просто
Столкнулся с одной особенностью работы Localizator с MIGX и TV.
Все никак не получалось заставить Localizator правильно переводить MIGX поля и в некоторых случаях отдельные TV поля. Перепробовал кучу вариантов, пытался выводить через выводы сниппетов localizator, pdoResources, getImageList. Потратил пару суток впустую, кучу нервов и сил.
А в итоге оказалось все просто. Случайно обнаружил что некоторые TV переводит, а некоторые нет.
В некоторых местах я MIGX выводил следующим образом:
В итоге вывод этого кода не переводился как надо, выводился только MIGX не из переводов.
Но если заменить
Все никак не получалось заставить Localizator правильно переводить MIGX поля и в некоторых случаях отдельные TV поля. Перепробовал кучу вариантов, пытался выводить через выводы сниппетов localizator, pdoResources, getImageList. Потратил пару суток впустую, кучу нервов и сил.
А в итоге оказалось все просто. Случайно обнаружил что некоторые TV переводит, а некоторые нет.
В некоторых местах я MIGX выводил следующим образом:
{set $rows = json_decode($_modx->resource.id | resource : 'migx_why_us_list', true)}
{foreach $rows as $idx =>$row1 index=$index}
<li>
{$row1.textprichini}
</li>
{/foreach}
где migx_why_us_list — MIGX поле.В итоге вывод этого кода не переводился как надо, выводился только MIGX не из переводов.
Но если заменить
$_modx->resource.id | resource : 'migx_why_us_list'
на $_modx->resource.migx_why_us_list
то все начинает работать как надо. Яндекс.Карты. Меняем метку при наведении нестандартным способом расширяя содержимое метки контентом!
Делюсь наработкой, на которую потратил несколько часов пока бился над решением проблемы. Может кому пригодится, да и для себя чтобы не забыть (пока память свежа изложить полученные знания в шпаргалку).
Понадобилось реализовать поведение карты чтобы при наведении на метку к метке справа добавлялся свой блок с содержимым (так называемый iconContentLayout). Пример:
![](https://gowindo.ru/assets/images/blog/modx.pro/20240405/metkamaket.jpg)
Не нашел нигде как сделать так. В официальной документации было только примеры изменения иконки метки через замену iconImageHref
Понадобилось реализовать поведение карты чтобы при наведении на метку к метке справа добавлялся свой блок с содержимым (так называемый iconContentLayout). Пример:
![](https://gowindo.ru/assets/images/blog/modx.pro/20240405/metkamaket.jpg)
Не нашел нигде как сделать так. В официальной документации было только примеры изменения иконки метки через замену iconImageHref
Вывод меню выбора языков для Localizator
Понадобилось сделать меню для сайта с выбором языка. В стандартной документации везде подставляют иконки языка, без текста названия языка.
Я нигде не нашел как можно вытащить название языка (локализации) и указать его в меню выбора языков справа от иконки языка. А оказалось все просто.
В сниппете getLanguages можно было просто добавить еще один плейсхолдер 'languageName'=> $language->name (к имеющимся cultureKey, active и url).
section-langs-1:
Я нигде не нашел как можно вытащить название языка (локализации) и указать его в меню выбора языков справа от иконки языка. А оказалось все просто.
В сниппете getLanguages можно было просто добавить еще один плейсхолдер 'languageName'=> $language->name (к имеющимся cultureKey, active и url).
foreach($languages as $language) {
if(mb_substr($language->http_host, -1) == '/') {
$placeholders = array(
'cultureKey' => $language->key,
'active' => $language->key == $modx->localizator_key ? 'active' : '',
'url' => $protocol . $language->http_host . $uri,
'languageName'=> $language->name,
);
} else {
$placeholders = array(
'cultureKey' => $language->key,
'active' => $language->key == $modx->localizator_key ? 'active' : '',
'url' => $protocol . $language->http_host . '/' . $uri,
'languageName'=> $language->name,
);
}
И в чанках просто добавить {$languageName}section-langs-1:
<a href="#" class="nav-link dropdown-toggle {if $_modx->config.cultureKey == $cultureKey} {$active} {else} collapse {/if} localizator_lang" data-bs-toggle="dropdown" role="button" aria-expanded="false" >
<span class="{$cultureKey}_24" style="display: inline-block;"></span>
{$languageName}
</a>
section-langs-2:{if $_modx->config.cultureKey != $cultureKey}
<li >
{if $active != 'active'}
<a class="{$active} localizator_lang" href="{$url}" class="dropdown-item">
<span class="{$cultureKey}_24" style="display: inline-block;"></span>
{$languageName}
</a>
{else}
<div class="{$active} {$cultureKey}_24 localizator_lang" class="dropdown-item">
<span class="{$cultureKey}_24" style="display: inline-block;"></span>
{$languageName}
</div>
{/if}
</li>
{/if}
неправильная обработка url адресов
Сделал перенос сайта с одного домена на другой.
Выводу ссылки в шаблоне в виде:
Если оставить в конце без косой черты в формате «domain.ru/aboutkompany» — то ссылка работает нормально. В настройках контекста web задан параметр base_url "/" -т.к. до этого у другого домена все работало и было задано с такими настройками. Дружественные URL включены. На старом домене все работало нормально. Подскажите куда копать? Как бы можно забить и делать ссылки без косой черты, но хочется разобраться в сути такого поведения движка.
Выводу ссылки в шаблоне в виде:
<ul class="dropdown-menu multi-level">
<li><a href="/aboutkompany/">О компании</a></li>
<li><a href="/proizvodstvo/">О производстве</a></li>
<li><a href="/otdelprodazh/">Отдел продаж</a></li>
</ul>
В браузере коде страницы ссылка отображается правильно в формате: «domain.ru/aboutkompany/» — но при нажатии по ссылке происходит удаление косой черты и склеивание в виде «domain.ruaboutkompany».Если оставить в конце без косой черты в формате «domain.ru/aboutkompany» — то ссылка работает нормально. В настройках контекста web задан параметр base_url "/" -т.к. до этого у другого домена все работало и было задано с такими настройками. Дружественные URL включены. На старом домене все работало нормально. Подскажите куда копать? Как бы можно забить и делать ссылки без косой черты, но хочется разобраться в сути такого поведения движка.
Вставка кода Google tag manager через сохранение ID GoogleTagManager в настройках контекста.
как можно вставить код счетчика Google Tag Manager через настройки контекста? Чтобы для каждого контекста прописывать номер счетчика в настройки контекста? А код Google Tag Manager был универсальный. Например я хочу сохранить номер ID GoogleTagManager в настройках контекста, а код сниппета/чанка вставки кода GoogleTagManager сделать универсальный один для всех контекстов?
Не отображается вкладка Дополнительные поля
Добавлял MIGX поля для мульти загрузки изображений, и видимо что-то сделал не так (а может это раньше было) — но у ресурсов не отображаются вкладка Дополнительные поля. Сами поля для теста создаю простейшее текстовое, назначаю шаблону ресурса, открываю ресурс — а вкладки нет. Проверил права — ничего не менял. Помогите куда копать. Сделал обновление версии MODx сайта с 2.61. до 2.6.2 — не помогло.
Пробовал переустановить pdoTools и MIGX. Не помогло.
Хотя сами дополнительные поля создаются и отображаются на странице товара или ресурса внизу, но не на выделенной вкладке «Дополнительные поля» как обычно.
Пробовал переустановить pdoTools и MIGX. Не помогло.
Хотя сами дополнительные поля создаются и отображаются на странице товара или ресурса внизу, но не на выделенной вкладке «Дополнительные поля» как обычно.
В админке некоторые ресурсы работают некорректно - не отображается дерево ресурсов и их содержимое
При работе в админке часть ресурсов почему-то запускаются некорректно — есть только верхнее меню (шапка) админки, а дерево ресурсов и содержимое ресурса с настройками отсутствуют (остальное темно-синий экран.). Пробовал чистить кеш, пробовал переустанавливать дополнения. Журнал ошибок пустой.
При входе вываливается несколько сообщений:
[2018-03-02 22:43:18] (ERROR @ /home/кореньхоста/папка core/model/modx/modx.class.php: 1612)
[OnTVInputRenderList]
Notice: Undefined index: mgr in /home/кореньхоста/папка core/cache/includes/elements/modplugin/14.include.cache.php on line 11
При входе вываливается несколько сообщений:
[2018-03-02 22:43:18] (ERROR @ /home/кореньхоста/папка core/model/modx/modx.class.php: 1612)
[OnTVInputRenderList]
Notice: Undefined index: mgr in /home/кореньхоста/папка core/cache/includes/elements/modplugin/14.include.cache.php on line 11
Ошибки в пакете pdoTools версии 2.11.0
У меня в коде чанка был такой код:
Решение проблемы увидел в вопросе https://modx.pro/help/14292/
{set $dostupnaurok = [[+id]]|pasraccess:0:[[+id]]}
Выходила ощибка:[2018-02-22 21:20:02] (ERROR @ /home/host1587055/kids-kaplya.com/htdocs/www/core/components/pdotools/model/pdotools/pdotools.class.php : 977) Unexpected token '+' in expression in modchunk/74 line 2, near '{set $dostupnamesyac = [[+' <- there
[2018-02-22 21:20:03] (ERROR @ /home/host1587055/kids-kaplya.com/htdocs/www/core/components/pdotools/model/pdotools/pdotools.class.php : 977) Unexpected token '+' in expression in modchunk/74 line 2, near '{set $dostupnamesyac = [[+' <- there
Я заменил на:{set $dostupnaurok = $_modx->resource.id|pasraccess:0:$_modx->resource.id}
Все заработало. В чем причина? до этого вроде работало, а после обновления pdotools до версии 2.11.0 перестало работать.Решение проблемы увидел в вопросе https://modx.pro/help/14292/
Не грузятся страницы сайта после обновления pdoTools с версии 2.10.3 на версию 2.10.4
[2017-12-17 12:46:36] (ERROR @ /home/hostxxxxx/sitename.com/htdocs/www/core/model/modx/modconnectorresponse.class.php : 159) PHP warning: Cannot modify header information - headers already sent by (output started at /home/hostxxxxx/sitename.com/htdocs/www/core/model/modx/modx.class.php:2284)
[2017-12-17 12:46:44] (ERROR @ /home/hostxxxxx/sitename.com/htdocs/www/core/components/pdotools/model/pdotools/pdotools.class.php : 977) Unexpected token ':' in e3512ec55ae9b7b37aa4964c4dea152a line 197, near '{"modUser.id:=":' <- there
Что делать?На страницах выводит пустой код:
<html><head></head><body></body></html>
и все! Автореги как защититься от ботов
Достался в доработку сайт от другого программиста.
В админке наблюдаю большое количество регистраций пользователей с разных адресов, с @yahoo.com, @gmail.com и всяких левых забугорных сайов. Поле fullname заполняются вида 5a1b12dc16404, и т.д. Подозреваю что это боты.
Но что интересно — я сделал регистрацию на сайте без подтверждения через почту (для исключения лишних действий) — и когда посетители регаются — их пользователь сразу активируется. Эти левые пользователи добавлялись до отключения активации, так и после — и при этом они добавляются без активации пользователя. Полагаю что это не боты которые заполняют форму регистрации (раз они остаются в статусе неактивных), а боты которые каким-то образом подключаются к сайту через коннекторы или еще какие-то способы.
Прошу помочь.
В админке наблюдаю большое количество регистраций пользователей с разных адресов, с @yahoo.com, @gmail.com и всяких левых забугорных сайов. Поле fullname заполняются вида 5a1b12dc16404, и т.д. Подозреваю что это боты.
Но что интересно — я сделал регистрацию на сайте без подтверждения через почту (для исключения лишних действий) — и когда посетители регаются — их пользователь сразу активируется. Эти левые пользователи добавлялись до отключения активации, так и после — и при этом они добавляются без активации пользователя. Полагаю что это не боты которые заполняют форму регистрации (раз они остаются в статусе неактивных), а боты которые каким-то образом подключаются к сайту через коннекторы или еще какие-то способы.
Прошу помочь.