Теги для товаров по категориям

Добрый день!
Возникла необходимость в реализации тегов товара по категориям. Сами теги я вывел, но они выводятся все, т.е. облако тегов. А как их отфильтровать по категориям не пойму. Возможно кто-то уже делал, поделитесь пожалуйста решением. Есть категория, в ней товары. У этих товаров определенные теги. И так в каждой категории. Необходима фильтрация товаров по тегам в пределах этой категории. Надеюсь, понятно написал. Спасибо.

P.S. Вопрос в том, как вывести теги товаров из категории в которой находишься!
Алексей
13 ноября 2020, 13:31
modx.pro
2
889
0

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

Sergey (Sentinel)
14 ноября 2020, 12:05
0
А теги чем делали?
    Алексей
    14 ноября 2020, 12:13
    0
    Добрый день!
    Стандартные теги товара. Вывод, вот этим сниппетом:
    <?php
    $tpl = 'tpl.Tag'; //чанк одного тега
    $tags = array(); // массив тегов
    $params = array();// массив параметров
    $per = 100; // начальный  % шрифта
    $output=''; //вывод
    $c = $modx->newQuery('msProductOption');
    $c->where(array('key' => 'tags')); //берём значения тегов
    $c->sortby('value','ASC');
    $options = $modx->getCollection('msProductOption',$c);
    foreach($options as $option){
        $tags[] = $option->get('value');
    }
    $tags = array_count_values($tags); //подсчитываем сколько одинаковых
    
    //выводим в чанк
    foreach($tags as $tag => $count){
        $params['tag'] = $tag;
        $params['href'] = '?tag=' . $tag;
        $params['fontsize'] = $per*$count;
        $output .= $modx->getChunk($tpl,$params);    
    }
    
    return $output;
      Sergey (Sentinel)
      14 ноября 2020, 12:21
      0
      может в сторону этого глянуть, как вариант
      docs.modx.pro/komponentyi/minishop2/poleznyie-vyiborki/vyivod-kolichestva-tovarov-v-kategorii
      или тут
      bezumkin.ru/modx/minishop2/solutions/1160/
        Алексей
        14 ноября 2020, 12:26
        0
        Да я бы с удовольствием, только не разберусь :) Я уже это все просматривал. Теги вывел, товары по клику на тег вывел, а вот как сгруппировать теги по категории не знаю. mSearch2 покупать из-за этого, не вариант.
          Алексей
          14 ноября 2020, 12:29
          0
          Товары вывожу вот этим:
          <?php
          $tag = $_GET['tag'];
          
          $key = 'tags'; // имя опции товара
          $category = 0; // фильтрация по категории
          
          $q = $modx->newQuery('msProductOption');
          $q->innerJoin('msProduct', 'msProduct', 'msProduct.id=msProductOption.product_id');
          $q->where(array('msProductOption.key' => $key, 'msProductOption.value'=> $tag));
          $q->sortby('msProductOption.value','ASC');
          $q->select('DISTINCT(msProductOption.value), msProduct.id');
          $q->where(array('msProductOption.key' => $key));
          if (!empty($category)) {
              $ids = $modx->getChildIds($category);
              $ids[] = $category;
              $q->innerJoin('msCategory', 'msCategory', 'msCategory.id=msProduct.parent');
              $q->where(array('msCategory.id:IN' => $ids));
          }
          
          $result = array();
          if ($q->prepare() && $q->stmt->execute()) {
              while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
              	$res['id'][] = $row['id'];
          	}
          	$result = implode(",", array_unique($res['id'])) ;
          }
          
          $params = array(
              'element' => 'msProducts',
              'includeThumbs' => '740x',
              'parents' => 8,
              'limit' => 9,
              'tpl'=> 'msProduct',
              'ajaxMode' => 'default',
              'tplPageWrapper' => '@INLINE <ul class="pagination uk-pagination">{{+prev}}{{+pages}}{{+next}}</ul>',
              'tplPageActive' => '@INLINE <li class="uk-active"><span>{{+pageNo}}</span></li>',
              'resources' => $result
              );
          
          $output = $modx->runSnippet('pdoPage', $params);
          return $output;
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5