как вывести список категорий в которые включен товар в minishop2 в виде ссылок

как вывести список категорий в которые включен товар в minishop2 в виде ссылок на странице самого товара?
Евгений
17 августа 2020, 12:22
modx.pro
2
189
0

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

Павел Романов
17 августа 2020, 14:33
+1
Сделайте сниппет getCategories:
<?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>
    Евгений
    17 августа 2020, 19:45
    0
    а как в таком случае сделать две разных выборки по категориям из двух разных разделов (родителей)? при вызове сниппета getCatefories указать parents сработает?
      Павел Романов
      17 августа 2020, 19:57
      +1
      Этот сниппет собирает все категории товара, которые у него отмечены на соответствующей вкладке.
      Если нужно выводить их по родителям, то можете в нем собирать только 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`
      .........
      ]]
        Павел Романов
        17 августа 2020, 20:17
        +1
        Поправочка:
        ...
            $cats[] = $resource['category_id']; // тут category_id, а не id
        ...
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4