pdoResources и фильтр TV
Привет сообщество!
Есть раздел портфолио (parent id = 11) с работами, есть страницы услуг (parent id = 10).
На странице услуги необходимо вывести вывести работу, которая относится к этой услуге, я сделал так:
1) TV «show_in_service» (список, одиночный выбор), разделитель "," + «возможные значения»
2) Сниппет «select_portfolio_service» который тянет список услуг с id = 10
3) в работе портфолио выбираю необходимую услугу в этом TV и вывожу на странице самой услуги:
С одиночным выбором всё работает отлично, но работы портфолио могут относиться к нескольким услугам, если сменить TV на множественный выбор, а в работе указать несколько услуг, то в массиве я уже получаю вместо [tv.show_in_service] => 17 — [tv.show_in_service] => 17||16||15 и соответственно выборка pdoResources не работает :(
Как правильно вывести каждую работу, которая относится к этой услуге?
Есть раздел портфолио (parent id = 11) с работами, есть страницы услуг (parent id = 10).
На странице услуги необходимо вывести вывести работу, которая относится к этой услуге, я сделал так:
1) TV «show_in_service» (список, одиночный выбор), разделитель "," + «возможные значения»
@EVAL return $modx->runSnippet('select_portfolio_service');
2) Сниппет «select_portfolio_service» который тянет список услуг с id = 10
<?php
$output = '';
$q = $modx->newQuery('modResource');
$q->where(array(
"parent" => "10"
));
$q->sortby('pagetitle','ASC');
$q->select(array(
"modResource.id",
"modResource.pagetitle",
));
$s = $q->prepare();
$s->execute();
while($row = $s->fetch(PDO::FETCH_ASSOC)){
$data[] = "{$row['pagetitle']}=={$row['id']}";
}
$output = implode("||", $data);
return $output;
3) в работе портфолио выбираю необходимую услугу в этом TV и вывожу на странице самой услуги:
{$_modx->runSnippet('!pdoResources', [
'tpl' => ''
'parents' => 11,
'includeTVs' => 'show_in_service'
'tvFilters' => 'show_in_service===' ~ $_modx->resource.id
])}
С одиночным выбором всё работает отлично, но работы портфолио могут относиться к нескольким услугам, если сменить TV на множественный выбор, а в работе указать несколько услуг, то в массиве я уже получаю вместо [tv.show_in_service] => 17 — [tv.show_in_service] => 17||16||15 и соответственно выборка pdoResources не работает :(
Как правильно вывести каждую работу, которая относится к этой услуге?
Комментарии: 1
Такой вариант работает:
1) в возможных значениях TV:
2) На странице услуги:
Но может быть есть более изящное решение? :)
Посоветуйте как правильно поступить )
1) в возможных значениях TV:
@EVAL return $modx->runSnippet('pdoResources',array(
'parents'=>'10',
'sortby'=>'{"menuindex":"ASC"}',
'tpl'=>'@INLINE [[+pagetitle]]==#[[+id]]#',
'outputSeparator'=>'||'
));
2) На странице услуги:
{$_modx->runSnippet('!pdoResources', [
'tpl' => ''
'parents' => 11,
'tvFilters' => 'show_in_service==%#' ~ $_modx->resource.id ~ '#%'
])}
Но может быть есть более изящное решение? :)
Посоветуйте как правильно поступить )
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.