TV-параметры позволяют добавить к документу дополнительную информацию, которую затем можно использовать на равне с основными параметрами. Также TV-параметры имеют различные типы и в зависимости от этого меняется их управление и представление.
TV-параметры задуманы таким образом, чтобы передавать значение переменной и при этом именоваться, как угодно. Но стоит ли дать создавать новые параметры, когда среди уже имеющихся по умолчанию представлен исчерпывающий список имён, о котором не всем известно?
Рассмотрим основные и системные TV-параметры по умолчанию в CMS MODx Evo и Evolution СMS.
Параметр в MODX — элемент, который содержит определенную информацию для текущей страницы. Их можно непосредственно вывести на страницу или передать сниппету в качестве параметра.
Основные параметры содержат информацию о документе.
*pagetitle* — заголовок документа
*longtitle* — расширенный заголовок документа
*description* — описание документа
*introtext* — аннотация документа
3 урок Корпоративный сайт на MODX Revolution. Вывод изображений слайдера через TV поля, ТВ на MODX
*content* — содержимое документа
*id* — идентификатор (номер) документа
*parent* — номер (ID) родительского документа
*pub_date* — дата публикации дкоумента
*unpub_date* — дата завершения публикации
*createdby* — Идентификатор пользователя создавшего документ
*createdon* — Дата создания документа
~идентификатор~ — URL документа по указанному идентификатору
Дополнительно
*alias* — псевдоним документа
*editedby* — Идентификатор пользователя редактировавшего документ
*editedon* — Дата редактирования документа
*type* — вариант (документ, папка или ссылка)
contentType* — тип содержимого (например, text/html)
*published* — опубликован ли документ (1|0)
*isfolder* — является ли документа папкой (1|0)
*richtext* — используется ли при редактировании документа визуальный редактор
*template* — номер (ID) используемого шаблона для документа
*menuindex* — порядковый номер отображения в меню
*searchable* — доступен ли документ для поиска (1|0)
*cacheable* — Кэшируется ли документ (1|0)
*deleted* — Документ удален (1|0)
*deletedby* — Идентификатор пользователя удалившего документ
*donthit* — Слежение за количеством посещений отключено (1|0)
*haskeywords* — Документ содержит ключевые слова (1|0)
*hasmetatags* — Документ имеет метатеги (1|0)
*privateweb* — Документ входит в частную группу пользовательских документов (1|0)
*privatemgr* — Документ входит в частную группу менеджерских документов (1|0)
*content_dispo* — Вариант выдачи содержимого (1 — для отображения | 0 — для скачивания)
*hidemenu* — Документ не отображается в меню (1|0)
Назначение полей
Имя параметра — используется для вызова TV-параметра. Можно использовать как английский так и русский язык, а также дефис (-) и знак подчеркивания (_). Пробел использовать нельзя!
Описание — используется для более расширенной информации о TV-параметре в документе при редактировании, а также в общем списке TV-параметров.
Работа с tv параметрами в CMS MODX Revolution
Тип ввода — определяет вид получаемой информации. В зависимости от выбранного типа интерфейс меняется. Более подробно смотрите Типы ввода TV-параметров.
Значение по умолчанию — определеяет значение TV-параметра по умолчанию при редактировании документа.
Возможные значения — используются в некоторых типах ввода (например Radio Options, Check Box) для предоставления вариантов выбора. Более подробно смотрите Определение значений TV-параметра.
Визуальный компонент — определеяет вариант вывода TV-параметра на страницу сайта. Более подробно смотрите Вид TV-параметра.
Порядок в списке — определяет порядок TV-параметра в документе.
Ограничить доступ к редактированию параметра — если включить флажок, то никто кроме администраторов не сможет редактировать этот TV-параметр.
- Text — поле ввода. Поле ввода MODX Evo. Возможные значения не используются. Значение по умолчанию автоматически записывается в поле при первом редактировании.
- Raw Text, Raw Textarea. Устарели и не рекомендуются к использованию. Вместо них рекомендуется использовать Textarea и Textarea (Mini).
- Textarea и Textarea (Mini) — текстовое поле. Текстовое поле в MODX Evo. Возможные значения не используются. Значение по умолчанию автоматически записывается в поле при первом редактировании.
- RichText — поле с визуальным редактором. Визуальный редактор (RichText) в MODX Evo. Возможные значения не используются. Значение по умолчанию автоматически записывается в поле при первом редактировании.
- DropDown List Menu — раскрывающийся список. Выпадающий список в MODX Evo. Поле Возможные значения задает конечный список значений и определеляется специальным форматом. Более подробно смотрите Определение значений TV-параметра. Значение по умолчанию определяет выбранный пункт при первом редактировании.
- Listbox (Single-Select) и Listbox (Multi-Select) — список множественного выбора. Список с множественным выбором в MODX Evo
- Single-Select и Multi-Select отличаются только тем, что в первом варианте можно выбрать одно значение, а во втором несколько (+Ctrl). Поле Возможные значения задает конечный список значений и определеляется специальным форматом. Более подробно смотрите Определение значений TV-параметра. Значение по умолчанию определяет выбранный пункт при первом редактировании.
- Radio Options — Переключатели (Radio) в MODX Evo. Поле Возможные значения задает конечный список значений и определеляется специальным форматом. Более подробно смотрите Определение значений TV-параметра. Значение по умолчанию определяет выбранный пункт при первом редактировании.
- Check Box — флажки. Переключатели (checkbox) в MODX Evo. Поле Возможные значения задает конечный список значений и определеляется специальным форматом. Более подробно смотрите Определение значений TV-параметра. Значение по умолчанию определяет выбранный пункт при первом редактировании.
- Image — изображение. Выбор изображения в MODX Evo. При нажатии кнопки Вставить открывается файловый менеджер, который позволяет выбрать необходимое изображение и загрузить его при необходимости. Возможные значения не используются. Значение по умолчанию автоматически записывается в поле при первом редактировании.
- File — Выбор файла в MODX Evo. При нажатии кнопки Вставить открывается файловый менеджер, который позволяет выбрать необходимый файл и загрузить его при необходимости. Возможные значения не используются. Значение по умолчанию автоматически записывается в поле при первом редактировании.
- URL — ссылка. Ссылка — TV-параметр в MODX Evo. Возможные значения не используются. Значение по умолчанию автоматически записывается в поле при первом редактировании.
- Email — Email — TV-параметр в MODX Evo. Возможные значения не используются. Значение по умолчанию автоматически записывается в поле при первом редактировании.
- Number — число. Число — TV-параметр в MODX Evo. Возможные значения не используются. Значение по умолчанию автоматически записывается в поле при первом редактировании.
- Date — Дата — TV-параметр в MODX Evo. Первая кнопка вызывает календарик, с помощью которого можно выбрать дату. Вторая кнопка стирает дату. Возможные значения не используются. Значение по умолчанию автоматически записывается в поле при первом редактировании.
Источник: langner.ru
Modx Revolution Админка – как и какие плагины установить для разработки сайта
Если вы не знаете, как установить CMS Modx Revolution, то рекомендую ознакомиться с данной статьей, где пошагово рассказано как установить MODX Revo. Также в следующих статьях разберем «Какие начальные настройки нужно провести в ModX» и «Сниппеты для успешной работы в ModX Revo».
Установщик пакетов
После авторизации в админ панели вашего сайта site/manager мы видим элементы управления. Для установки пакетов нам нужно перейти в верхнем меню во вкладку «Пакеты» и выбрать пункт «Установщик».
Откроется окно «Менеджер пакетов». Здесь нажимаем на кнопку «Загрузить пакеты» и в поиске вписываем необходимые пакеты для установки.
Каждый пакет необходимо «Загрузить» и после загрузки вернуться на страницу «Менеджер пакетов» и установить каждый пакет.
Какие плагины нужно скачать и для чего?
- Ace
- AdminTools
- AjaxForm
- autoRedirector
- Collections
- Formit
- FormSave
- Gallery
- getResources
- MIGX
- pdoTools
- phpThumbOf
- ReCaptchaV2
- SimpleSearch
- tagElementPlugin
- TinyMCE
- Translit
- UpgradeMODX
Ace
Ace – это пакет, который позволяет встроить редактор кода внутрь Modx вместо стандартного. С поддержкой Emmet:
AdminTools
AdminTools позволяет гибко стилизовать админ панель управления CMS:
AjaxForm
AjaxForm – позволяет создаться ajax форму, т.е. форму отправки сообщений на почту без перезагрузки страницы. AjaxForm работает в связке с Formit.
autoRedirector
autoRedirector – позволяет не заботиться о меняющихся url адресах на сайте. Например, если раньше страница была по адресу: site.ru/necessery-page , а теперь стала site.ru/new-adress , то пользователь при переходе по первой ссылке не получит 404 ошибку, а перенаправится на вторую. autoRedirector создает отдельную табличку в базе и запоминает старые адреса страниц автоматически.
Collections
Классный плагин, который позволяет красиво группировать дочерние ресурсы страницы в коллекции.
Formit
Пакет позволяющий упаковывать и отправлять данный с сайта на почту, например, форма обратного звонка. AjaxForm работает в связке с Formit .
FormSave
Фильтры-модификаторы PHx в Modx revo — примеры использования
Фильтры PHx (Placeholders Xtended) добавляют новые возможности для отображения плейсхолдеров, тегов MODx (включая TV параметры) и теги настроек сайта. Фильтры модификаторы phx позволяют манипулировать значением тегов, непосредственно внутри шаблона.
Все довольно просто, модификаторы phx значительно облегчают жизнь разработчику сайта. Например есть сайт и необходимо только на главной странице показывать слайдер, ну или любой другой банер. В шаблоне сайта достаточно прописать
[[*id:is=`1`:then=`[[$slider]]`]]
где 1 — это id главной страницы, а $slider — чанк с html кодом слайдера. и т.д. и т.п. Только чайники создают новый шаблон и копируют туда весь html-код страницы, ради пары строчек слайдера/банера. Но не печальтесь, все мы такими были, поэтому просвещайтесь и пользуйтесь в будущем фильтрами модификаторами phx.
[[*id:is=`1`:then=`[[$slider]]`]]
— выводит id текущей страницы;
:is=`1`:then= — проверяет равно ли *id == 1
и если ДА, то выводит содержимое then;
[[$slider]]
— выводит чанк в котором находится верстка и вывод слайдера.
использовано может быть любое другое поле, например
[[*template]]
— выведет текущий используемый шаблон. Или можно проверять не пусто ли TV-поле
[[*slider]]
или как там его?
Примеры использования PHx фильтра в MODx
Пример 1:
Хорошим тоном считается когда клик по логотипу компании отправляет на главную страницу сайта. Но ссылка должна быть неактивна, если пользователь находится как раз на главной.
Т.к. в MODX чаще всего вы используете шаблоны страниц, в данном случае вам бы потребовалось создать два шаблона.
Один для главной без ссылки:
Второй для внутренних страниц со ссылкой:
Это неудобно. С помощью PHx модификатора is (равенство) вы можете сделать так:
[[*id:is=`1`:then=` `:else=` `]]
Если id страницы равен 1, вернуть логотип без ссылки, а если id не равен 1, вернуть логотип со ссылкой. Тем самым вы избавляетесь от создания двух практически идентичных шаблонов и обходитесь одним, но с модификатором вывода.
Пример 2:
Нам требуется вывести разные названия страницы в зависимости от шаблона.
[[*template:is=`1`:or:is=`2`:then=`[[*pagetitle]]`:else=`[[*longtitle]]`]]
Если шаблон страницы равен 1 или равен 2, вернуть
[[*pagetitle]]
иначе вернуть
[[*longtitle]]
Как видите, можно использовать несколько модификаторов в одной цепочке. Хотя, правильнее было бы написать так:
[[[[*template:is=`1`:or:is=`2`:then=`*pagetitle`:else=`*longtitle`]]]]
В следующих таблицах перечислены некоторые модификаторы PHx, которые могут быть использованы для любого тега MODx Revolution.
Модификаторы условия
[[+phx:input=`/assets/img/photo.gif`]]
— добавляем в тег phx входное значение, следующим модификатором, например, можно обработать изображение.
Или
[[+phx:input=`/assets/img/photo.gif`:contains=`photo.gif`:then=`da`:else=`net`]]
проверить есть ли в пути определенная последовательность символов.
[[*id:is=`1`:and:if=`[[*id]]`:ne=`2`:then=`da`:else=`net`]]
[[*id:is=`1`:or:if=`[[*id]]`:is=`2`:then=`da`:else=`net`]]
— если id-ресурса = 1 или = 2, выводим «da», или же «net».
[[*id:is=`1`:and:if=`[[*id]]`:ne=`2`:then=`da`:else=`net`]]
[[*id:is=`1`:then=`da`:else=`net`]]
[[*id:ne=`1`:then=`da`:else=`net`]]
[[*id:ge=`1`:then=`da`:else=`net`]]
[[*id:gt=`1`:then=`da`:else=`net`]]
[[*id:el=`10`:then=`da`:else=`net`]]
[[*id:lt=`10`:then=`da`:else=`net`]]
[[+author:contains=`Сэ́мюэл Кле́менс`:then=`Марк Твен`]]
[[+author:containsnot=`Сэ́мюэл Кле́менс`:then=`Кто-нибудь еще`]]
[[*id:is=`10`:hide]]
[[*id:is=`10`:show]]
[[*id:is=`10`:then=`ept`]]
[[*id:is=`10`:then=`ept`:else=`nooo`]]
[[+controls]]
[[+controls:select=`0=ВЫКЛ2=ХЗ`:else=`Ошибка`]]
[[+controls]]
[[*template:in=`3,4`:then=`[[$myChank]]`:else=`пробел`]]
[[*template]]
(текущий шаблон) — равен «3» или «4», значит выводим
[[$myChank]]
Модификаторы строки
[[+num:cat=` раз`]]
[[*pagetitle:lcase]]
[[*pagetitle:ucase]]
[[*pagetitle:ucwords]]
[[*pagetitle:ucfirst]]
[[*pagetitle:htmlentities]]
[, ] и `
[[*content:esc]]
[[*content:strip]]
[[*pagetitle:stripString=`писька`]]
[[*pagetitle:replace=`писька==конфетка`]]
[[*longtitle:strip_tags=«]]
[[*longtitle:strlen]]
[[*longtitle:reverse]]
[[*pagetitle:wordwrap=`10`]]
[[*pagetitle:limit=`10`]]
[[*pagetitle:ellipsis=`10`]]
[[+showThis:tag]]
[[+num:incr]]
[[+num:add=`97`]]
[[+num:decr]]
[[+num:decr=`97`]]
[[+num:mpy]]
[[+num:mpy=`5`]]
[[+num:div]]
[[+num:div=`5`]]
[[+num:mod]]
[[+num:mod=`5`]]
[[*pagetitle:empty=`Пусто`]]
[[*pagetitle:!empty=`Не пусто!`]]
[[*pagetitle:nl2br]]
[[*pagetitle:nl2br]]
[[+birthyear:date=`%Y`]]
[[*createdon:strtotime]]
[[*createdon:fuzzydate]]
[[*createdon:ago]]
[[+password:md5]]
[[*pagetitle:cdata]]
[[+modx.user.id:userinfo=`username`]]
[[+modx.user.id:isloggedin]]
[[+modx.user.id:isnotloggedin]]
[[+number:toPlaceholder=`итого`]]
помещает содержимое
[[+number]]
в плейсхолдер
[[+итого]]
Можно усложнять запись добавляя в левую часть выражения любые другие модификаторы:
[[+number:is=`10`:then=`ровно 10`:else=`точно не 10!`:toPlaceholder=`итого`]]
[[+number]]
= 10, тогда выводим в плейсхолдер
[[+итого]]
[[+cssTV:cssToHead]]
[[+htmlTV:htmlToHead ]]
перед закрывающим тегом , регистрирует значение тега
[[+htmlTV]]
modX.regClientHTMLBlock
[[+htmlTV:htmlToBottom]]
перед закрывающим тегом регистрирует значение тега
[[+htmlTV]]
modX.regClientStartupScript
[[+jsTV:jsToHead]]
modX.regClientScript
[[+jsTV:jsToBottom]]
[[+stringi:urldecode]]
[[!+modx.user.id:userinfo=`internalKey`]]
[[!+modx.user.id:userinfo=`username`]]
Полное имя:
[[!+modx.user.id:userinfo=`fullname`]]
[[!+modx.user.id:userinfo=`role`]]
[[!+modx.user.id:userinfo=`email`]]
[[!+modx.user.id:userinfo=`phone`]]
Мобильный телефон:
[[!+modx.user.id:userinfo=`mobilephone`]]
[[!+modx.user.id:userinfo=`fax`]]
День рождения:
[[!+modx.user.id:userinfo=`dob`:date=`%Y-%m-%d`]]
[[!+modx.user.id:userinfo=`gender`]]
[[!+modx.user.id:userinfo=`country`]]
[[!+modx.user.id:userinfo=`state`]]
[[!+modx.user.id:userinfo=`zip`]]
[[!+modx.user.id:userinfo=`photo`]]
Комментарий:
[[!+modx.user.id:userinfo=`comment`]]
Дата последнего входа:
[[!+modx.user.id:userinfo=`lastlogin`:date=`%Y-%m-%d`]]
Количество входов:
[[!+modx.user.id:userinfo=`logincount`]]
[[!+modx.user.id]]
возвращает ID вошедшего в систему пользователя. Вы, конечно, можете заменить, его на
[[*createdby]]
или другое поле ресурса или любой плейсхолдер, который возвращает числовое представление ID пользователя.
Обратите внимание, что ID пользователя и его логин уже доступны по умолчанию в MODX, так что вам не нужно использовать модификатор User Info:
[[!+modx.user.id]]
— Выведет ID пользователя
[[!+modx.user.username]]
— Выведет логин пользователя
Особое внимание обращаем на восклицательный знак !
[[!+modx.user.id]]
Он позволяет НЕ кэшировать содержимое вывода. Лучше всего эти плейсхолдеры вызывать некешируемыми, чтобы избежать неожиданных результатов. Почему нужно не кешировать.
Представим это так: на сайте 5 пользователей. Первый пользователь зашел на страницу с вызовом:
Добро пожаловать, [[!+modx.user.id:userinfo=`username`]]!
По задумке на этой странице, выводится приветственное сообщение пользователю. Так вот, если результат будет кешироваться, то при первом входе на эту страницу — сохранится имя пользователя который только что зашел — и всем остальным будет показываться не их имя, а имя того пользователя который вошел на эту страницу первым. Чтобы этого избежать — просто не кэшируем этот тэг, с помощью восклицательного знака перед вызовом !+modx.
Также фильтры можно использовать несколькими способами (что уменьшает время их выполнения)
Используем модификатор:
[[+title:lcase]]
[[+something:notempty=`Hello[[+name]]`]]
Используем сниппет:
[[lcase? subject=`something` subject=`title` subject=`something` meter=`Hello [[+name]]`]]
P.S: Не забываем включить кэширование тегов, где нужно. Чтобы это сделать — нужно ИЗБАВЛЯТЬСЯ от восклицательных знаков (!). Результаты большинства сниппетов вплоне себе могут работать из кэша.
Источник: seo-studio.pro