TV в сниппете
Добрый день, есть сниппет для получения пейджтайтла, подскажите пожалуйста как в этот же цикл добавить еще одно tv поле?
$res = $modx->getCollection('modResource',array('parent:IN' => explode(',', $parents)));
$output = '';
foreach ($res as $v) {
$output.= '"'.$v->get('pagetitle').'",';
};
Комментарии: 7
$res = $modx->getCollection('modResource',array('parent:IN' => explode(',', $parents)));
$output = '';
foreach ($res as $v) {
$output.= '"'.$v->get('pagetitle').'",';
$output.= '"'.$v->getTVValue('my_tv').'",';
};
У Ильи есть хорошие статьи на эту тему. Рекомендую к прочтению.
Спасибо большое, пробовал так же, но только через get, поэтому не получалось.
ТВ — это отдельная таблица. Через get можно только поля одной таблицы доставать.
Интересно, когда в цикле идет запрос на получение TV, это же отдельный запрос (нагрузка лишняя)? Оптимально же сразу написать запрос с получением нужных TV, нет?
$q = $modx->newQuery('modResource');
$q->setClassAlias('t1');
$q->leftJoin('modTemplateVarResource', 't2', 't2.contentid = t1.id AND t2.tmplvarid = xx'); //xx-id TV
$q->select(array(
't1.*',
't2.value AS t2_value',
));
$q->where(array(
't1.parent:IN' => explode(',', $parents),
));
$items = $modx->getCollection('modResource',$q);
foreach ($items as $item) {
$output.= '"'.$item->get('pagetitle').'",';
$output.= '"'.$item->get('t2_value').'",';
};
Верно, но если человек не может подключить ТВ одной строчкой и не понимает основ, лучше наверно не запутывать его лишний раз. Думаю эта нагрузка будет для него не принципиальной.
Можно использовать getTVValue:
docs.modx.com/revolution/2.x/making-sites-with-modx/customizing-content/template-variables/accessing-template-variable-values-via-the-api
$page = $modx->getObject('modResource', 123);
return $page->getTVValue('bio');
Ну или подтягивать все через объекты xPDO или обрабатывать чистые запросы на PDO. Вариант выше проще, потому что работает одной строкой, вариант с PDO замудренней, если ни когда не пользовались PDO придется почитать не один мануал что бы понять.docs.modx.com/revolution/2.x/making-sites-with-modx/customizing-content/template-variables/accessing-template-variable-values-via-the-api
Спасибо большое
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.