MODX. Связанные элементы, несколько способов

Для организации элементарной привязки элементов друг к другу, понадобиться создать дополнительное поле, назовем его «Связи».

Способ № 1, простейший:

устанавливаем полю тип «Список ресурсов»

Недостатки: нельзя заполнять поле вводом названия, обязательно придется выбирать ресурс из списка мышкой.

Способ № 2:

устанавливаем полю тип «Список (множественный выбор)», в поле «Возможные значения» пишем

@SELECT pagetitle,id FROM _site_content WHERE (нужное условие)

Недостатки: нельзя создать сложные условия выборки.

Способ № 3, используем сниппет:

устанавливаем полю тип «Список (множественный выбор)», в поле «Возможные значения» пишем

@EVAL return $modx->runSnippet(’listBoundResources’,array(’parent’ => 5));

Создаем сниппет listBoundResources, в котором пишем условия, например:

<?php
$id = $modx->getOption('parent',$scriptProperties);
$were = array(
    'published' => 1,
    'isfolder' => 0,
);

$output[]= '-==-';

$ids = $modx->getChildIds($id, 5, $were);
$docs = $modx->getCollection('modResource', $ids);
$output = '';
foreach ($docs as $res) {
    $output[]= $res->get('pagetitle').'=='.$res->get('id');
}

$out = implode("||",$output);
return $out;
Была ли статья полезной?