Сниппет для получения id родителей
Здравствуйте,
В php и MODX api не силен, а возникла необходимость в своем сниппете для вывода id родителе по нескольким условиям.
Ситуация следующая
Меню состоит из двух уровней
-1. Основной родитель (категория деталей)
--1.2. Родитель (тип деталей). В тип деталей вложены сами товары, у них свой шаблон
У товаров есть тв поле применяемости, в ней указаны модели авто. (имеет множественный выбор с разделителем ||)
Меню выводится на странице модели авто.
В меню список деталей строиться из того какие товары есть для этого авто, т.е. если для какой то модели авто нет товаров в каком то конкретном типе деталей, то и этот тип не выводится в меню.
Вот мне как раз нужно получить id этих типов деталей, чтобы вставить во входные параметры getProducts.
Если я все правильно понял то сниппет получает на вход id основного родителя, перебирает товары внутри него, где у товаров в тв полей есть совпадение по заголовку текущей страницы и возвращает id родителей этих товаров (id типов деталей)
Добавлено: 05.05.17
В общем имею след код
Вопрос в следующем, как сделать чтобы и с множественным значением попадали документы
В 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 имеет множественное значение, в выборку попадают только товары у которого этот ТВ имеет одно значение (если там указано несколько значений, то игнорируется)Вопрос в следующем, как сделать чтобы и с множественным значением попадали документы
Комментарии: 4
Не стал вникать в суть вопроса, много написано))) pdoField не подходит?
Думаю скорости мне это не прибавит. а необходима именно скорость работы.
Потому что товаров уже больше 12 тыс. И грубо говоря идет перебор всех товаров, с проверкой по ТВ, потом получение их родителя, и список родителей подставляется в getProduct.
Нужно именно получение списка этих родителей товара, и если делать сниппет только для этого, он справится быстрее чем любой многофункциональный компонент мне кажется
Потому что товаров уже больше 12 тыс. И грубо говоря идет перебор всех товаров, с проверкой по ТВ, потом получение их родителя, и список родителей подставляется в getProduct.
Нужно именно получение списка этих родителей товара, и если делать сниппет только для этого, он справится быстрее чем любой многофункциональный компонент мне кажется
«больше 12 тыс» и «У товаров есть тв поле применяемости, в ней указаны модели авто. (имеет множественный выбор с разделителем ||)»
— не совместимые вещи. если делать так, то будут тормоза дикие.
Делайте отдельную таблицу
id_товара
id_авто
— не совместимые вещи. если делать так, то будут тормоза дикие.
Делайте отдельную таблицу
id_товара
id_авто
Здесь pdoField самое оно, нужно только с настройками поработать. Могу помочь, пишите в ВК, контакты в моем профиле.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.