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

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

С нами с 20 декабря 2014; Место в рейтинге пользователей: #32
12 ноября 2022, 20:02
0
Есть BannerY там ссылки банеров формируются и еще и количество кликов считает.
Пойдет ли вам или нет не знаю.
12 ноября 2022, 10:22
0
Вывод один — что-то не так делаете и что-то не так проверяете…
тк в переменной массив из всех значений. И понять в какой опции у вас что активно — не возможно.
Если вы хотите что-то менять в зависимости от модификации, то в модификации нужно указывать эту зависимость от параметра.
Посмотрите выбрано ли в каждой опции какой либо значение. И проверьте правильно ли вы выводите.
Если хотите помощи, то нужны скриншоты заполненых полей модификации хотя бы одной. и коды вывода на сайте снипеты и переменные.
10 ноября 2022, 18:25
0
Посмотрите что хранит переменная:
<pre>{$to_order | print_r}</pre>
10 ноября 2022, 14:41
+1
В данном случае достаточно просто:
[[+total.cost]] и [[+total.count]]
06 ноября 2022, 23:38
0
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]]
06 ноября 2022, 21:34
0
А после чего начались сыпаться ошибки? что делали?
06 ноября 2022, 21:33
+1
Ну вы же
<div id="addtitles">[[!titleAdd]]</div>
вызываете именно тут. вот они тут и распечатываются с чанком. А если вы хотите передать (точнее показать) в html разметке formIt то вам нужно в сниппете присвоить еще и плейсхолдер, который будет содержать 1е значение или 2е (какое хотите). setPlaceholder
посмотрите…
03 ноября 2022, 16:05
0
Ну array показывается если вы переменную не верно выводите. попробуйте так:
$title=$_POST['title'];
<pre>
print_r($title);
</pre>
03 ноября 2022, 13:13
0
Лимит искать? Сомневаюсь что в поле накликают больше 50 категорий. Но если надо можно и до 100ки.
Этот лимит только для одного поля ввода. Так что должно хватить с лихвой.
03 ноября 2022, 12:36
+1
Да, действительно сниппет кешируется. Но мы хитрее, чем MODX )))
Нам нужно передавать какой-то простой уникальный параметр с уникальным значением, чтобы вызов сниппета не брался из кеша.
Думаю, для этого подойдет MIGX_id. И тогда можно добавить к вызову:
[[alextest?data=`[[+cat]]` &chtougodno=`[[+MIGX_id]]` ]]
03 ноября 2022, 11:45
+1
Да, верно. странно что не выводит в лог… может выбраны не 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;
}
03 ноября 2022, 11:24
0
С кол-вом беда…
Но в момент когда сниппет у нас будет срабатывать плейсхолдеры уже будут в системе.
Это значит что наличие их мы сможем проверить через:
$modx->getPlaceholder('place.N');
Остается прогнать в цикле и проверить на пустоту или наличие.
Про плюшки:
ну опечаток со скобками и прочего будет меньше… — накликал и все отлично.
плюс — надо добавить поле — пару кликов и готово, а с json надо возиться и помнить все поля. В редакторе — просто удобнее расширять и править. ну и переносить из проекта в проект — вообще просто.
Если осовите редактор, то и такие вещи проще там делать. вот хорошая общая статья:
modx.pro/howto/16558
03 ноября 2022, 10:43
+1
А зачем вам TV-шка? она еще что-то делает?
Я обычно такие вещи без TV делаю.
Сразу советую перейти и переделать вызов MIGX через форму как Илья Уткин писал.
а по существу есть ММммммаааленький нюанс в парсере MODX.
Заключается он в том что при обработке поля renderchunktpl если у нас 1 значение — это строка, а если там несколько значений для типа listbox-multiple, то там в результате массив или json смотря с какой стороны смотреть.
А как всем не известно массивы у нас в парсере преобразуются в НОВЫЕ плейсхолдеры с ключем который приходит из этих массивов.
В данном случае у нас ключ это простой индекс от 0 и до бесконечности.
И чтобы получить перечень значений, нужно составить последовательность плейсов в сниппете и вернуть именно в этом формате строкой:
[[+code.0]], [[+code.1]] ...... [[+code.N]].
И тогда все будет хорошо и вы увидете отрендеренные значения.
Если не поняли — кидайте код сниппета.
Плюсики в КАРМУ. приветствуются.
03 ноября 2022, 08:27
0
Покажите рендер чанк.
02 ноября 2022, 13:38
+1
Вам необходимо в поле записывать текст, а не массив.
Или писать дополнительный плагин, чтобы Формит понимал данные приходящие как массив. По-моему из коробки он не умеет.
02 ноября 2022, 10:46
0
Ну смотря как вы вызываете… код вы покажите, может вы для pdoMenu не передаете id от которого строить меню.
01 ноября 2022, 22:43
0
По сути нужно получить id вложенных последовательных pdoCrumbs это сделает.
Потом берете pdoMenu и делаете вложенные пункты.
Ничего сильно сложного.
29 октября 2022, 00:15
+1
Еще так можно:
<param name="{$option.caption}">{$option.value is array ? (($option.value | join :',') | ucfirst) : $option.value | ucfirst}</param>
24 октября 2022, 09:27
0
Да, PR надо заслать, может Василий найдет минутку и влепит его.
20 октября 2022, 17:39
0
У меня тоже есть вопросы к msFilter2 но я их пока стараюсь не озвучивать )
тк с моей стороны не было предложений и решений этих вопросов.
Как только будут, будут и решения. )
по оптимизации буду держать в голове тему.