Как подружить SendIt и Polylang ?

Добрый день!

На сайте имеется форма, которая работает через SendIt, при клике на radio button запускается пресет
'change_category_type' => [
        'hooks' => '',
        'snippet' => 'change_category_type',
        'resultBlockSelector' => '#category_type_results',
        'resultShowMethod' => 'insert',
    ],
В самом снипете «change_category_type» делаю различные проверки и запускаю еще один снипет
$modx->runSnippet(
        'pdoResources', array(
             'parents' => 63,
    	     'depth' => 1,
    	     'limit' => 0,
    	     'sortby' => '{"id":"ASC"}',
    	     'onlyWithLocalization' => 1,
             'tpl' => '@INLINE : <p> [[++lang]] - [[+pagetitle]]</p>'
))
Всё вроде хорошо, снипет «pdoResources» срабатывает, но не отображаются заголовки ресурсов на другом языке. Отображаются заголовки только основного языка.

Подскажите, каким образом можно вывести заголовки выбранного языка сайта?
Ruslan
19 декабря 2024, 08:48
modx.pro
688
0

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

Артур Шевченко
19 декабря 2024, 21:16
0
Polylang не предназначен для работы по ajax. Тебе нужно передавать на сервер текущий ключ языка. А на сервере написать плагин на событие OnMODXInit в котором надо устанавливать cultureKey значение равное текущему языку. И нужно плагину Polylang поставить приоритет 1.
    Ruslan
    20 декабря 2024, 10:32
    0
    Сделал плагин, и указал жёстко переопределение языка.
    Кстати самому плагину Polylang приоритет «1» не ставил еще.
    switch ($modx->event->name) {
        case 'OnMODXInit':
        $modx->setOption('cultureKey', 'uz');
        break;
    }
    Работает отлично.

    Но как передать туда ключ текущего языка, так и не нашел. Можете подсказать каким образом передать можно?
      Артур Шевченко
      20 декабря 2024, 12:41
      0
      В php есть супер глобальные массивы $_COOKIE, $_SESSION, $_REQUEST клади туда. Самый простой вариант- добавь поле с ключом в форму которая отправляется на сервер.
        Ruslan
        20 декабря 2024, 12:53
        0
        Спасибо, я уже начал как раз пробывать передавать через $_COOKIE.
        Просто думал есть какой то другой правильный способ )
    Ruslan
    21 декабря 2024, 11:46
    +1
    После стольких мучений, я понял что SendIt и Polylang очень даже дружат.
    Моя ошибка была в том, что я не увидел одного мелкого важного момента.

    Важно! Ссылка переключения языка должна иметь класс polylang-toggle или тот который указан в параметре trigger сниппета PolylangLinks.

    Я лишь указал этот класс и всё само заработало.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5