Внимание, этот компонент требует версию PHP 5.5 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Вывод списка определенных ресурсов в TV-поле MODX Revolution
Иногда при создании каталога на MODX требуется сделать возможность выводить один и тот же ресурс в разных категориях. Сделать это совсем не сложно, т.к. мы знаем, что MODX это очень гибкая система. Расскажу как это сделать на MODX Revolution, но в Evo этот принцип тоже применим.
Создаём дополнительное поле (TV).
Тип ввода: Флажки(checkbox) или Список (множественный выбор)
В поле «Возможные значения» вводим такой код:
Тут мы используем сниппет getResources чтобы получить список названий и ID категорий. В данном случае ID каталога (документа, в который вложены категории) — 10, уровень вложености — 3.
Присваиваем это дополнительное поле шаблону ресурса.
Теперь для ресурса мы можем выбрать дополнительные категории.
MODX. Как реализовать текстовые блоки на TV и MIGX. Сравнение.
Осталось вывести ресурсы из этих категорий. Для этого нам понадобится всё тот же getResources (+ getPage) и дополнительный небольшой сниппет.
Я назвал этот сниппет getIDLikeByTV. Вот его код:
/*[ [getIDLikeByTV?tmplvarid=`6`
if(!isset($like)) $like = »;
$ids_arr = array();
$query = $modx->newQuery(‘modTemplateVarResource’);
$query->select($modx->getSelectColumns(‘modTemplateVarResource’,’modTemplateVarResource’,»,array(‘id’,’contentid’
)));
$query->where(array(
‘tmplvarid’ => intval($tmplvarid),
‘value:LIKE’ => ‘%’.$like.’%’
));
$query->sortby(‘contentid’,’ASC’);
$results = $modx->getCollection(‘modTemplateVarResource’,$query);
if($results) <
foreach ($results as $result) <
array_push($ids_arr,$result->get(‘contentid’));
>
>
return implode(‘,’,$ids_arr);
Сниппет ищет подстроку (параметр tmplvarid). Теперь выводим ресурсы:
Но потом как всегда проходит время и появилось более изящное решение, которое без сниппетов, но к сожалению нигде ранее не описано (как получить данные ресурса по галочке в админке).
Источник: about-cms.com
Что такое переменные шаблона
В программировании переменная — это ячейка, в которой хранится значение или ссылка на значение. Переменные позволяют разработчикам манипулировать данными и выполнять над ними вычисления. В MODX переменные используются для передачи данных между различными частями шаблона. Например, переменная может хранить название продукта или цену услуги.
Использование переменных в шаблонах MODX
Переменные в MODX определяются с помощью тега [[*variable]]. Этот тег сообщает системе заменить тег значением переменной. Например, если вы хотите отобразить название продукта на веб-странице, вы можете использовать следующий код:
MODX tv (дополнительные поля / переменные)
[[*product_name]]
В этом примере «product_name» — это имя переменной. MODX заменит тег значением переменной «product_name».
Установка значений переменных
Переменные в MODX могут быть установлены несколькими способами. Один из способов — установить значение переменной в самом коде шаблона. Например, вы могли бы установить значение переменной «product_name» следующим образом:
[[!SetVar? value=`My Product`]]
Этот код использует фрагмент SetVar, чтобы установить значение переменной «product_name» равным «My product». Параметр «value» задает значение переменной.
Другой способ установки переменных
В MODX переменную можно передать в качестве параметров. Например, у вас есть шаблон, который отображает информацию о конкретном продукте. Вы могли бы передать идентификатор продукта в качестве параметра, а затем использовать его для извлечения информации о продукте из базы данных.
[[!MySnippet? product_id» передается со значением «123». Затем фрагмент может использовать это значение для извлечения информации о продукте из базы данных.
Работа с несколькими переменными
В шаблонах MODX вы можете работать с несколькими переменными одновременно. Например, у вас может быть шаблон, который отображает список товаров и их цены. Вы могли бы использовать цикл для перебора каждого продукта и отображения его названия и цены.
-
[[!pdoResources? tpl=`product_item` ]]
В этом примере фрагмент pdoResources извлекает список продуктов из базы данных. Параметр «https://codelab.pro/raboty-s-peremennymi-shablona-tv-v-modx/» target=»_blank»]codelab.pro[/mask_link]