TV множественный список modx

Привет, друзья! Я всегда уделяю мелочам особое внимание, поскольку считаю, что если вы делаете сайт, то должны отточить все его моменты.

Например, в MODX Revolution существуют так называемые TV-поля, поэтому на примере простого поля «цены» давайте рассмотрим способы его вывода.

Начинающий пользователь (а может, и не только начинающий) сделает вывод поля таким образом:

Цена: [[*price]]

Где «price» – соответственно идентификатор (имя) поля.

На что здесь стоит обратить внимание? На то, что если поле не обязательное и не заполнено, то вы получите нечто следующее:

Цена:

Что, по идее, является некой ошибкой. Покажу, как это можно исправить.

Если вы хотите выводить поле только в том случае, когда оно заполнено – первый вариант кода вы заменяете на:

[[*price:!empty=`Цена: [[*price]]`]]

Все названия вы заменяете на свои соответственно.

Если вы хотите вывести сообщение о том, что цена (или другая информация о ресурсе отсутствует), то добавьте следующий код в шаблон вашего сайта:

Организация структуры MODx Revo, работа с чанками и TV полями


[[*price:empty=`Цена не указана!`]]

Где «price» – соответственно имя поля.

При использовании двух последних конструкций вместе, то есть:

[[*price:!empty=`Цена: [[*price]]`]] [[*price:empty=`Цена не указана!`]]

информация из поля будет выводиться вместе с сопутствующим текстом или же просто будет выводиться сообщение об отсутствии должной информации.

Помимо этого, есть еще два варианта совмещенного вывода необходимой информации.

Первый — это:

[[*price:is=«:then=`Цена не указана!`:else=`Цена: [[*price]]`]]
[[If? operator=`notempty` else=`Цена не указана!`]]

Какой из перечисленных способов использовать — решать вам.

Источник: www.pandoge.com

Tv множественный список modx

Ресурс в modx это объект, содержащий стандартный набор полей, который может быть расширен за счёт TV-параметров. Отличительной особенностью ресурса является наличие уникального URL адреса по которому к нему можно обратиться.

Так как modx является фреймворком в оболочке движка, с ресурсами можно работать как через панель администрирования, так и посредством API (xPDO). API код в modx может выполняться в сниппетах, плагинах и даже PHP файлах, если предварительно в них подключить modx класс. Я же рекомендую начать изучение с выполнения команд через «Console». Этот компонент позволяет выполнять код не создавая сниппетов и плагинов. После его установки во вкладке «Приложения» появляется ссылка на редактор кода.

Работа с ресурсами в MODx revolution

Получение значения полей конкретного ресурса

Для того чтобы получить доступ к полям ресурса необходимо его выбрать из всего множества. Лучше осуществлять отбор по идентификатору, так как он уникален.

Еще по теме:  Телевизор LG uhd TV al thinq 55 характеристики

modx tv


$res = $modx->getObject(‘modResource’,1); echo $res->get(‘pagetitle’); return;

Если код запускается не из консоли, а непосредственно при доступе к ресурсу, то можно узнать значения его полей не указывая идентификатор.

$modx->resource->get(‘pagetitle’); $modx->resource->get(‘content’); //или $modx->resource->getContent();

Пример получения TV-переменных.

//текущего ресурса по id $modx->resource->getTVValue(3); //по названию TV-параметра $modx->resource->getTVValue(‘img-news’); //получение значения конкретного ресурса $res = $modx->getObject(‘modResource’,1); echo $res->getTVValue(‘img-news’); return;

Изменение значения полей в modx

С получением значений полей разобрались, теперь давайте разберемся как их изменить.

$res = $modx->getObject(‘modResource’,5); $res->set(‘content’, ‘Изменили содрежимое’); $res->setTVValue(‘img-news’,’test.png’); $res->save();

Особенностью является то, что сначала мы производим действия над полями и только затем сохраняем изменения.

Выборка и обработка множества ресурсов

Modx revolution настолько гибок, что позволяет обрабатывать целые коллекции ресурсов, выбранных по определенным критериям.

Для примера давайте выберем все ресурсы родителя с идентификатором 26, опубликованные, не удалённые и доступные для поиска. Заменим у них в тексте все одинарные кавычки на двойные.

