Доработака/изменение "Вывод всех категорий товара"
Готовый код выводит ВСЕ категории, подкатегории, подподкатегории и мультикатегории, в которых лежит товар.
Мне требуется другое:
У меня структура такая:
— Каталог (2)
—— Porsche (167)
——— Panamera (213)
———— Диски, колеса (345)
————— Диск R20 (1432)
На странице товара (Диск R20 (1432)) мне нужно вывести список категорий, в которых он лежит, таких как «Panamera (213)». Конкретно только этого уровня, не выше, не ниже. Категорий и мультикатегорий конечно.
Буду благодарен за ответ.
Принцип понимаю, но что именно нужно изменить в коде понятия не имею.
Мне требуется другое:
У меня структура такая:
— Каталог (2)
—— Porsche (167)
——— Panamera (213)
———— Диски, колеса (345)
————— Диск R20 (1432)
На странице товара (Диск R20 (1432)) мне нужно вывести список категорий, в которых он лежит, таких как «Panamera (213)». Конкретно только этого уровня, не выше, не ниже. Категорий и мультикатегорий конечно.
Буду благодарен за ответ.
Принцип понимаю, но что именно нужно изменить в коде понятия не имею.
Комментарии: 9
З
Сам код сниппета, который предложил Василий вот:
<?php
if (empty($rid)) {$rid = $modx->resource->id;}
if (empty($pid)) {$pid = $modx->resource->parent;}
if (empty($delimeter)) {$delimeter = ' , ';}
$scheme = $modx->getOption('link_tag_scheme', null, 'full', true);
$q = $modx->newQuery('msCategory');
$q->leftJoin('msCategoryMember', 'msCategoryMember', array(
'`msCategory`.`id` = `msCategoryMember`.`category_id`'
));
$q->sortby('pagetitle','ASC');
$q->groupby('id');
$q->select(array('id','pagetitle'));
$q->where('`msCategoryMember`.`product_id` = '.$rid.' OR `id` = '.$pid);
$result = array();
if ($q->prepare() && $q->stmt->execute()) {
while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
$url = $modx->makeUrl($row['id'], '', '', $scheme);
$result[] = '<a href="'.$url.'">'.$row['pagetitle'].'</a>';
}
}
return implode($delimeter, $result);
Василий, неужели сложно обратить внимание на вопрос? Думаю, что это займёт минут времени. Спасибо!
насколько я понял задачу, можно так
[[pdoField?
&id=`[[*id]]`
&field=`pagetitle`
&top=`2`
]]
взято буквально из примера к сниппету bezumkin.ru/modx/pdotools/snippets/1787/
Спасибо, Иван. Проблема в том, что pdoField выводит принадлежность только категории, в которой товар находится физически, но не выводит мультикатегории, которые назначены через minishop2.
Вот результат:
stars СЮДА ПОДСТАВИТЬ ДЕФИС parts.ru/catalog/mercedes/a-class-w176/kolesa-diski/diski-mercedes-r18-cla-class-a-class-b-class-s-5-dvojnymi-spitsami.html
В поле «Применяемость:» вывод через сниппет Василия, он выводит лишнее.
В поле «Применяемость с pdoField:» выводит только одну категорию «A-class W176»
А задача, чтобы выводились: «A-class W176, B-class W246, CLA-class C117» со ссылками с каждой…
Вот результат:
stars СЮДА ПОДСТАВИТЬ ДЕФИС parts.ru/catalog/mercedes/a-class-w176/kolesa-diski/diski-mercedes-r18-cla-class-a-class-b-class-s-5-dvojnymi-spitsami.html
В поле «Применяемость:» вывод через сниппет Василия, он выводит лишнее.
В поле «Применяемость с pdoField:» выводит только одну категорию «A-class W176»
А задача, чтобы выводились: «A-class W176, B-class W246, CLA-class C117» со ссылками с каждой…
Никто не поможет?
Я готов заплатить, помогите пожалуйста!
Всё просто, тебе нужно вывести только товары.
Используй &where — JSON массив с дополнительными условиями получения ресурса.
А именно напиши так:
&where=`{'template':15}` — указываешь вывод только определенных шаблонов, где 15 номер шаблона.
Или берешь по папке
&where=`{'isfolder':0}` — т.е вывод всех ресурсов, которые не папка.
Используй &where — JSON массив с дополнительными условиями получения ресурса.
А именно напиши так:
&where=`{'template':15}` — указываешь вывод только определенных шаблонов, где 15 номер шаблона.
Или берешь по папке
&where=`{'isfolder':0}` — т.е вывод всех ресурсов, которые не папка.
Посмотри основную таблицу и по изучай её
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.