Алексей Смирнов

Алексей Смирнов

Был в сети 05 декабря 2025, 08:42
Заказы не принимаю
Вывод один — что-то не так делаете и что-то не так проверяете…
тк в переменной массив из всех значений. И понять в какой опции у вас что активно — не возможно.
Если вы хотите что-то менять в зависимости от модификации, то в модификации нужно указывать эту зависимость от параметра.
Посмотрите выбрано ли в каждой опции какой либо значение. И проверьте правильно ли вы выводите.
Если хотите помощи, то нужны скриншоты заполненых полей модификации хотя бы одной. и коды вывода на сайте снипеты и переменные.
joxi.ru/823x1l0u9elLgA
ну тут ошибка. проверьте.
а плейсхолдеры можно и так передать:
foreach ($assoc as $key => $title) {
$modx->setPlaceholder('title2.' . $key ,$title);
  $output .= $modx->getChunk('tpl.title2',
                              array('title2' => $title));
}
return $output;
И значения будут доступны везде через [[+title2.1]] [[+title2.2]]
Ну вы же
<div id="addtitles">[[!titleAdd]]</div>
вызываете именно тут. вот они тут и распечатываются с чанком. А если вы хотите передать (точнее показать) в html разметке formIt то вам нужно в сниппете присвоить еще и плейсхолдер, который будет содержать 1е значение или 2е (какое хотите). setPlaceholder
посмотрите…
Да, действительно сниппет кешируется. Но мы хитрее, чем MODX )))
Нам нужно передавать какой-то простой уникальный параметр с уникальным значением, чтобы вызов сниппета не брался из кеша.
Думаю, для этого подойдет MIGX_id. И тогда можно добавить к вызову:
[[alextest?data=`[[+cat]]` &chtougodno=`[[+MIGX_id]]` ]]
Да, верно. странно что не выводит в лог… может выбраны не 0 и не 1 значения?
Вот рабочий вариант оставлю тут для себя и всех:
Сниппет вызывается так без знака воскл. !:
[[alextest? &data=`[[+cat]]`]]
Сам сниппет: alextest
if (strpos($data,'[[+') === false){
    return $data;
} else {
    $namex = str_ireplace([ '[[+',']]' ], '', $data);
    for($i=0;$i<50;$i++){
        if ($modx->getPlaceholder($namex . '.' . $i) != '') {
            if ($i > 0) {$out .= ',';}
            $out .= '[[+' . $namex . '.' . $i .']]';
        }
    }
    return $out;
}
А зачем вам TV-шка? она еще что-то делает?
Я обычно такие вещи без TV делаю.
Сразу советую перейти и переделать вызов MIGX через форму как Илья Уткин писал.
а по существу есть ММммммаааленький нюанс в парсере MODX.
Заключается он в том что при обработке поля renderchunktpl если у нас 1 значение — это строка, а если там несколько значений для типа listbox-multiple, то там в результате массив или json смотря с какой стороны смотреть.
А как всем не известно массивы у нас в парсере преобразуются в НОВЫЕ плейсхолдеры с ключем который приходит из этих массивов.
В данном случае у нас ключ это простой индекс от 0 и до бесконечности.
И чтобы получить перечень значений, нужно составить последовательность плейсов в сниппете и вернуть именно в этом формате строкой:
[[+code.0]], [[+code.1]] ...... [[+code.N]].
И тогда все будет хорошо и вы увидете отрендеренные значения.
Если не поняли — кидайте код сниппета.
Плюсики в КАРМУ. приветствуются.
У меня тоже есть вопросы к msFilter2 но я их пока стараюсь не озвучивать )
тк с моей стороны не было предложений и решений этих вопросов.
Как только будут, будут и решения. )
по оптимизации буду держать в голове тему.