if(!$docs = $modx->getCollection(‘modResource’, array( ‘parent’ => 26, ‘published’ => 1, ‘deleted’ => 0, ‘searchable’ => 1 ))) foreach($docs as $doc)< $content = $doc->get(‘content’); $content = str_replace(»’,'»‘,$content); $doc->set(‘content’,$content); $doc->save(); >

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

$res = $modx->getObject(‘modResource’,1); print(»); print_r($res->toArray()); print(»); return;

Нахождение связанных объектов

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

Получая в качестве объекта ресурс, мы можем найти связанный с ним чанк или родителя и работать уже с ним опять как с объектом. Есть два способа получения связанных объектов:

  • getOne() — получение единичного связанного объекта;
  • getMany() — получение массива связанных объектов одного типа;

Разница в том, что у объекта могут быть связи с другими объектами множественные и одинарные. Например, у ресурса может быть несколько TV-параметров, чтобы получить их все (в массив) необходимо использовать метод getMany(), а вот родитель может быть только один, поэтому для его получения используется getOne().

//получение родителя как объекта $parent = $resource->getOne(‘parent’); //если нужен только id $id = $resource->get(‘parent’);

Создание ресурса из сниппета

API modx позволяет программно создавать новые ресурсы. Для этого достаточно запустить стандартный процессор (функцию). В качестве параметров передаём любые значения полей создаваемого ресурса.

$response = $modx->runProcessor(‘resource/create’, array( ‘pagetitle’ => ‘Тестовая страница’, ‘longtitle’ => », ‘description’ => », ‘introtext’ => », ‘content’ => ‘Содержимое тестовой страницы’, ‘alias’ => ‘new-page’, ‘template’ => 1, ‘published’ => 1, ‘parent’ => 0 )); if ($response->isError()) < return $modx->error->failure($response->getMessage()); > //получаем в качестве объекта вновь созданную страницу $newResource = $response->response[‘object’];

Еще по теме:  Канал обзор игр на ТВ

Если требуется заполнить TV-поля, то процессору дополнительно передаются параметры вида tv1 = ‘значение’, где 1 — это идентификатор TV-поля.

Источник: proweb63.ru

Модификаторы modx

Модификаторы modx — или как выводить то что нам нужно.

28325 20 August 2016 1 modx revo, документация

Модификаторы modx

Небольшая табличка с модификаторами

Модификаторы условия

Модификатор Описание Пример
if,input if — задает дополнительное условие
input — добавляет в тег обратываемые данные
[[*id:input=`текст`]] — вместо id выведет «текст» .
[[*id:is=`1`:and:if=`[[*id]]`:ne=`2`:then=`ок`:else=`не ок`]] — если id-ресурса = 1 и не равно 2, выводим «ок», или же «не ок»
or,and or — условие «ИЛИ»
and — условие «И»
[[*id:is=`1`:or:if=`[[*id]]`:is=`2`:then=`ок`:else=`не ок`]] — если id-ресурса = 1 или = 2, выводим «ок», или же «не ок»
isequalto, isequal, equalto, equals, is, eq Если тег равен модификатору, используется с «then» и «else.» [[*id:is=`1`:then=`ок`:else=`не ок`]] — если id-ресурса = 1, выводим «ок», или же «не ок»
notequalto, notequals, isnt, isnot, neq, ne Если тег не равен модификатору, используется с «then» и «else». [[*id:ne=`1`:then=`ок`:else=`не ок`]] — если id-ресурса не равно 1, выводим «ок», или же «не ок»
greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte Если тег больше или равен модификатору, используется с «then» и «else». [[*id:ge=`1`:then=`ок`:else=`не ок`]] — если id-ресурса больше или равен 1, выводим «ок», или же «не ок»
isgreaterthan, greaterthan, isgt, gt Если тег больше модификатора, используется с «then» и «else». [[*id:gt=`1`:then=`ок`:else=`не ок`]] — если id-ресурса больше 1, выводим «ок», или же «не ок»
equaltoorlessthan, lessthanorequalto, el, le, islte, lte Если тег меньше или равен модификатору, используется с «then» и «else». [[*id:el=`10`:then=`ок`:else=`не ок`]] — если id-ресурса меньше или равно 10, выводим «ок», или же «не ок»
islowerthan, islessthan, lowerthan, lessthan, islt, lt Если тег меньше модификатора, используется с «then» и «else». [[*id:lt=`10`:then=`ок`:else=`не ок`]] — если id-ресурса меньше 10, выводим «ок», или же «не ок»
hide Если предыдущий модификатор возвращает положительное значение («then»), то не выводим обработанный тег. [[*id:is=`10`:hide]] — если id-ресурса = 10, ничего не выводим
show Если предыдущий модификатор возвращает положительное значение («then»), то выводим обработанный тег. [[*id:is=`10`:show]] — если id-ресурса = 10, выводим.
then Условие, если тег соответствует модификатору, выводим сообщение, иначе ничего не выводим [[*id:is=`10`:then=`Джузеппе`]] — если id-ресурса = 10, выводим «Джузеппе».
else Условие, если тег не соответствует модификатору, выводим сообщение. Используется только в связке с «then» [[*id:is=`10`:then=`ок`:else=`не ок`]] — если id-ресурса = 10, выводим «ок» иначе «не ок».

Модификаторы строк

Модификатор Описание Пример
cat Добавляет к тегу строку. [[+num:cat=` Джузепп`]], выведет к примеру «10 Джузепп».
lcase, lowercase, strtolower Переведет значение тега в нижний регистр, аналогично функции php strtolower. [[*pagetitle:lcase]]
ucase, uppercase, strtoupper Переведет текст в верхний регистр, аналогично функции php strtoupper. [[*pagetitle:ucase]]
ucwords Переведет каждую первую букву, каждого слова в верхний регистр, аналогично функции php ucwords. [[*pagetitle:ucwords]]
ucfirst Переведет только первую букву строки в верхний регистр, аналогично функции php ucfirst. [[*pagetitle:ucfirst]]
htmlent, htmlentities Преобразует все символы в соответствющие HTML сущности (для тех символов, для которых HTML сущности существуют), аналогично функции php htmlentities. Использует текущие настройки системы «modx_charset» с флагом «ENT_QUOTES». [[*pagetitle:htmlentities]]
esc,escape Экранирует разные «плохие символы», так же экранирует [, ] и `. [[*content:esc]]
strip Заменяет все переносы строк, табуляции и множественные пробелы с на один пробел. [[*content:strip]]
stripString Вырезает из строки заданную строку. [[*pagetitle:stripString=`Джузеппе`]]
replace Обычная замена. [[*pagetitle:replace=`имя==Джузеппе`]]
striptags, stripTags,notags,strip_tags Вырезает все теги, кроме разрешенных, аналогично функции php strip_tags [[*longtitle:strip_tags=«]]
len,length, strlen Возвращает длину строки, аналогично функции php strlen [[*longtitle:strlen]]
reverse, strrev Переворачивает строку, аналогично функции php strrev [[*longtitle:reverse]]
wordwrap Устанавливает переносы в зависимости от кол-ва символов слова, аналогично функции php wordwrap [[*pagetitle:wordwrap=`5`]]
limit Устанавливает лимит на длинну строки и обрезает ее. [[*pagetitle:limit=`30`]]
ellipsis Устанавливает лимит на длинну строки и обрезает ее, добавляя три точки в конце [[*pagetitle:ellipsis=`30`]]
tag Вернет, запись тега. [[*pagetitle:limit=`10`:tag]]вернет: [[*pagetitle:limit=`10`:tag]]
add, increment, incr Вернет, значение + модификатор ( по умолчанию +1 ). [[+num:incr]] или [[+num:add=`5`]]
subtract, decrement, decr Вернет, значение — модификатор ( по умолчанию -1 ). [[+num:decr]] или [[+num:decr=`5`]]
multiply, mpy Вернет, значение * модификатор ( по умолчанию *2 ). [[+num:mpy]] или [[+num:mpy=`5`]]
divide, div Вернет, значение / модификатор ( по умолчанию /2 ). [[+num:div]] или [[+num:div=`5`]]
modulus, mod Вернет, значение % модификатор ( по умолчанию %2 ). Вернет 1 или 0. [[+num:mod]] или [[+num:mod=`5`]]
ifempty, default, empty, isempty Вернет, указанный модификатор, если значение пусто. [[*pagetitle:empty=`Пусто`]]
notempty, !empty, ifnotempty, isnotempty Вернет, указанный модификатор, если значение не пусто. [[*pagetitle:!empty=`Капуста`]]
nl2br Вернет строку с «
» или «
» вставленные перед всеми (rn, nr, n и r). аналогично функции php nl2br
[[*pagetitle:nl2br]]
date Аналогично функции PHP strftime. [[+birthyear:date=`%Y`]]
strtotime Аналогично функции PHP strtotime. Вернет дату. [[*createdon:strtotime]]
fuzzydate Вернет дату. «вчера», «сегодня». [[*createdon:fuzzydate]]
ago Вернет дату в прошедших секундах, минутах, неделях или месяцах. [[*createdon:ago]]
md5 Аналогично функции php md5. [[+password:md5]].
cdata Вставляет строку в оболочку «CDATA» тегов. [[*pagetitle:cdata]].
userinfo Возвращает запрошенные модификаторов данные о пользователе. Значение должно быть id-пользователя ( modUser ). [[+modx.user.id:userinfo=`username`]].
isloggedin Возвращает true, если пользователь авторизирован в этом контексте. [[+modx.user.id:isloggedin]].
isnotloggedin Возвращает true, если пользователь не авторизирован в этом контексте. [[+modx.user.id:isnotloggedin]].
urlencode Аналогично функции php urlencode. [[+stringi:urlencode]].
urldecode Аналогично функции php urldecode. [[+stringi:urldecode]].
Еще по теме:  Ужастики интересные на иви

Источник: pitrooo.ru

Оцените статью
Добавить комментарий