Сниппет для получения id родителей

Здравствуйте,
В php и MODX api не силен, а возникла необходимость в своем сниппете для вывода id родителе по нескольким условиям.
Ситуация следующая
Меню состоит из двух уровней
-1. Основной родитель (категория деталей)
--1.2. Родитель (тип деталей). В тип деталей вложены сами товары, у них свой шаблон

У товаров есть тв поле применяемости, в ней указаны модели авто. (имеет множественный выбор с разделителем ||)
Меню выводится на странице модели авто.
В меню список деталей строиться из того какие товары есть для этого авто, т.е. если для какой то модели авто нет товаров в каком то конкретном типе деталей, то и этот тип не выводится в меню.

Вот мне как раз нужно получить id этих типов деталей, чтобы вставить во входные параметры getProducts.

Если я все правильно понял то сниппет получает на вход id основного родителя, перебирает товары внутри него, где у товаров в тв полей есть совпадение по заголовку текущей страницы и возвращает id родителей этих товаров (id типов деталей)

Добавлено: 05.05.17

В общем имею след код

<?php
$pagetitle = 'F10/F11 2009>'; //значение ТВшки, которое ищем
$TV_ID=6;//id твшки, которую провереяем на соответствие $pagetitle

   $q = $modx->newQuery('modResource');
   $q->innerJoin('modTemplateVarResource', 'tv', array('modResource.id = tv.contentid', 'tv.tmplvarid = ' . $TV_ID));
   $q->select(array('modResource.parent'));
   $q->where(array(
       'tv.value'=> $pagetitle
           ));
   
   if ($q->prepare() && $q->stmt->execute()){
       $results = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
                $ids_array=array();
           foreach($results as $result){
                   $ids_array[]=$result['parent']; 
                   
               }
   }
  //print_r ($ids_array); //для консоли
  return implode(',',$ids_array);
но так как $TV_ID=6 имеет множественное значение, в выборку попадают только товары у которого этот ТВ имеет одно значение (если там указано несколько значений, то игнорируется)

Вопрос в следующем, как сделать чтобы и с множественным значением попадали документы
tsergey
30 марта 2017, 12:11
modx.pro
1
2 340
0

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

Евгений
30 марта 2017, 21:05
+2
Не стал вникать в суть вопроса, много написано))) pdoField не подходит?
    tsergey
    30 марта 2017, 22:52
    0
    Думаю скорости мне это не прибавит. а необходима именно скорость работы.
    Потому что товаров уже больше 12 тыс. И грубо говоря идет перебор всех товаров, с проверкой по ТВ, потом получение их родителя, и список родителей подставляется в getProduct.
    Нужно именно получение списка этих родителей товара, и если делать сниппет только для этого, он справится быстрее чем любой многофункциональный компонент мне кажется
    Дмитрий Ломакин
    31 марта 2017, 01:15
    0
    «больше 12 тыс» и «У товаров есть тв поле применяемости, в ней указаны модели авто. (имеет множественный выбор с разделителем ||)»
    — не совместимые вещи. если делать так, то будут тормоза дикие.

    Делайте отдельную таблицу
    id_товара
    id_авто

      Николай Каленников
      31 марта 2017, 03:17
      0
      Здесь pdoField самое оно, нужно только с настройками поработать. Могу помочь, пишите в ВК, контакты в моем профиле.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        4