Поскольку у производителя нет привязки к категории, я бы написал плагин на сохранение товара и записывал выбранных производителей в ТВ у родителя.
<?php $parent = $modx->getOption('parent', $scriptProperties, $modx->resource->id); $arRes = []; $resources = $modx->getIterator('modResource', ['parent' => $parent, 'class_key' => 'msProduct']); if(is_object($resources)){ foreach($resources as $resource){ $arRes[] = $resource->get('id'); } } $q = $modx->newQuery('msVendor'); $q->innerJoin('msProductData', 'msProductData', 'msProductData.vendor = msVendor.id'); $q->innerJoin('msProduct', 'msProduct', array( 'msProductData.id = msProduct.id', 'msProduct.deleted' => 0, 'msProduct.published' => 1 )); if(isset($arRes)){ $q->where(['msProductData.id:IN' => $arRes]); } $q->groupby('msVendor.id'); $q->sortby('name','ASC'); $output = []; if ($q->prepare() && $q->stmt->execute()) { while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) { $output[] = $row; } } //$modx->log(1, print_r($scriptProperties, 1), '', 'listVendors.php'); return $output; $pdoTools = $modx->getService('pdoTools'); return $pdoTools->getChunk($scriptProperties['tpl'], ['vendors' => $output]);
Вчера где-то находил это пробовал, выводится array [[!brandParent? &parents=`15` ]] Так же?
попробуй использовать pdoResources и class msVendor
Буду у пк гляну в проекте. Я с телефона скопировал код
Я это в меню пытаюсь вывести, а pdoResources внутри pdoMenu не работает - пробовал
выводится array Так нужно далее просто массив разобрать и все
А как и где его разобрать? В снипете или в выводе снипета как-то?
Если ты не используешь fenom, то в сниппете, в противном случае можно прям после вызова сниппета
[[!brandParent? &parents=`1637` &tpl=`@INLINE [[+id]]` ]] Как-то так?
А можно чуть-чуть примера)
Нет. У тебя же сниппет отдаёт массив, а надо чтобы парсил чанк. В сниппете там где возвращается массив, напиши $modx->parseChunk($tpl, $array). Ну и в вызове передай имя чанка. А а самом чанке будут доступны элементы массива как плейсхолдеры [[+id]]
😵💫 сорри, но не догоняю как, куда вставить(
когда ты вызываешь return - все что снизу у тебя уже не отрабатывает
Если не сработает тогда удали то, что написал и закомментируй 30 строку
вместо 30-33 пишешь так: return $modx->parseChunk($tpl, $output) ;
Сделал, в чанке просто плейсхолдер [[+id]] написал - итог выводит 1637 просто, то что указано в parents получается
Покажи итоговый сниппет
Тебе надо начиная с 29 строки объявить переменную $html а ниже в цикле перебрать массив $output, подставив в тело цикла то, что сейчас написано на 30 строке без return, только второй аргумент будет не output, а то что ты напишешь после as. Ну и сохранять это надо в переменную $html и её же за циклом вернуть.
$q->select(array('msVendor.id', 'name')); Где-то после 22 строки попробуй это добавить. В коде с сайта bezumkin.ru она есть, а в примере пропущена. Иначе плейсхолдеры создаются с несколько другими ключами
$html .= $modx...
Добавил, но вроде это тоже не помогает
[[!brandParent? &parents=`1637` &tpl=`tpl.vendor` ]] В чанке tpl.vendor: [[+id]] Итог выводит: 1637
Совсем всё плохо с программированием, да? До цикла $html = ''; В цикле $html .= $modx->parseChunk(...)
С PHP угу... надо было блогером стать) Сделал, но это не помогло все равно, просто ничего не выводит теперь
Скинь доступы в админку в личку
Ну хотят за счет таких как ты, я и других, получить кеш ничего не делая НЕДУМАЯ!
Это понятно, но я сегодня добрый, готов к благотворительности)))
Скидоны допилил)?
Да, вчера вечером. Кстати по поводу сортировки массивов usort не подошла, она ключи затирает, а вот uasort делает то же самое, но ключи сохраняет.
ну да, я думал тебе нужно сортнуть тупо двумерный массив
Не, мне корзину, чтобы... и вот тут я сейчас задумался, а как правильнее отсортировать по возрастанию цены или по убыванию? Просто если скидка на каждый N товар, то если начинать с дорогих, итоговая скидка будет меньше, что выгодно владельцу магазина.
Я на одном проекте разбивал на группы
Спасибо, сделаю по-другому) способов куча, просто хотелось как-то по правильному что ли...
Ну нет, это пусть уже без меня)))
Ну совсем не так... просто кто в чем разбирается лучше... я что знаю, могу помочь тоже
Не принимай близко) У меня чувство юмора как у Петросяна!)
Я когда нахожу решение, какой-то задачи пишу ее решение четко по шагам, чтоб потом кому-то пригодилось, ведь куча задач повторяется
Не самый бедный человек из за своего юмору
вы вопрос то закрыли?
Нет, рабочего снипета так и не получилось же..
я правильно понимаю что вы хотели бренду получить по одному товару?
По всем товарам в категории и подкатегориям
Обсуждают сегодня