как вывести список категорий в которые включен товар в minishop2 в виде ссылок
как вывести список категорий в которые включен товар в minishop2 в виде ссылок на странице самого товара?
Комментарии: 8
Сделайте сниппет getCategories:
Вызывайте на странице товара
В чанках:
В чанке cat_tpl доступны все поля ресурса например:
<?php
$modx->getService('miniShop2');
$docid = $modx->getOption('docid', $scriptProperties, $modx->resource->get('id'));
$sql = "SELECT * FROM {$modx->getTableName('msCategoryMember')} WHERE `product_id` = $docid";
$q = $modx->prepare($sql);
$q->execute();
$resources = $q->fetchAll(PDO::FETCH_ASSOC);
foreach ($resources as $resource){
$cat = $modx->getObject('modResource', $resource['category_id'])->toArray();
$out .= $modx->getChunk($tpl,$cat);
}
return $out;
Вызывайте на странице товара
[[getCategories?
&tpl=`cat_tpl`
]]
В чанках:
[[getCategories?
&tpl=`cat_tpl`
&docid=`[[+id]]`
]]
В чанке cat_tpl доступны все поля ресурса например:
<a href="[[+uri]]">[[+pagetitle]]</a>
а как в таком случае сделать две разных выборки по категориям из двух разных разделов (родителей)? при вызове сниппета getCatefories указать parents сработает?
Этот сниппет собирает все категории товара, которые у него отмечены на соответствующей вкладке.
Если нужно выводить их по родителям, то можете в нем собирать только ID-шники категорий:
И его вызов подставлять уже в pdoResources:
Если нужно выводить их по родителям, то можете в нем собирать только ID-шники категорий:
<?php
$modx->getService('miniShop2');
$docid = $modx->getOption('docid', $scriptProperties, $modx->resource->get('id'));
$sql = "SELECT * FROM {$modx->getTableName('msCategoryMember')} WHERE `product_id` = $docid";
$q = $modx->prepare($sql);
$q->execute();
$resources = $q->fetchAll(PDO::FETCH_ASSOC);
foreach ($resources as $resource){
$cats[] = $resource['id'];
}
$out = implode(',', $cats);
return $out;
И его вызов подставлять уже в pdoResources:
[[pdoResources?
&parents=`123` // нужный родитель
&resources=`[[getCategories:default=`9999999`]]`
&tpl=`cat_tpl`
.........
]]
Поправочка:
...
$cats[] = $resource['category_id']; // тут category_id, а не id
...
А как с помощью этого сниппета добавить еще разделитель, если товар находится в двух категориях? скрипт работает, но если несколько, лепит все в одну
Каждая категория — отдельный элемент и выводится чанком, указанным в &tpl.
Оформите его как угодно.
Оформите его как угодно.
Точнее во втором вариантом implode(', ', $cats) не хочет разделять лепит через проблем. а надо через запятую. Подскажите пожалуйста, где можно указать правильно сепаратор через ", ".
Такой вариант не работает (((
Категория: Решения SIEM Антивирусы
А должно быть вот так
Категория: Решения SIEM, Антивирусы
Такой вариант не работает (((
[[pdoResources? &parents=`10` &resources=`[[getCategories:default=`9999999`]]` &tpl=`cat_tpl` &tvFiltersAndDelimiter = `, `]]
Выводит вот так:Категория: Решения SIEM Антивирусы
А должно быть вот так
Категория: Решения SIEM, Антивирусы
Добавьте в вызов pdoResources параметр &outputSeparator=`, `
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.