Доработака/изменение "Вывод всех категорий товара"

Готовый код выводит ВСЕ категории, подкатегории, подподкатегории и мультикатегории, в которых лежит товар.

Мне требуется другое:

У меня структура такая:
— Каталог (2)
—— Porsche (167)
——— Panamera (213)
———— Диски, колеса (345)
————— Диск R20 (1432)

На странице товара (Диск R20 (1432)) мне нужно вывести список категорий, в которых он лежит, таких как «Panamera (213)». Конкретно только этого уровня, не выше, не ниже. Категорий и мультикатегорий конечно.

Буду благодарен за ответ.
Принцип понимаю, но что именно нужно изменить в коде понятия не имею.
Серьёзный
17 октября 2013, 12:11
modx.pro
1 610
0

Комментарии: 9

Серьёзный
17 октября 2013, 16:12
0
З
    Серьёзный
    18 октября 2013, 11:53
    0
    Сам код сниппета, который предложил Василий вот:
    <?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);
      Серьёзный
      22 октября 2013, 17:54
      0
      Василий, неужели сложно обратить внимание на вопрос? Думаю, что это займёт минут времени. Спасибо!
        Ivan Shvindin
        22 октября 2013, 18:00
        0
        насколько я понял задачу, можно так
        [[pdoField?
        	&id=`[[*id]]`
        	&field=`pagetitle`
        	&top=`2`
        ]]
        взято буквально из примера к сниппету bezumkin.ru/modx/pdotools/snippets/1787/
          Серьёзный
          22 октября 2013, 18:07
          0
          Спасибо, Иван. Проблема в том, что 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» со ссылками с каждой…
          Серьёзный
          22 октября 2013, 20:48
          0
          Никто не поможет?
            Серьёзный
            25 октября 2013, 21:53
            0
            Я готов заплатить, помогите пожалуйста!
              Александр Москвин
              26 октября 2013, 01:23
              0
              Всё просто, тебе нужно вывести только товары.
              Используй &where — JSON массив с дополнительными условиями получения ресурса.
              А именно напиши так:
              &where=`{'template':15}` — указываешь вывод только определенных шаблонов, где 15 номер шаблона.
              Или берешь по папке
              &where=`{'isfolder':0}` — т.е вывод всех ресурсов, которые не папка.
              Александр Москвин
              26 октября 2013, 01:22
              0
              Посмотри основную таблицу и по изучай её
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                9