Как добавить id ресурсов в выборку pdoResources
Как мне добавить в получившуюся выборку еще несколько ресурсов с заранее известными Id?
[[!pdoResources? &resources=`1,2,3` &tpl=`0` &parents=`10` &returnIds=`1`]]
так выводит только 1,2,3 — а нужно включая 1,2,3.
Уже отчаялся в этом вопросе, неужели никак?!
[[!pdoResources? &resources=`1,2,3` &tpl=`0` &parents=`10` &returnIds=`1`]]
так выводит только 1,2,3 — а нужно включая 1,2,3.
Уже отчаялся в этом вопросе, неужели никак?!
Комментарии: 18
Вам надо вытащить ресурсы парента с id=10 + ресурсы с id 1,2,3? Я правильно понял?
Да, правильно! На данный момент вижу способ запускать pdoResources два раза, что не есть хорошо, как я понимаю(
можно сделать два парента: парент 10 и парент Y ресурсов с айди 1,2,3. и в параметре &resources исключить из выборки все остальный ресурсы парента Y, кроме ресурсов 1,2,3 соответственно. К примеру:
[[!pdoResources?
&parents=`10, Y`
&resources=`-4,-5,-6`
&tpl=`0`
&returnIds=`1`]]
В том то и беда, что у ресурсов с id 1,2,3,n — паренты разные все( и по мимо этих ресурсов у их родителей есть еще ресурсы…
Объясню для чего мне это вообще нужно. Есть каталог товаров, есть ресурсы с дополнительными категориями,
у ресурсов TV с данными о доп категориях (22||25||29). Написал сниппет, который находит ID всех ресурсов у которых доп категории совпадают с текущей, сниппет возвращает мне id этих ресурсов(1,2,3).
Конечно может есть возможность с помощью where обойтись и без доп. сниппета, но я чет сомневаюсь.
Код сниппета:
Объясню для чего мне это вообще нужно. Есть каталог товаров, есть ресурсы с дополнительными категориями,
у ресурсов TV с данными о доп категориях (22||25||29). Написал сниппет, который находит ID всех ресурсов у которых доп категории совпадают с текущей, сниппет возвращает мне id этих ресурсов(1,2,3).
Конечно может есть возможность с помощью where обойтись и без доп. сниппета, но я чет сомневаюсь.
Код сниппета:
if(empty($category_id) or !is_numeric($category_id)) return '';
/*prod_subcategory*/
$tvId=88;
$tvArr = $modx->getCollection('modTemplateVarResource', array('tmplvarid'=>$tvId));
$resArr = array();
foreach ($tvArr as $tv) {
if(!empty($tv->value)){
$valueArr = explode('||',$tv->value);
foreach($valueArr as $value){
if($value == $category_id){
$resArr[] = $tv->contentid;
}
}
}
}
return implode(',',$resArr);
Разве так нельзя?
[[!pdoResources? &parents=`0` &resources=`[[!сниппетваш]]` ]]
Так он выводит только ресурсы полученные из сниппета(
[[pdoResources? &parents=`10` &returnIds=`1` &toPlaceholder=`prodIds`]]
[[pdoResources? &resources=`[[+prodIds]],1,2,3` ]]
//или со сниппетом
[[pdoResources? &resources=`[[+prodIds]],[[getProductSubCategory? &catalog_id=`[[*id]]`]]` ]]
Если будет одна запятая в &resources=`,` — сниппету пофиг, он ее игнорит.По другому ничего не придумал, сломал весь мозг(
Добавляйте в сниппет параметр с данными [[+prodIds]], и там их дополняйте своими id… после возвращайте сниппетом весь список id (своих и из параметра [[+prodIds]])…
Типо того:
[[pdoResources? &resources=`[[getProductSubCategory? &catalog_id=`[[*id]]` &prodIds=`[[+prodIds]]`]]` ]]
Ну это только от запятой лишней избавит, а она в принципе и так игнорируется. Но для эстетики пригодиться, спасибо!
По идее это должно решить вашу задачу…
Павел, задача решена в начале этой ветки, ваше решение лишь добавляет эстетики, проблему оно не решает.
Проблема заключается в том, что при таком решении необходимо вызывать pdoResources два раза на странице.
Проблема заключается в том, что при таком решении необходимо вызывать pdoResources два раза на странице.
Не совет, но: а два вызова pdoResources разных не вариант использовать? Два вместе. )))
Один для 1,2,3 другой для остальных.
Один для 1,2,3 другой для остальных.
С двумя вызовами и сделал, но хотелось бы с одним.
Просто мне казалось, что pdoResources должен уметь справляться с такими вещами элементарно, ну например в &resources=`+1,+2,+3`.
Два вызова pdoResources, не оптимально я считаю(
Просто мне казалось, что pdoResources должен уметь справляться с такими вещами элементарно, ну например в &resources=`+1,+2,+3`.
Два вызова pdoResources, не оптимально я считаю(
Да, было бы неплохо иметь что-то такое. :)
Однако что-то подсказывает, что это решить можно без нововведений в pdoResources…
Однако что-то подсказывает, что это решить можно без нововведений в pdoResources…
[[!pdoResources?
&parents=`0`
&where=`{"parent":10,"OR:id:IN":[1,2,3]}`
&returnIds=`1`
]]
А так выберутся только прямые потомки ресурса с id = 10 или с id 1,2,3.
Без дополнительного сниппета здесь никак не обойтись.
Без дополнительного сниппета здесь никак не обойтись.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.