Наверх

TV для выбора ресурса с нужным родителем и поиском в MODX Revolution

В разделе «Репосты» расположены чужие статьи, которые мне понравились или показались полезными.

Иногда возникает необходимость создать дополнительное TV-поле, которое позволит выбрать конкретный ресурс. При этом чтобы валились не все ресурсы сайта, а ресурсы из конкретного родителя. Но даже при этом ресурсов бывает много, требуется поиск по заголовку. Вводим несколько букв и нам подсвечиваются результаты.

Приступим к созданию такой TV.

Создадим сниппет «listMyResources».

В нём наша логика выбора ресурсов, беруться только опубликованные ресурсы и с родителем, которого мы укажем в ТВ, это позже.
<?php
$output[]= '-==-';
$parents = $modx->getCollection('modResource',array(
    'parent' => $modx->getOption('parent',$scriptProperties),
    'published' => 1,
));

foreach ($parents as $res) {
    $output[]= $res->get('pagetitle').'=='.$res->get('id');
}

$out = implode("||",$output);
return $out;

Создаём дополнительное поле.

Тип ввода: Список (одиночный выбор).

В «Возможные значения» пишем следующее:
@EVAL return $modx->runSnippet('listMyResources',array('parent' => 2));

Вместо «2» указываем нужного родителя из которого мы хотим брать ресурсы.

Использование поля.

После этого присвойте ТВ конкретному шаблону и работайти с ним.

На сайт же выводится не заголовок, а id ресурса. Единственная особенность при выводе это то, что если ресурс не выбран, вместо пустоты выводися «-».

Поэтому проверку на пустоту делать требуется так:

Через плейсхолдеры:
[[*mytv:is=`-`:then=`Поле не заполнено`:else=`ID ресурса: [[*mytv]]`]]

Через Fenom
{if $_modx->resource.mytv != '-'}
    ID ресурса: {$_modx->resource.mytv}
{else}
    Поле не заполнено
{/if}

Собственно и всё, думаю, как выводить информацию о ресурсе через его ID вы знаете как, если нет, пишите в комментариях.

Источник: daruse.ru/tv-dlya-vyibora-resursa-s-nuzhnyim-roditelem-i-poiskom-v-modx-revolution


2 комментария

  1. Андрей 10 сентября 2018, 09:31 # 0
    Данный код выдает только первый уровень от родителя.
    А как вывести до 5-го уровня? и что бы отображалось какой куда вложен?
    или например выбрал родителя, дальше выбрал дочку, дальше еще дочку — если есть.

    сори за сумбур.
    1. Илья Уткин 10 сентября 2018, 09:42 # 0
      Готового решения вашей задачи у меня нет.

    Авторизация

    через сервис Loginza:


    Шаблоны MODX

    1 2 Дальше »

    Объектная
    модель
    MODX