Олег Захаров
С нами с 14 октября 2017; Место в рейтинге пользователей: #133Яндекс.Карты. Меняем метку при наведении нестандартным способом расширяя содержимое метки контентом!
Делюсь наработкой, на которую потратил несколько часов пока бился над решением проблемы. Может кому пригодится, да и для себя чтобы не забыть (пока память свежа изложить полученные знания в шпаргалку).
Понадобилось реализовать поведение карты чтобы при наведении на метку к метке справа добавлялся свой блок с содержимым (так называемый iconContentLayout). Пример:
Не нашел нигде как сделать так. В официальной документации было только примеры изменения иконки метки через замену iconImageHref
Понадобилось реализовать поведение карты чтобы при наведении на метку к метке справа добавлялся свой блок с содержимым (так называемый iconContentLayout). Пример:
Не нашел нигде как сделать так. В официальной документации было только примеры изменения иконки метки через замену 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, и т.д. Подозреваю что это боты.
Но что интересно — я сделал регистрацию на сайте без подтверждения через почту (для исключения лишних действий) — и когда посетители регаются — их пользователь сразу активируется. Эти левые пользователи добавлялись до отключения активации, так и после — и при этом они добавляются без активации пользователя. Полагаю что это не боты которые заполняют форму регистрации (раз они остаются в статусе неактивных), а боты которые каким-то образом подключаются к сайту через коннекторы или еще какие-то способы.
Прошу помочь.
Ошибка при обновлении Modhelpers -упал сайт что делать
Обновил из админки modhelpers без Бэкапа (поленился). Итог — сайт выдает ошибку:
Fatal error: Call to undefined function random_bytes() in /home/...sitename.com/htdocs/www/core/components/modhelpers/functions/functions.php on line 1738
посмотрел функцию — это
Решено:
Спустя пару минут заработало. Видимо благодаря тому что поставил php 7.
Fatal error: Call to undefined function random_bytes() in /home/...sitename.com/htdocs/www/core/components/modhelpers/functions/functions.php on line 1738
посмотрел функцию — это
if (! function_exists('str_random')) {
/**
* Generate a more truly "random" alpha-numeric string.
* @param int $length
* @return string
*/
function str_random($length = 16)
{
$string = '';
while (($len = strlen($string)) < $length) {
$size = $length - $len;
$bytes = random_bytes($size);
$string .= substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $size);
}
return $string;
}
}
Ругается на $bytes = random_bytes($size);Решено:
Спустя пару минут заработало. Видимо благодаря тому что поставил php 7.