Всего 123 809 комментариев

Алексей Смирнов
03 ноября 2022, 10:43
+1
А зачем вам TV-шка? она еще что-то делает?
Я обычно такие вещи без TV делаю.
Сразу советую перейти и переделать вызов MIGX через форму как Илья Уткин писал.
а по существу есть ММммммаааленький нюанс в парсере MODX.
Заключается он в том что при обработке поля renderchunktpl если у нас 1 значение — это строка, а если там несколько значений для типа listbox-multiple, то там в результате массив или json смотря с какой стороны смотреть.
А как всем не известно массивы у нас в парсере преобразуются в НОВЫЕ плейсхолдеры с ключем который приходит из этих массивов.
В данном случае у нас ключ это простой индекс от 0 и до бесконечности.
И чтобы получить перечень значений, нужно составить последовательность плейсов в сниппете и вернуть именно в этом формате строкой:
[[+code.0]], [[+code.1]] ...... [[+code.N]].
И тогда все будет хорошо и вы увидете отрендеренные значения.
Если не поняли — кидайте код сниппета.
Плюсики в КАРМУ. приветствуются.
Alexey
03 ноября 2022, 09:25
0
[{"caption":"Image", "fields": [    
    {"field":"title","caption":"Заголовок"}, 
    {"field":"cat","caption":"Категории","inputTV":"category_list"}
  ]
}]

[{
  "header": "Заголовок", "sortable": "true", "dataIndex": "title"
},{
  "header": "Категории", "sortable": "true", "dataIndex": "rendercat","renderer":"this.renderChunk",
  "renderchunktpl":"[[!getPortfolioCategoryTitles?&input=`[[+cat]]`]]"
}]

В сниппете getPortfolioCategoryTitles логирую переменную input. Если в селекте выбрано одно значение, то в лог записывается id выбранного ресурса. Если выбрано несколько — в лог пишется строка "[[+cat]]" — skrinshoter.ru/s/031122/ZSCrDuDu

TV «category_list» — поле типа список со множественным выбором, возможные значения:

@EVAL $out = $modx->runSnippet('pdoResources',array('parents'=>0,'depth'=>0,'limit'=>0,'sortby'=>'menutitle','sortdir'=>'DESC','tpl'=>'@INLINE [[+pagetitle]]==[[+id]]','outputSeparator'=>'||')); return $out;
Михаил
03 ноября 2022, 09:25
0
Конечно можно. Там есть события, а MIGX это json. Вот при обновлении просто обрабатываете нужное поле и в json его пишите
Алексей Смирнов
03 ноября 2022, 08:27
0
Покажите рендер чанк.
Alexey
03 ноября 2022, 01:11
0
В итоге: если выбрано несколько категорий в селекте, то рендер не получается выполнить, как писали выше — modx.pro/help/6945#comment-49022. У кого-нибудь получилось разгадать?

Почему не передается в сниппет-рендерер значение поля [[+cat]] (к примеру), если в селекте выбрано несколько категорий и [[+cat]] прекрасно передается, если выбрана одна категория?
Артур Шевченко
02 ноября 2022, 21:47
0
Вероятно да, только надо использовать конструктор запросов newQuery(). Тут почитай
Артур Шевченко
02 ноября 2022, 21:44
+1
В целом мысль здравая. Но лучше использовать метод $modx->getIteraror(). И выбирать модификации только текущего ресурса.
Дмитрий
02 ноября 2022, 19:33
0
пока в голову пришло только с начало отключить все модификаторы, а потом включать те, что есть в файле
$modifications = $modx->getCollection('msopModification');
foreach ($modifications as $modification) {
	$modification->active = 0;
	$modification->save();
}


но может есть более рациональный способ?
Алексей Смирнов
02 ноября 2022, 13:38
+1
Вам необходимо в поле записывать текст, а не массив.
Или писать дополнительный плагин, чтобы Формит понимал данные приходящие как массив. По-моему из коробки он не умеет.
Алексей Смирнов
02 ноября 2022, 10:46
0
Ну смотря как вы вызываете… код вы покажите, может вы для pdoMenu не передаете id от которого строить меню.
Сергей
02 ноября 2022, 08:10
0
Спасибо за помощь, пробовал вызвать pdoMenu в pdoCrumbs но не выводиться, видимо надо допиливать сниппет pdoCrumbs.
Сергей Шлоков
02 ноября 2022, 06:41
+1
Я сейчас плотно занят Laravel/Vue. Планы есть. Задачи в бэклоге тоже. Даже начал перевод под MODX3. Но времени катастрофически не хватает. ( И мотивации.
Алексей Смирнов
01 ноября 2022, 22:43
0
По сути нужно получить id вложенных последовательных pdoCrumbs это сделает.
Потом берете pdoMenu и делаете вложенные пункты.
Ничего сильно сложного.
Сергей
01 ноября 2022, 22:13
0
Нет такое не сделать на pdoMenu
Артур Шевченко
31 октября 2022, 22:50
0
Мне кажется такие вопросы надо задавать в телеге с 7 до 9 вечера по МСК)))
Сергей
31 октября 2022, 19:25
0
Хотя через parent id можно как-то сделать, надо подумать.
deleted
31 октября 2022, 19:21
0
Я сейчас с MODX практически не работаю
То есть развития ZoomX не ждать?(
Сергей
31 октября 2022, 19:02
0
У вас меню всегда будет не зависимо от того, в какой категории вы находитесь. Думал про это, но ни чего не выйдет.
Сергей Шлоков
31 октября 2022, 18:52
0
Неа. Я сейчас с MODX практически не работаю. А в ишу на гитхабе особо важного ничего нет.
Александр Туниеков
31 октября 2022, 16:45
+1
Добрый день! С кешированием Я написал что у меня получилось. Кешируется массив значений фильтра и id их ресурсов. Первый запуск медленный. Это когда этот массив собирается из базы. Когда кеш массива есть показ страници и ajax-фильтрация происходит быстро. Цифры привел в статье. Сейчас не охота их заного получать.
хочется что то из коробки
Это не ко мне. Я не автор компонента. Обращайтесь к @Илья Уткин
напишите решение до чего добились в производительности
Текушее решение https://gist.github.com/touol/fd1989021270553eafb6c9540f726965
Но оно тоже не идеальное. Сильно не парился. И не понятно почему может и работать и не работать. Например, не работает и вывод дебага начал выводить вдруг заработало.
Если надо чтоб работало из коробки и так как надо, Илью долбите чтоб начал работать над улучшением mFilter2. mFilter2 — компонент платный. Пусть париться тот кто за это деньги получает.