Олег Захаров

Олег Захаров

С нами с 14 октября 2017; Место в рейтинге пользователей: #133

Яндекс.Карты. Меняем метку при наведении нестандартным способом расширяя содержимое метки контентом!

Делюсь наработкой, на которую потратил несколько часов пока бился над решением проблемы. Может кому пригодится, да и для себя чтобы не забыть (пока память свежа изложить полученные знания в шпаргалку).
Понадобилось реализовать поведение карты чтобы при наведении на метку к метке справа добавлялся свой блок с содержимым (так называемый iconContentLayout). Пример:

Не нашел нигде как сделать так. В официальной документации было только примеры изменения иконки метки через замену iconImageHref
Олег Захаров
05 апреля 2024, 02:54
modx.pro
3
1 652
+8

Вывод меню выбора языков для Localizator

Понадобилось сделать меню для сайта с выбором языка. В стандартной документации везде подставляют иконки языка, без текста названия языка.
Я нигде не нашел как можно вытащить название языка (локализации) и указать его в меню выбора языков справа от иконки языка. А оказалось все просто.
В сниппете 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}
Олег Захаров
09 марта 2024, 01:56
modx.pro
1
253
+1

неправильная обработка 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 включены. На старом домене все работало нормально. Подскажите куда копать? Как бы можно забить и делать ссылки без косой черты, но хочется разобраться в сути такого поведения движка.
Олег Захаров
05 мая 2018, 20:06
modx.pro
750
0

Вставка кода Google tag manager через сохранение ID GoogleTagManager в настройках контекста.

как можно вставить код счетчика Google Tag Manager через настройки контекста? Чтобы для каждого контекста прописывать номер счетчика в настройки контекста? А код Google Tag Manager был универсальный. Например я хочу сохранить номер ID GoogleTagManager в настройках контекста, а код сниппета/чанка вставки кода GoogleTagManager сделать универсальный один для всех контекстов?
Олег Захаров
03 апреля 2018, 15:44
modx.pro
1
4 456
0

Не отображается вкладка Дополнительные поля

Добавлял MIGX поля для мульти загрузки изображений, и видимо что-то сделал не так (а может это раньше было) — но у ресурсов не отображаются вкладка Дополнительные поля. Сами поля для теста создаю простейшее текстовое, назначаю шаблону ресурса, открываю ресурс — а вкладки нет. Проверил права — ничего не менял. Помогите куда копать. Сделал обновление версии MODx сайта с 2.61. до 2.6.2 — не помогло.
Пробовал переустановить pdoTools и MIGX. Не помогло.
Хотя сами дополнительные поля создаются и отображаются на странице товара или ресурса внизу, но не на выделенной вкладке «Дополнительные поля» как обычно.
Олег Захаров
01 апреля 2018, 20:19
modx.pro
1
1 238
0

В админке некоторые ресурсы работают некорректно - не отображается дерево ресурсов и их содержимое

При работе в админке часть ресурсов почему-то запускаются некорректно — есть только верхнее меню (шапка) админки, а дерево ресурсов и содержимое ресурса с настройками отсутствуют (остальное темно-синий экран.). Пробовал чистить кеш, пробовал переустанавливать дополнения. Журнал ошибок пустой.
При входе вываливается несколько сообщений:
[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

Олег Захаров
02 марта 2018, 19:59
modx.pro
1 734
0

Ошибки в пакете pdoTools версии 2.11.0

У меня в коде чанка был такой код:
{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/
Олег Захаров
22 февраля 2018, 18:27
modx.pro
1 903
0

Не грузятся страницы сайта после обновления 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>
и все!
Олег Захаров
17 декабря 2017, 10:01
modx.pro
2 391
0

Автореги как защититься от ботов

Достался в доработку сайт от другого программиста.
В админке наблюдаю большое количество регистраций пользователей с разных адресов, с @yahoo.com, @gmail.com и всяких левых забугорных сайов. Поле fullname заполняются вида 5a1b12dc16404, и т.д. Подозреваю что это боты.
Но что интересно — я сделал регистрацию на сайте без подтверждения через почту (для исключения лишних действий) — и когда посетители регаются — их пользователь сразу активируется. Эти левые пользователи добавлялись до отключения активации, так и после — и при этом они добавляются без активации пользователя. Полагаю что это не боты которые заполняют форму регистрации (раз они остаются в статусе неактивных), а боты которые каким-то образом подключаются к сайту через коннекторы или еще какие-то способы.
Прошу помочь.
Олег Захаров
30 ноября 2017, 22:37
modx.pro
2
1 875
0

Ошибка при обновлении 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

посмотрел функцию — это
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.
Олег Захаров
20 ноября 2017, 11:18
modx.pro
1 662
0