Все для создания и продвижения сайтов

Верстка, программирование, SEO

Получение всех значений TV у ресурсов в MODX XPDO

Готовый скрипт на XPDO для MODX Revo, который получает все значения конкретного TV по его id у всех ресурсов.

На выходе мы получаем массив с результатами выборки.

<?php
$tv_id = 5; // id нужного ТВ
$res = array(); // Сюда записываются результаты

$q = $modx->newQuery('modTemplateVarResource', array('tmplvarid' => $tv_id));
$q->select('contentid,value');
if ($q->prepare() && $q->stmt->execute()) {
	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		$res[$row['contentid']] = $row['value'].'
'; } } print_r($res);

Если встречаются одинаковые значения TV, то они выводится. Чтобы исключить повторы, нужно использовать sql-метод «groupby». Стоит только добавить его к параметры выборки.

<?php
$tv_id = 5; // id нужного ТВ
$res = array(); // Сюда записываются результаты

$q = $modx->newQuery('modTemplateVarResource', array('tmplvarid' => $tv_id));
$q->select('contentid,value');
$q->groupby('value');
if ($q->prepare() && $q->stmt->execute()) {
	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		$res[$row['contentid']] = $row['value'].'
'; } } print_r($res);

Теперь повторы исключаться. Можно добавлять и другие критерии выборки.

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.