Параметр в MODx — элемент, который содержит определенную информацию для текущей страницы. Их можно непосредственно вывести на страницу или передать сниппету в качестве параметра.
Все параметры можно разделить на основные, TV-параметры и системные.
Список основных параметров заранее определен и содержит основную информацию о документе. Наиболее используемые:
- · [pagetitle] — заголовок документа;
- · [longtitle] — расширенный заголовок документа;
- · [description] — описание документа;
- · [introtext] — аннотация документа;
- · [content] — содержимое документа;
- · [id] — идентификатор (номер) документа;
- · [parent] — номер (ID) родительского документа;
- · [pub_date] — дата публикации документа;
- · [unpub_date] — дата завершения публикации;
- · [createdby] — идентификатор пользователя создавшего документ;
- · [createdon] — дата создания документа.
Стоит отдельно упомянуть о том, что параметры можно сочетать. В особенности это актуально для создания ссылок на разные документы с помощью параметра [~идентификатор~]. В качестве идентификатора можно также задать параметр. Например:
MODx MIGX Ч. 1 — Первичная настройка, XML-схема, создание таблицы в базе данных, tv-параметр MIGXdb.
- · [~[id]~] — вывести ссылку на текущий документ.
- · [~[parent]~] — вывести ссылку на родителя текущего документа.
TV-параметры позволяют добавить к документу дополнительную информацию, которую затем можно использовать наравне с основными параметрами. Также TV-параметры имеют различные типы, и в зависимости от этого меняется их управление и представление.
Все TV-параметры находятся в следующем месте: Элементы > Управление элементами > Параметры (TV).
Чтобы создать новый TV-параметр или отредактировать существующий, необходимо нажать на ссылку «Новый параметр (TV)», а для редактирования существующего TV-параметра достаточно нажать на ссылку с его названием.
Источник: vuzlit.com
multiTV — зачем он нужен и где используется
Часто бывает так, что необходимо привязать к какой-нибудь страничке дополнительные данные, редактируя которые, мы могли бы с лёгкостью могли изменять контент, при этом не прописывая какого-нибудь дополнительного HTML-кода, поскольку сама система делала бы это за нас самостоятельно. Отчасти эту проблему решают дополнительные TV-поля.
Но как быть, если к примеру у нас к странице привязаны ссылки на наши документы? Ведь по сути мы имеем дело с одной сущностью (ссылка), которая может повторяться у нас несколько раз. В Modx Evo мы могли бы создать дополнительные поля и назвать их скажем «Ссылка1», «Ссылка2» и т. д.? И вроде бы на первый взгляд это решает проблему, но это только на первый взгляд.
Ведь мы не знаем точно, сколько таких ссылок на каждый документ у нас будет. Более того, затем мы возможно бы решили, что нам нужно создать поле «анкор», то есть слово, щёлкнув на которое, мы могли бы перейти к скачке документа. Можно было действовать и по аналогии выше, перечислять поля с анкорами.
Работа с tv параметрами в CMS MODX Revolution
Но это опять же, избыточность, ещё больше кода, ну и неловкое ощущение от молчаливого вопроса — «а можно ли было сделать как-то лучше?». Вот для этого собственно и был создан сниппет multiTV, который решает вышеописанные проблемы. При установке он добавляет дополнительный тип поля, в котором могут храниться другие поля.
Итак, предположим мы хотим привзять к документу какое-то n-ое значение ссылок, у которых помимо прочего будут названия. Алгоритм создания будет таким:
- Создаём поле, скажем info. Тип ввода у него будет таким — multitiv.
- Переходим в папку /assets/tvs/multitv/configs и создаём файл следующего вида — info.config.inc.php Хочу обратить ваше внимание на то, что слово info в названи файла было выбрано неспроста, поскольку это слово должно быть одинаковым с тем полем, к которому мы хотим сделать привязку. К слову, в данной папке уже находятся примеры готовых конфигураций, поэтому за основу вы можете взять одну из уже готовых.
- Редактируем файл конфигурации. У меня конфигурация получилась следующего вида:
[!multiTV? display=`all`!]
Параметры сниппета:
display=`all` — сколько строк отображать, в данном случае — все.
Источник: cms-dev.ru
tvSuperSelect
Внимание, этот компонент требует версию PHP 5.4 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.3 !
Это такой тип ТВ поля, в который можно вбивать значения «на ходу». Другими словами, мы не указываем «Возможные значения» при редактировании ТВ, а вбиваем эти значения в это поле на странице редактирования ресурса.
Очень удобно создавать из такого поля «Теги» на сайте, потому что помимо добавления значений «на ходу», у нас есть возможность выбрать уже используемые значения из других ресурсов.
Сниппет tvssResources
Выводит ресурсы по тегу/тегам. Сниппет отдаёт все параметры в pdoFetch, поэтому можно указывать любые параметры pdoTools. Понимает Fenom, может работать с pdoPage.
Пример выборки ресурсов с тегами «tag1», «tag2», «tag3» прописанными в TV с ID 17 или 19:
Теги можно указать, как параметром в сниппет, так и в GET запросе в параметре tag. Сниппет перебивает указанный тег в GET запросе.
Сниппет tvssTickets
Выводит тикеты компонента Tickets по тегу/тегам. Отдаёт все параметры в getTickets, поэтому можно указывать любые доступные параметры getTickets.
Пример выборки тикетов с тегами «tag1», «tag2», «tag3» прописанными в TV с ID 17 или 19:
{$_modx->getPlaceholder(‘page.nav’)}
Теги можно указать, как параметром в сниппет, так и в GET запросе в параметре tag. Сниппет перебивает указанный тег в GET запросе.
Сниппет tvssTags
Выводит список тегов ресурса.
Пример вывода всех тегов из ТВ поля 17, указанных в текущем ресурсе. В ссылке тега формируется УРЛ для ресурса 2, на котором располагается сниппет tvssResources:
{$_modx->runSnippet(‘tvssTags’, [ ‘id’ => $_modx->resource.id, ‘tv’ => 17, ‘pageId’ => 2, ])}
В список параметров также входит: tpl, tplWrapper, outputSeparator, toPlaceholder.
Инструкция по созданию тегов на сайте
- После установки компонента создаём новое ТВ с типом tvSuperSelect. Запоминаем ID ТВшки. В нашем случае — 2.
- Создаём ресурс «Ресурсы с тегом». Запоминаем ID ресурса. В нашем случае — 2.
В longtitle прописываем:
Ресурсы с тегом$.get[‘tag’] ? ‘ «’~($.get[‘tag’]
- Контент для вывода списка ресурсов:
{if $.get[‘tag’]?} runSnippet(‘pdoPage’, [ ‘element’ => ‘tvssTickets’, ‘tv’ => ‘2’, ‘parents’ => 0, ‘ajaxMode’ => ‘default’, ]) ?: ‘Тикетов по данному тегу не найдено’} {$_modx->getPlaceholder(‘page.nav’)} {else} Укажите тег для выборки документов {/if}
{$_modx->runSnippet(‘tvssTags’, [ ‘id’ => $_modx->resource.id, ‘tv’ => 2, ‘pageId’ => 2, ])}
Инструкция по выводу похожих статей с помощью тегов
Похожие ресурсы
Стандартный синтаксис:
Похожие тикеты
Стандартный синтаксис:
Немного подробнее о хранении значений в базе
- У данного ТВ поля есть своя таблица tvss_options, в ней данные хранятся в таком виде:
- Однако, данные также хранятся и в таблице site_tmplvar_contentvalues, но уже в виде JSON массива:
Первое сделано для удобной фильтрации, второе — для простого вывода.
1.3.1-beta (21.01.2019)
- Исправлен тип колонки tv_id на int в схеме базы данных
1.3.0-beta2 (05.11.2018)
- Поправлено формирование имени ТВ поля
1.3.0-beta (28.10.2018)
- Добавлена поддержка MIGX
1.2.2-beta (13.09.2018)
- Добавлено поле display в ComboBox для разделения отображаемого текста и значения
1.2.1-beta (13.09.2018)
- Добавлен параметр context_key, передаваемый в процессор
1.2.0-beta (12.09.2018)
- Добавлена возможность указать ТВ свой коннектор и процессор для вывода кастомных значений
1.1.7-beta (15.12.2017)
- Поправлены предупреждения в сниппете tvssResources и tvssTickets
1.1.6-beta (03.06.2017)
- Поправлены баги в сниппете tvssResources и tvssTickets
1.1.5-beta2 (24.04.2017)
- Корректировки сниппета tvssCloud
1.1.5-beta (24.04.2017)
- Сниппет tvssCloud
1.1.4-beta (07.12.2016)
- Поправлена работа с товарами miniShop2 >=2.4
- Рефакторинг кода плагина
1.1.3-beta (17.06.2016)
- В сниппеты tvssResources и tvssTickets добавлен параметр like=`1`, то при выводе ресурсов по тегу «еда», в результаты будут добавлены ресурсы с тегом «педагог». Если же like=`0`.
1.1.2-beta2 (07.06.2016)
- Поправлен баг с удалением данных из таблицы tvssOption при полной очистке поля
1.1.2-beta (19.03.2016)
- В сниппетах tvssResources и tvssTickets поправил warnings в журнал ошибок
- Поправлен косяк с кривым отображением input
1.1.1-pl3 (18.03.2016)
- В tvssTags добавлен параметр loadModels введённого пользователем
1.1.1-pl (18.03.2016)
- Восстановлена поддержка PHP 5.3
- Восстановлена возможность указания пустого https://modstore.pro/packages/other/tvsuperselect» target=»_blank»]modstore.pro[/mask_link]