Страницы

Поиск по вопросам

четверг, 23 января 2020 г.

Modx revo.Как можно настроить плагин gallery для работы в нескольких контекстах?

#modx #gallery #revo


Всем привет.
Есть сайт на modx revo,установлен babel,сделан 1 дополнительный контекст(en).
Есть страничка на которой есть вывод gallery,в случае дефолтного контекста(web) все
фотки выводятся отлично,но если открыть перевод ресурса в другом контексте фото не
грузится.

Как я понял все дело в путях к файлам с фотографиями:


вот путь в контексте web:

/assets/components/gallery/connector.php?action=web/phpthumb&ctx=web&w=57&h=57&zc=1&far=C&q=90&src=%2Fassets%2Fgallery%2F3%2F41.jpg

а вот путь в контексте eng :

 /assets/components/gallery/connector.php?action=web/phpthumb&ctx=eng&w=57&h=57&zc=1&far=C&q=90&src=%2Fen%2F%2Fassets%2Fgallery%2F3%2F41.jpg



Обратим внимание на конец ссылки:


%2Fassets%2Fgallery%2F3%2F41.jpg
%2Fen%2F%2Fassets%2Fgallery%2F3%2F41.jpg


В en контексте он подписывает - %2Fen (ну или /en)

Хочу спросить,есть ли решение настройки gallery для 2 и более контекстов? Если есть
то как это реализовать?

Обновление

Можно конечно и просто replace добавить:

  • [[+name]]
  • Но это топорный вариант. Хотелось бы все по уму) Вот такой вот способ тоже можно заюзать в главном снипgете Gallery строка 131... правим вот на это: $itemArray['thumbnail'] = str_replace(array('%2Fen%2F'),'',$item->get('thumbnail',$thumbProperties)); $itemArray['image'] = str_replace(array('%2Fen%2F'),'',$item->get('image',$imageProperties)); В принципе это тот же самый реплейс, только уже внутри плагина.


    Ответы

    Ответ 1



    $itemArray['thumbnail'] = str_replace(array('%2F'.($modx->context->get('key')).'%2F'),'',$item->get('thumbnail',$thumbProperties)); $itemArray['image'] = str_replace(array('%2F'.($modx->context->get('key')).'%2F'),'',$item->get('image',$imageProperties)); или же создать сниппет getContextKey return $modx->context->get('key'); и вызывать в фильтре [[+image:replace=%2F[[getContextKey]]%2F==%2F]`]

    Комментариев нет:

    Отправить комментарий