modx revo tagmanager2 | ИТ Шеф
- Статьи
- Видеоуроки
- Таймлайн
- Вопросы
- Поиск
-
- Войти
- Регистрация
- HTML & CSS
- JavaScript
- Bootstrap
[решено] tagManager 2.0 — не заводится, барахлит.. / Русскоязычное сообщество MODX
Какой день пытаюсь понять, что не так я делаю, ведь есть инструкция, которая приложена разработчиком и отличный интерфейс с ангуляром, только вот… не хочет он работать как надобно.
tagManager 2.0 — отличное дополнение, которое не хочет работать (с и без шопкипера).
Всё отлично до момента попытки вывода фильтров, выводим:
Выводим в шаблоне для раздела «поиска/фильтрации».
Сами же документы, которые необходимо фильтровать, находятся в другом контейнере.
если я добавляю еще одно значение (они берутся с tv параметров указанных в документе), то результат огорчает:
он просто добавляет новый селект в список, но при этом все селекторы пусты и имеют лишь значение по умолчанию, которое указывается в шаблоне:
«, думаю что это не требуется т.к. в шаблоне он статично введен.
Я в тупике т.к. это очень странно всё, или я что-то упускаю в инструкции:
tagManager 2.0modx-shopkeeper.ru/
==================================================================
Компонент для фильтрации товаров в каталоге и управления фильтрами.
Функции:
— Управление фильтрами. Изменение порядка сортировки, переименование названий групп фильтров и др.
— Групповое изменение значений доп. параметров товаров.
— Простая фильтрация товаров в каталоге (без ajax).
— Ajax-фильтрация товаров в каталоге с выводом количества найденных товаров по каждому фильтру.
— Динамическое изменение вида вывода товаров (изменение шаблонов).
— Поддержка мультивалютности.
==================================================================
tmFilters — сниппет выводит фильтры. Вызывать кэшированным (без «!»).
tmCatalog — сниппет выводит товары каталога и фильтрует. Вызывать не кэшированным (с «!»).
Необходимо установить сниппет getProducts (http://modx.com/extras/package/getproducts).
==================================================================
Сниппет tmFilters
Параметры сниппета:
filterOuterTpl — Чанк блоки с фильтрами. По умолчанию — tm2_filterOuterTpl.
filterTpl — Чанк одного фильтра. По умолчанию — tm2_filterTpl.
filterNumericOuterTpl — Чанк блока с фильтрами с числовыми значениями. По умолчанию — tm2_filterOuterTpl.
filterNumericTpl — Чанк фильтра с числовыми значениями. По умолчанию — tm2_filterNumericTpl.
toPlaceholder — Имя плейсхолдера для вывода. Если не задано, выводится в месте вызова сниппета.
style — Подключить CSS-файл стилей ( 1 — да, 0 — нет). По умолчанию: 1.
jsScript — Подключить все необходимые JS-скрипты ( 1 — да, 0 — нет). По умолчанию: 1.
filtersType — Тип фильтрации. Возможные значения: filters, filters_simple. По умолчанию: filters.
Используется библиотека jQuery.
Если у вас на сайте уже используется jQuery, повторно она подключаться не будет (сделана автоматическая проверка).
Для тонкой настройки открыть в текстовом редакторе файл
/assets/components/tag_manager2/js/web/filters.js
или
/assets/components/tag_manager2/js/web/filters_simple.js
Настройки вверху, в коде есть комментарии.
Если используется ajax-фильтрация (filtersType = filters), в форму фильтрации добавить скрытое поле (см. пример 3):
/>
Параметр «filters_type» в filters.js
Для «filters_type» = «default» (показ числа товаров по каждому фильтру и блокирование пустых вариантов)
или «only_block» (только блокирование пустых париантов) необходимо включить параметр «jsMap» у сниппета «tmFilters».
Если «filters_type» = «none», «jsMap» рекомендуется выключить.
==================================================================
Сниппет tmCatalog
Сниппет не имеет параметров, т.к. является оберточным сниппетом для «getPage» и «getProducts».
Используются параметры из набора параметров для сниппета «getPage», указанного в настройках системы — tag_mgr2.propertySetName.
Можно указывать параметры для «getPage» и «getProducts».
Пример:
[[!tmCatalog?
&parents=`-1`
&resources=`110,111,112`
&tpl=`product`
]]
В данном случае будут выводиться только товары с ID = 110,111,112.
Можно использовать для поиска, выводить найденные ID товаров с помощью отдельного сниппета и фильтровать найденные товары.
==================================================================
Вывод товаров из таблицы, созданной в MIGXDB (http://modx.com/extras/package/migx)
Если для хранения товаров импользуется отдельная таблица в БД, созданная с помощью MIGXDB,
в настройках компонента «tagManager2» в параметрах «tag_mgr2.className» и «tag_mgr2.packageName» указать
название класса и название компонента вашей таблицы в БД.
Настройки «className» и «packageName» можно указать в параметрах шаблона категории товаров:
1. Открыть шаблон категории товаров.
2. Перейти на вкладку «Параметры».
prodClassName — Имя класса таблицы БД (например «ShopContent»).
prodPackageName — Имя пакета таблицы БД (например «shop»).
prodPropertySetName — имя набора параметров для сниппета getPage, который нужно использовать для фильтрации для текущего шаблона (не обязателный параметр).
4. Сохранить изменения.
==================================================================
==================================================================
Множественные значения фильтров
Если нужно сделать возможность задавать множественные значения для параметра, нужно создать TV параметр с типом ввода «Флажки (checkbox)» или «Список (множественный выбор)».
акция==#акция#||лидер продаж==#лидер продаж#||новинка==#новинка#
Разделитель «#» можно изменить в конфигурации компонента — tag_mgr2.guard_key.
Имена таких TV нужно указать в скрипте filters.js в массиве
‘multitags’: [‘tag’]
— Для множественных значений, созданных через тип ввода «param-edit», если используется MIGX для создания таблицы БД товаров,
в настройках поля (в MIGX) указать:
Input TV = param1 (param1 — название TV с типом ввода «param-edit»)
Input TV type = param-edit
Для MIGX 2.5.8 указание «Input TV» при использовании не стандартных типов ввода обязательно. Возможно в будущих версиях это будет исправлено.
==================================================================
==================================================================
Динамическое изменение шаблона вывода списка товаров
На данный момент сделана готовая возможность изменения шаблона с помошью JS-скрипта /assets/components/tag_manager/js/web/view_switch.js.
Скрипт ставит куку и обновляет вывод.
1. Добавить скрипт на страницу
2. В набор параметров «getPage», который используется для вывода товаров, добавить параметр «tpl_list» со списком шаблонов (чанков) через запятую.
Например: «product,product_list».
3. В тело страницы вставить ссылки для изменения вида. У элемента-контейнера должен быть id=«viewSwitch».
Пример:
Показывать:
картинками
списком
==================================================================
==================================================================
Мультивалютность
Поддерживается мультивалютность, используемая Shopkeeper. По настройке мультивалютности читать документацию Shopkeeper.
Для работы tagManager с мультивалютностью необходимо выполнить:
1. Если используется аякс-фильтрация, открыть в текстовом редакторе /assets/components/tag_manager2/js/web/filters.js
и включить мультивалютность — multi_currency = true.
2. В этом же файле указать правильное название TV параметра или поля с ценой — price_field.
3. В настройках системы в параметре tag_mgr2.priceName нужно указать название TV параметра или поля с ценой (по умолчанию «price»).
4. Версия Shopkeeper должна быть не меньше 2.3.4.
==================================================================
==================================================================
Стилизация селектов
Для стилизации селектов рекомендуется использовать jQuery-плагин SelectBoxIt — gregfranko.com/jquery.selectBoxIt.js/index.html.
Данный плагин поддерживается tagManager.
Пример подключение стиля и скриптов SelectBoxIt:
/>
==================================================================
==================================================================
Пример 1. Простая фильтрация с чекбоксами (множественный выбор).
[[tmFilters?
&filterOuterTpl=`tm2_filterOuterTpl`
&filterTpl=`tm2_filterTpl`
&filterNumericOuterTpl=`tm2_filterOuterTpl`
&filterNumericTpl=`tm2_filterNumericTpl`
&filtersType=`filters_simple`
&toPlaceholder=`filters`
]]
Сортировать по: | названию цене дате |
В порядке: | возрастания убывания |
Выводить по: | 10 20 40 |
[[+filters]]
Подобрать
Сбросить
==================================================================
[[!tmCatalog]]
====================================================================================================================================
Пример 2. Сортировка отдельно от формы фильтров. Простая фильтрация с фильтрами в виде выпадающих списков (одиночный выбор).
/>
/>
/>
[[tmFilters?
&filterOuterTpl=`tm2_filterOuterTpl_select`
&filterTpl=`tm2_filterTpl_select`
&filterNumericOuterTpl=`tm2_filterOuterTpl`
&filterNumericTpl=`tm2_filterNumericTpl`
&filtersType=`filters_simple`
]]
Подобрать
Сбросить
==================================================================
по названию
по цене
по дате
по возростанию
по убыванию
10
20
40
[[!tmCatalog]]
====================================================================================================================================
Пример 3. Ajax-фильтрация, сортировка отдельно от формы фильтров.
[[tmFilters?
&filterOuterTpl=`tm2_filterOuterTpl`
&filterTpl=`tm2_filterTpl`
&filterNumericOuterTpl=`tm2_filterOuterTpl`
&filterNumericTpl=`tm2_filterNumericTpl`
&jsMap=`1`
&toPlaceholder=`filters`
]]
/>
[[+filters]]
Сбросить
==================================================================
по названию
по цене
по дате
по возростанию
по убыванию
4
10
20
40
[[!tmCatalog]]
Проблема при фильтрации в tagmanager2 в modx revo? — Хабр Q&A
Доброе время суток. Клиент отказался от Ajax-фильтрации. Теперь делаю обычную фильтрацию по документации<div>
<form action="[[~[[*id]]]]" method="get">
<input type="hidden" name="sortby" value="pagetitle" />
<input type="hidden" name="sortdir" value="asc" />
<input type="hidden" name="limit" value="10" />
[[tmFilters?
&filterOuterTpl=`tm2_filterOuterTpl_select`
&filterTpl=`tm2_filterTpl_select`
&filterNumericOuterTpl=`tm2_filterOuterTpl`
&filterNumericTpl=`tm2_filterNumericTpl`
&filtersType=`filters_simple`
]]
<button type="submit">Подобрать</button>
<button type="button">Сбросить</button>
</form>
</div>
==================================================================
<div>
<select name="sortby">
<option value="pagetitle">по названию</option>
<option value="price">по цене</option>
<option value="publishedon">по дате</option>
</select>
<select name="sortdir">
<option value="asc">по возростанию</option>
<option value="desc">по убыванию</option>
</select>
<select name="limit">
<option value="10">10</option>
<option value="20">20</option>
<option value="40">40</option>
</select>
<div></div>
</div>
<div>
[[!tmCatalog]]
<div></div>
</div>
<ul>
[[!+page.nav]]
</ul>
При нажатии на кнопку подобрать выкидывает на главную страницу (ссылка вида index.php?sortby=pagetitle&sortdir=asc&limit=10&f_komnat=&f_obsh_kv=122&f_etaj=). Что я делаю не так?
Забыл сказать, у меня на каждой категории стоит фильтр, то есть у меня не одна категория, а сразу несколько и они должны фильтроваться не по ajax.
Знакомство с MODX / Хабр
В наши дни выбор систем управления контентом (CMS) настолько велик, что невольно теряешься. Причем, качество системы не зависит от того платная она или нет, а принятое решение затем надолго вас привязывает к выбранной CMS.Предлагаю вашему вниманию перевод статьи английского веб-разработчика Марка Дженкинса, открывшего для себя MODX после многих лет разработки в различных системах.
Вначале идет перевод статьи, затем — некоторые комментарии по тексту.
Я только что закончил свой второй проект на платформе MODX, и думаю, самое время изложить свои мысли. У меня сложилось такое впечатление, что в web-индустрии MODX преимущественно не имеет широкую известность, отчасти поэтому, в целях просвещения, я и пишу эту статью.
MODX – это система управления контентом с открытым кодом. Она построена на основе PHP и MYSQL, поэтому работает практически на любом сервере. Как и в WordPress существуют две версии: MODX Revolution (как wordpress.org, версия для скачивания и установки на ваш сервер) и MODX Cloud (как wordpress.com).
MODX – непритязателен: не важно, где располагаются шаблоны, как они организованы или где размещается контент. Это гибкая система, позволяющая работать как вам угодно.
Выбор систем управления сайтами (CMS) довольно широк. Раньше я пользовался WordPress, Perch, Expression Engine и Kirby, так же как Shopify и Magento для интернет-магазинов. Я использую WordPress и Perch на постоянной основе и обе системы доказали свою надежность и простоту использования.
Отсюда возникает вопрос: «Зачем вообще я должен вникать в MODX?»
Думаю, будет честно, если скажу, что я довольно хорошо знаком с WordPress, т.к. делал в этой системе практически все: блоги, 5-ти страничные сайты, мульти- региональные сайты с сотнями страниц. Разрабатывая на WordPress большие сайты, я сталкивался со многими трудностями, например: структура постоянных ссылок и систематика могут быть ограничены. Хотя в последние годы CMS значительно улучшилась, но все же чувствуется, что это не подходящий инструмент для работы с огромными и сложными сайтами.
Именно здесь MODX предстает во всей красе. Пока WordPress собирает структуру (пользовательские типы постов, систематика, темы) MODX предлагает пустую оболочку, готовую подстроиться под любые ваши потребности.
То, с какой легкостью MODX работает с шаблонами, впечатляет. Не нужно создавать шаблоны с заданным именем файла или размещать их в определенной папке, а синтаксис MODX обеспечивает чистоту и доступность кода.
Освоить MODX несложно.
Во-первых, MODX использует другую терминологию:
- Ресурсы – веб-страницы (ресурсами также могут быть документы, ссылки и проч.)
- Шаблоны
- Переменные шаблона – эквивалент пользовательских полей в WordPress
- Чанки – повторяющаяся на разных страницах HTML- разметка (например: шапка, подвал, боковые панели и т.д.)
- Сниппеты – динамические куски PHP кода.
Во-вторых, MODX использует свой синтаксис тегов. Поначалу, я думал, зачем вообще разработчики MODX заморачиваются над созданием своего синтаксиса, но попробовав на практике, стало понятно. Он позволяет содержать код шаблона чистым и понятным (по крайней мере, лучше, чем эти ужасные непоследовательные функции WordPress).
Моя команда не испытывала никаких трудностей с последним проектом. Мы использовали этот .gitignore файл для исключения всего, кроме папок assets и core.
В базе данных не хранятся пути к файлам, поэтому можно запросто перемещать базы данных во время разработки.
Как я уже отмечал в этой статье, изучить MODX несложно. Некоторое время займет привыкание к терминологии и способам реализации тех или иных вещей.
Документация достаточно хорошая, хотя в поисках ответов на некоторые вопросы вам придется постараться. Шансы найти ответ по возникшей проблеме в WordPress, вероятно, в несколько раз выше, т.к. численность сообщества MODX поменьше.
Тем не менее, я нашел сообщество в Твиттере, которое оказалось очень полезным. Отправив несколько вопросов группе #MODX, я каждый раз получал хотя бы один ответ, который направлял меня в нужном русле.
Процесс установки MODX более сложный, чем у WordPress. Например, чтобы установить систему локально, я клонировал наш репозиторий, затем скопировал туда файлы MODX, настроил файлы конфигурации, запустил установку, подправил некоторые файловые разрешения и снова запустил установку. По сравнению с WordPress, поднятие и запуск MODX немного витееваты.
Пока я еще новичок в MODX и должен многое изучить, в конечном итоге, я понимаю, что нашел добротную и надежную CMS, предлагающую гибкость, которая мне нужна.
Я без сомнений могу порекомендовать ее для бизнеса с большими веб-сайтами на сотни страниц. И уже с нетерпением жду погружения в следующий MODX проект…
Комментарии от переводчика
- Автор статьи выделяет две версии MODX: Revolution и Modxcloud, между тем как официальное разделение происходит на Revolution и Evolution.
Версия MODX Revolution рекомендуется к использованию всеми пользователями, включая новичков, это современная, надежная система. Совершенно новый API базы данных на основе xPDO обеспечивает эффективный и простой способ чтения, создания и редактирования всех MODX объектов. С помощью одного простого запроса можно манипулировать данными нескольких MODX таблиц.
Версия MODX Evolution также достаточно надежна и стабильна, постоянно обновляется, но является уже устаревшей, и подходит для сайтов, которые уже работают на ней или для тех веб-хостов, где ограничена оперативная память 8M или 16M, т.к. для Revolution требуется минимуму 32M.
Что касается Modxcloud, то это дополнительный сервис от команды MODX — виртуальный хостинг на базе уже встроенной самой последней версии MODX Revolution. Хостинг рассчитан на серьезные проекты с большой нагрузкой на сервер, хотя есть возможность выбрать бесплатный вариант размещения (очень даже неплох для получения опыта работы с MODX). Разместив сайт на MODXcloud, процесс обновления в дальнейшем происходит по клику, можно сказать, вопрос обеспечения безопасности сайта здесь вне конкуренции. - Когда автор говорит о хорошей документации, речь, конечно, идет о англоязычной версии.
Тем не менее, русскоговорящих сайтов по системе MODX сейчас довольно много, так что разработчики не будут одиноки. - Автор описывает трудности установки MODX на локальный сервер, но на самом деле все гораздо проще: сервер с установленным PHP и cgi не досаждает с вопросами доступа и процесс установки длится 3-5 минут.
А вообще, разработчики MODX рекомендуют пользоваться расширенным дистрибутивом установки (advanced вместо traditional), что на порядок повышает безопасность вашей системы: вы можете ядро системы установить в папку, недоступную из веба, а папки бэк-энд менеджера и коннекторов переименовать как вам угодно.
Настройка прав доступа для контент-менеджера в MODX Revolution
Всем привет! Сегодня мы рассмотрим настройку и разграничение прав в MODx Revolution. Создадим нового пользователя manager, ограничим его как следует и назначим соответствующие права на редактирование ресурсов и файлов.
Поделиться
Твитнуть
Поделиться
Класснуть
Запинить
Полный алгоритм действий по настройке прав контент менеджера MODx
1. Создание нового пользователя и назначение прав
- Переходим в меню: «Настройки» > «Контроль доступа»
- Переходим на вкладку «Политики доступа»
- Копируем «Content Editor», редактируем и называем новую политику «Менеджер»
- Устанавливаем разрешения:
- Установить галку «Изменять права доступа (chmod) к каталогам»
- Установить галку «Создавать каталоги в файловой системе»
- Установить галку «Получать список подкаталогов для каталога в файловой системе»
- Установить галку «Переименовывать каталоги в файловой системе»
- Установить галку «Создавать файлы»
- Установить галку «Смотреть список файлов в определенном каталоге»
- Установить галку «Использовать диспетчер файлов»
- Установить галку «Удалять файлы»
- Установить галку «Видеть дерево файлов в левой навигационной панели»
- Установить галку «Изменять файлы»
- Установить галку «Загружать файлы в папку»
- Установить галку «Просматривать содержимое файла»
- Установить галку «Использовать пакеты в системе управления пакетами»
- Установить галку «Использовать страницу «Поиск»»
- Сохранить.
- Переходим в меню: «Настройки» > «Контроль доступа»
- Переходим на вкладку: «Группы пользователей & Пользователи»
- Создаем новую группу пользователей и задаем имя «Контент менеджеры»
- Устанавливаем в окне новой группы пользователей контексты web, mgr
- Политика бэкэнда в окне новой группы: «Менеджер» + Сохранить
- Новая группа пользователей «Контент менеджеры» > Редактировать
- Переходим на вкладку: «Права доступа»
- На вкладке «Доступ к контекстам» редактируем mgr, web по очереди
- mgr, web > редактировать, устанавливаем «Политика доступа» как «Менеджер» + Сохранить
- Переходим в меню «Управление» > «Пользователи» и создаем нового пользователя по кнопке «Новый пользователь»
- Имя manager, указываем E-mail менеджера, устанавливам радиобаттон ниже как «Я укажу пароль сам» и задаем пароль
- Переходим на вкладку «Права доступа» > «Добавить пользователя в группу»
- Группа пользователей: «Контент Менеджеры», Роль: «Super User»
- Установить чекбокс «Активный» + Сохранить
- Переходим в меню «Управление» > «Перезагрузить права доступа»
2. Ограничения на просмотр файловой системы
2.1. Добавляем источник файлов
- Переходим в меню: «Медиа» > «Источники файлов»
- Скопируем «Filesystem»
- Отредактируем скопированный источник
- Название: «Images»; basePath, baseUrl: «assets/images/»
- Переходим в меню: «Настройки» > «Контроль доступа»
- Отредактируем группу пользователей «Контент менеджеры» правой кнопкой мыши
- Переходим на вкладку: «Права доступа» > «Доступ к источнику файлов» и добавим новый источник по кнопке «Добавить источник файлов»
- Источник: Images, Минимальная роль: Member — 9999, Политика доступа: Media Source Admin
- Сохранить; Меню: «Управление» > «Очистить кэш»; Меню: «Управление» > «Перезагрузить права доступа»
2.2. Удаляем источник «Filesystem» для manager
- Переходим в меню: «Медиа» > «Источники файлов»
- Filesystem > Редактировать
- Переходим на вкладку: «Права доступа», нажимаем «Добавить группу пользователей»
- Группа пользователей: «Administrator», Минимальная роль: «Super User — 0», Политика: «Media Source Admin» + Сохранить
- Переходим в меню: «Медиа» > «Источники файлов»
- Images > Редактировать
- Переходим на вкладку: «Права доступа», нажимаем «Добавить группу пользователей»
- Группа пользователей: «Administrator», Минимальная роль: «Super User — 0», Политика: «Media Source Admin» + Сохранить
3. Управление группами ресурсов
- Переходим в меню: «Содержимое» > «Группы ресурсов»
- Создать группу ресурсов
- Имя: «Администратор», Контексты: «web,mgr»
- Установить галку «Автоматически дать доступ группе Administrator»
- Добавить элементы в новую группу «Администратор», которые мы хотим скрыть от менеджера
- Сохранить; Меню: «Управление» > «Очистить кэш»; Меню: «Управление» > «Перезагрузить права доступа»
Премиум уроки от WebDesign Master
Другие уроки по теме «MODx»
(MODX)EvolutionCMS ManagerManager
Плагин позволяет настраивать интерфейс панели управления MODX. Он позволяет переименовывать, скрывать, перемещать поля, вкладки, секции, интегрировать карты Google, Яндекс и многое другое. И всё это настраивается для документов с необходимыми шаблонами и необходимых ролей пользователей. Абсолютная власть! 😉
Список изменений
- TV с типом «custom_tv» в массиве «$mm_fields» имеют тип «textarea».
- Для получения имён таблиц БД испольуется «$modx→getFullTableName».
- Исправлено выставление высоты для контейнера «#loadingmask».
- Лишние элементы массива «$mm_fields», оставленные для обратной совместимости с древними продуктами, удалены.
- Изменена структура внутренней переменной «$jsUrls».
- Файл «default.mm_rules.inc.php» удалён, он только вызывает лишнюю путаницу.
- Функция «getTplMatchedFields» обновлена до 1.0.2:
- Для обнаружения полей документа используется «$mm_fields» вместо «ddTools:$documentFields».
- Функция «prepareSectionId» обновлена до 1.1:
- Добавлена поддержка секции «content».
- Добавлена поддержка секции «tvs».
- Функция «makeSqlList» обновлена до 1.0.2:
- Вместо «mysql_real_escape_string» используется «$modx→db→escape».
- Функция «tplUseTvs» обновлена до 1.2.1:
- Для запросов используется «$modx→db→select» вместо «$modx→db→query».
- Незначительные изменения.
- «$.ddMM» обновлён до 1.2.1:
- Для каждого поля документа в «$.ddMM.fields» добавлен jQuery элемент.
- Метод «$.ddMM.moveFields» обновлён до 1.1:
- jQuery-элемент поля не вычисляется, а просто берётся из «$.ddMM.fields».
- Поле «content» теперь корректно перенесётся в любую секцию.
- Незначительные изменения.
- Библиотека «ddTools» обновлена до 0.12.
- Библиотека «jQuery.ddTools» обновлена до 1.8.6.
- Виджет «mm_ddHTMLCleaner» обновлён до 1.0.4.
- Виджет «mm_ddSetFieldValue» обновлён до 1.1.
- Виджет «mm_ddAutoFolders» обновлён до 1.2.
- Виджет «mm_default» обновлён до 1.2.
- Виджет «mm_widget_showimagetvs» обновлён до 1.2.1.
- Виджет «mm_changeFieldHelp» обновлён до 1.1.2.
- Виджет «mm_hideFields» обновлён до 1.1.2.
- Виджет «mm_renameField» обновлён до 1.2.1.
- Виджет «mm_ddGMap» обновлён до 1.2b.
- Виджет «mm_widget_tags» обновлён до 1.1.3.
- Виджет «mm_ddMultipleFields» обновлён до 4.5.1.
- Виджет «mm_ddResizeImage» обновлён до 1.3.5.
- Виджет «mm_hideSections» обновлён до 1.2.1.
- Виджет «mm_renameSection» обновлён до 1.2.1.
- Прочие незначительные изменения.
Обновление
- Удалите сам плагин ManagerManager.
- Удалите все файлы из папки
assets/plugins/managermanager/
, кроме:mm_rules.inc.php
— config, его удалять не нужно.
- Затем установите заново, следуя нижеописанным инструкциям.
Установка
- Разархивируйте скачанный файл.
- В панели управления сайтом создайте новый плагин «ManagerManager», вставьте содержимое из файла plugin.txt.
- Во вкладке «Системные события» отметьте следующие галочки:
- OnDocFormRender
- OnDocFormPrerender
- OnBeforeDocFormSave
- OnDocFormSave
- OnDocDuplicate
- OnPluginFormRender
- OnTVFormRender
- В поле «Конфигурация плагина» (на вкладке «Конфигурация») вставьте следующий код:
&remove_deprecated_tv_types_pref=Remove deprecated TV types;list;yes,no;yes &config_chunk=Configuration Chunk;text;
И нажмите кнопку «Обновить параметры». - Скопируйте все файлы из архива (кроме plugin.txt) на сайт (необходимая структура папок и файлов соблюдена в архиве, файлы плагина должны оказаться в /assets/plugins/managermanager).
- Правила для плагина могут задаваться либо в содержимом чанка, либо в файле:
- Если вы хотите редактировать правила в панели управления сайтом, создайте чанк «mm_rules» (или с любым другим именем) и укажите его в параметре плагина «Configuration Chunk» (на вкладке «Конфигурация»).
- Если вы хотите редактировать правила в файле, редактируйте файл /assets/plugins/managermanager/mm_rules.inc.php. Внимание, параметр плагина «Configuration Chunk» должен быть пустым.
Внимание, необходимо отключить плагин «ShowImageTVs» (если он у вас есть) и использовать вместо него виджет mm_widget_showimagetvs.
Виджеты
Все виджеты уже содержатся в архиве, ничего дополнительно устанавливать не нужно, всё хорошо 😉 По ссылкам ниже вы найдёте документацию и примеры использования.
Ограничение ввода данных
Установка необходимых значений
Изменение названий и подсказок
Расширение функционала ввода данных
Работа с секциями
Работа с вкладками
Карты
Прочее
Смотрите также
- Модуль для удобного редактирования правил ddMMEditor.
Tagger — Tagger | Документы MODX
Теги, категории и многое другое для MODX!
Надежная и производительная система управления тегами. Краткое описание многих, многих функций:
- Протестировано с использованием до миллиона тегов
- Раскрывающееся меню с разбивкой на страницы и вперед для удобного ввода тегов
- Типы ввода поля со списком или поля тега
- При необходимости автоматически удалить неиспользуемые теги из базы данных
- Необязательно ограничить создание тегов для CMP, а не для ввода
- При желании используйте облако Auto-Tag для ввода
Отображение и список: все теги, теги из указанной группы (групп), пропуск неиспользуемых тегов, ресурсы с заданным тегом и т. Д.Предоставляет getResources с условием & where, чтобы все возможности getResources по созданию шаблонов и сортировке были у вас под рукой.
Установка
Установите через Управление пакетами или загрузите пакет из репозитория MODX Extras
FURL тегов в настоящее время не работают при использовании каких-либо расширений ресурсов (.html, …), кроме /. Измените расширение на / хотя бы на том ресурсе, где вызывается фрагмент TaggerGetResourcesWhere.
- Контент -> Типы контента -> HTML (.html) -> /
Группы
После установки вам нужно будет настроить несколько групп. Группы представляют собой поля, которые будут добавлены на вашу панель ресурсов. Откройте меню компонентов, найдите Tagger и перейдите на вкладку Groups . Добавить новую группу.
** ПРЕДУПРЕЖДЕНИЕ ** Убедитесь, что псевдоним группы не соответствует ни одному псевдониму ресурса, иначе ресурс с таким же псевдонимом будет недоступен.
ОПЦИИ ДЛЯ ГРУПП:
Опция | Обязательно? | Описание |
---|---|---|
Имя | требуется | Метка поля, которое будет добавлено в панель ресурсов |
Описание | опционально | Описание отображается при наведении курсора |
Псевдоним | опционально | Если не заполнено, будет сгенерировано автоматически.Используется в FURL. |
Тип поля | требуется | Поле тега — поле множественного выбора, поле со списком — классическое поле выбора одного элемента |
Место | требуется | Где будет отображаться эта группа. Варианты: На вкладке, Над содержимым, Под содержимым, Нижняя страница, В разделе телевизоров |
Положение вкладки Tagger в секции TV | опционально | Если не заполнено, будет использовано 9999. Положение группы Tagger на панели вкладок TV.Используйте 0, чтобы сначала сделать группу Tagger. |
Удалить неиспользуемые теги | опционально | Если установлено значение да , все теги, которые не назначены хотя бы одному ресурсу, будут удалены из базы данных. |
Разрешить новые теги из поля | опционально | Если установлено значение да , пользователи смогут добавлять новые теги из поля. Установка без может быть полезна, например, для списка категорий |
Разрешить пустой | опционально | Если установлено значение no , поле будет помечено как обязательное, и пользователям нужно будет выбрать хотя бы один тег перед сохранением ресурса |
Разрешить тип | опционально | Если установлено значение no , пользователи не смогут вводить текст в поле.При нажатии на поле отобразится список доступных тегов. |
Показать автотег | опционально | Если установлено значение да , все теги будут отображаться под полем. Пользователи смогут щелкнуть по ним, чтобы выбрать / отменить выбор. Доступно только для поля Tag. |
Скрыть ввод | опционально | Может использоваться только с Показать автометку . Скроет поле ввода и назначит кнопку, поэтому пользователи смогут нажимать только на существующие теги. |
Предел тегов | опционально | Ограничит количество тегов, которые могут выбирать пользователи. Установка в 0 позволит выбрать бесконечное количество тегов. |
Показать для шаблонов | требуется | Список разделенных запятыми шаблонов ID s, для которых эта группа должна быть доступна для редактирования. |
Изменение меток мест размещения тегов
Системные настройки в пространстве имен Tagger доступны для следующих настроек: tagger.place_in_tab_label, tagger.place_tvs_tab_label, tagger.place_above_content_label, tagger.place_below_content_label, tagger.place_bottom_page_label
Вы можете изменить их значение на текст или ключ словаря. Если вы хотите иметь другое имя на основе шаблона ресурса, вы можете использовать следующую нотацию:
1 == Этикетка для шаблона с ID 1 || 2 == Этикетка для шаблона с ID 2
Метка по умолчанию: tagger.tab.label
Базовое использование
TaggerGetTags
Этот фрагмент позволяет вам перечислить теги для ресурсов, групп и всех тегов.
НЕДВИЖИМОСТИ:
Объект | Тип | Обязательно? | Описание | По умолчанию |
---|---|---|---|---|
и ресурсы | строка | опционально | Список ресурсов, разделенных запятыми, для которых будут перечислены теги | |
и группы | строка | опционально | Список групп тегов, разделенных запятыми, для которых будут перечислены теги | |
и родители | внутренний | опционально | Список идентификаторов ресурсов, разделенных запятыми, дочерние элементы которых должны быть просканированы для создания списка тегов | |
и rowTpl | строка | опционально | Имя блока, который будет использоваться для каждого тега.Если чанк не указан, будет отображен массив с доступными заполнителями | |
и tpl_N | строка | опционально | Имя блока, который будет использоваться для каждого N-го тега | |
& outTpl | строка | опционально | Имя блока, который будет использоваться для упаковки всех тегов. Если чанк не указан, теги будут отображаться без оболочки. Заполнитель: [[+ теги]] | |
и сепаратор | строка | опционально | Разделитель строк, который будет использоваться для разделения тегов | |
и предел | внутренний | опционально | Предельное количество возвращаемых тегов | 0 |
и офсет | внутренний | опционально | Смещение вывода на это количество тегов | 0 |
и totalPh | строка | опционально | Заполнитель для вывода общего количества тегов независимо от & limit и & offset | tag_total |
и цель | внутренний | опционально | Идентификатор ресурса, который будет использоваться для создания URI для тега.Если идентификатор не указан, будет использоваться текущий идентификатор ресурса | текущий ресурс |
& показать | внутренний | опционально | Если установлено значение 1, теги, которые не назначены какому-либо ресурсу, также будут включены в вывод. | 0 |
и toPlaceholder | строка | опционально | Если установлено, вывод будет возвращен в виде заполнителя с заданным именем | |
& показать удалено | внутренний | опционально | Если установлено значение 1, теги, которые назначены только удаленным ресурсам, также будут включены в вывод. | 0 |
& показатьНеопубликованный | внутренний | опционально | Если установлено значение 1, теги, назначенные только неопубликованным ресурсам, также будут включены в вывод. | 0 |
и контексты | строка | опционально | Если установлено, будут отображаться только теги для ресурсов в заданном контексте.Контексты можно разделять запятой | |
и wrapIfEmpty | внутренний | опционально | Если установлено значение 1, outTpl будет использоваться, даже если не будет тегов для отображения. | 1 |
и перевод | внутренний | опционально | Если установлено, group_name_translated и group_description_translated будут добавлены в качестве заполнителей в rowChunk | 0 |
и отсортировать | строка | опционально | Параметры сортировки в JSON.Пример {«tag»: «ASC»} или несколько вариантов сортировки {«group_id»: «ASC», «tag»: «ASC»} |
ВЫХОДНЫЕ МЕСТОПОЛОЖЕНИЯ И ПРИМЕРНЫЕ ЗНАЧЕНИЯ:
[[+ id]] => 1
[[+ tag]] => Новости
[[+ alias]] => новости
[[+ группа]] => 3
[[+ group_id]] => 3
[[+ group_name]] => Тип носителя
[[+ group_field_type]] => тэг-комбо-тэг
[[+ group_allow_new]] => 0
[[+ group_remove_unused]] => 0
[[+ group_allow_blank]] => 1
[[+ group_allow_type]] => 0
[[+ group_show_autotag]] => 0
[[+ group_show_for_templates]] => 21
[[+ cnt]] => 1
[[+ uri]]
[[+ idx]] = Число, начиная с единицы для каждого тега
[[+ active]] => 1 (1/0 в зависимости от того, активен текущий тег или нет)
ПРИМЕР ИСПОЛЬЗОВАНИЯ:
// Получить теги для всех ресурсов, включая неиспользуемые теги
[[TaggerGetTags? & showUnused = `1`]]
// Получаем теги из групп 1 и 3 для всех ресурсов
[[TaggerGetTags? & groups = `1,3` & rowTpl =` tag_links_tpl`]]
// Получаем теги для текущего ресурса
[[! TaggerGetTags? & resources = `[[* id]]` & rowTpl = `tag_links_tpl`]]
// Получить теги для текущего ресурса в getResources tpl
[[! TaggerGetTags? & resources = `[[+ id]]` & rowTpl = `tag_links_tpl`]]
Как перевести группы
Допустим, у нас есть группа с именем Tags и псевдонимом tags .Чтобы перевести название и / или описание этой группы, нам нужно будет создать новые словарные статьи в определенном формате.
- Управление открытой лексикой
- Выберите Tagger namespace и custom тему
- Добавьте новую запись словаря в это пространство имен и тему с ключом: tagger.custom. «Group_alias» (в этом примере это будет tagger.custom.tags)
- Если вы хотите перевести описание, добавьте еще одну словарную статью с ключом: tagger.custom. «group_alias» _desc (в данном примере это tagger.custom.tags_desc)
- Если вы хотите использовать эти переводы также во внешнем интерфейсе, вызовите TaggerGetTags с опцией & translate =
1
([[TaggetGetTags? & Translate =
1]]
), будут доступны новые заполнители (group_name_translated, group_description_translated)
TaggerGetResourcesWhere
Этот фрагмент кода создает SQL-запрос, который можно использовать в условии WHERE в фрагменте
getResourcesНЕДВИЖИМОСТИ:
Объект | Тип | Обязательно? | Описание | По умолчанию |
---|---|---|---|---|
и теги | строка | опционально | Разделенный запятыми список псевдонимов тегов (НЕ имен и идентификаторов), для которых будет создан запрос ресурсов.По умолчанию будут загружены теги из параметра GET | |
и группы | строка | опционально | Список групп тегов, разделенных запятыми. Только из этих групп будут разрешены теги | |
и где | строка | опционально | Исходное свойство getResources WHERE. Если вы использовали свойство WHERE в текущем вызове getResources, переместите его сюда. | |
и подобныеСравнение | внутренний | опционально | Если установлено значение 1, теги будут сравниваться с использованием LIKE, которое будет соответствовать частичным строкам, а не только точным совпадениям. | 0 |
& тегПоле | строка | опционально | Поле, которое будет использоваться для сравнения с заданными тегами. | |
Если вы хотите сопоставить с «полным текстом» введенного вами имени тега, его необходимо установить на «tag». | псевдоним | |||
и матчВсе | внутренний | опционально | Если установлено значение 1, ресурс должен иметь все указанные теги (совпадение «И»). | |
Если установлено значение 0 или не указано, он может соответствовать любому из тегов (совпадение «ИЛИ»). | 0 | |||
и поле | строка | опционально | Поле modResource, которое будет использоваться для сравнения с назначенным идентификатором ресурса | id |
ПРИМЕР ИСПОЛЬЗОВАНИЯ:
[[! GetResources?
& where = `[[! TaggerGetResourcesWhere?
& tags = `Книги, Транспорт`
& where = `{" isfolder ": 0}`]] `
]]
.GitHub — modxcms / Tagger
перейти к содержанию Зарегистрироваться- Почему именно GitHub?
Особенности →
- Обзор кода
- Управление проектами
- Интеграции
- Действия
- Пакеты
- Безопасность
- Управление командой
- Хостинг
- мобильный
- Истории клиентов →
- Безопасность →
- Команда
- Предприятие
- Проводить исследования
- Изучите GitHub →
Учитесь и вносите свой вклад
- Темы
- Коллекции
- В тренде
- Учебная лаборатория
- Руководства с открытым исходным кодом
Общайтесь с другими
- События
SmartTag — SmartTag | Документы MODX
Описание
SmartTag — это система тегов для MODX Revolution, предназначенная для замены оригинального телевизора с функцией автоматической пометки MODX.
Благодаря наличию собственных таблиц, SmartTag может управляться проще по сравнению с обычным автоматическим тегом TV, который хранится в виде значений, разделенных запятыми. SmartTag использует поле со списком AJAX для телевизора при добавлении нового тега и CMP для вывода списка всех тегов и управления ими.
Из CMP вы можете переименовать тег или полностью удалить его из системы на всех ресурсах.Вы можете преобразовать существующие телевизоры с функцией автоматической пометки в SmartTag TV или вернуть SmartTag обратно к другому типу тегов.
История
SmartTag был впервые написан goldsky и выпущен 28 марта 2014 года.
Соавтор: Адам Винтл.
Скачать
Его можно загрузить из менеджера MODX Revolution через Package Management или из репозитория MODX Extras здесь: http://modx.com/extras/package/smarttag
Исходный код и сценарий сборки также доступны на GitHub: https: // github.com / goldsky / SmartTag
Ошибки и запросы функций
Об ошибках, проблемах и запросах функций можно сообщать в репозитории GitHub, который находится здесь: https://github.com/goldsky/SmartTag/issues
Системные настройки
Имя | Описание | По умолчанию | Версия |
---|---|---|---|
smarttag.limit | Ограничение количества тегов при их перечислении в Custom Manager Page | 50 | |
smarttag.use_filter | (Необязательно) Используется ли функция MODX cleanAlias и строчная буква символа при вставке нового тега. | ||
Установите значение false, если теги состоят из нелатинских символов. | правда | 1.0.2-пл |
Переменная шаблона
При создании телевизора необходимо выбрать правильный тип входа и выхода.
Опции типа ввода
В параметрах типа ввода они точно такие же, как параметры автоматической пометки, за исключением queryLimit .
Значение этого queryLimit по умолчанию — 20.
(v. 1.0.4-pl) Если вы хотите, чтобы выпадающий тег с опережением ввода TV получал все теги независимо от области действия телевизора, установите для Global Tags значение true.
Опции типа выхода
В опциях типа вывода они адаптируют типы вывода Delimiter и URL TV.
Разница в том, что при добавлении ссылки для тегов вам необходимо определить «href» ссылки. Это необходимо для ссылки.
Содержимое может быть [[~ pageId]]
или http: // www.domain.com
Если Тип вывода не установлен, выводом будут необработанные значения, разделенные двойными конвейерами «||».
Теги чувствительны к регистру! Если они вам нужны в нижнем регистре, просто переименуйте их на странице Custom Manager.
Добавить новый тег
Вы можете добавить новый тег или использовать уже существующие.
Если вы активируете поле, вы можете ввести тег прямо в это «текстовое поле».
Если вы не нажали кнопку [ENTER] в течение 1 секунда , выпадающий список предложит вам любой аналогичный тег, основанный на нем, или просто закроется, если ничего не найдено.
Выпадающий список заставит вас выбрать существующий, если в нем перечислены теги.
Если вы просто хотите добавить новый тег, просто нажмите [ENTER] перед 1 секунда .
Пользовательский менеджер Страница
TagCloud
CMP используется для упрощения управления тегами менеджером.
Если нажать кнопку, то откроется новая вкладка, содержащая все ресурсы, использующие этот выбранный тег.
Здесь вы можете затем удалить, переименовать или удалить тег из выбранных ресурсов.
Заголовки ресурса являются ссылками, поэтому по ним можно щелкнуть (или щелкнуть ctrl + щелчком или щелкнуть средней кнопкой мыши), чтобы открыть его.
Конвертер
На второй странице есть утилита-конвертер для преобразования существующих типов тегов в SmartTag или возврата SmartTag TV обратно к другим типам тегов.
Когда выбран SmartTag TV, его также можно синхронизировать, чтобы получить все значения из связанных ресурсов и сохранить их в базе данных SmartTag.
Фрагмент
SmartTag также предоставляет фрагмент для перечисления тегов на основе некоторых фильтров.
smarttag Теги
Имя | Описание | Тип значения | Значение по умолчанию | с версии |
---|---|---|---|---|
документы | Значения идентификаторов документов, разделенных запятыми | Строка | 1.0.0-beta1 | |
parentIds | Значения идентификаторов родительских документов, разделенные запятыми | Строка | 1.0.0-beta5 | |
всеТеги | Показать все теги | Строка | 1.0,0-бета5 | |
tvNames | Явно определите, какие телевизоры. Предварительные требования: и docIds или и parentIds | Названия телевизоров, разделенных запятыми | 1.0.0-пл | |
includeEmptyTags | Вы хотите включать теги без ресурсов? | Логическое: 0 | 1 | 0 |
includeHiddenDocs | Хотите добавить теги к скрытым ресурсам? | Логическое: 0 | 1 | 0 |
предел | Максимальное количество списка.0 будет проигнорирован. Как и предполагалось, есть опция «без ограничений». Если вы хотите перечислить все, просто установите ограничение в 1000000 (миллион), но вы несете ответственность за любые проблемы с сервером. | Целое число | 10 | 1.0.0-beta1 |
phs Префикс | Префикс для заполнителей | Строка | смарт-тег | 1.0.0-beta1 |
сорт | Множественная сортировка через запятую. Формат: направление поля, направление поля.Обратите внимание на пространство между ними. | Строка | count desc, tag asc | 1.0.0-beta1 |
tpl Артикул | Имя блока для шаблона элемента вывода. @BINDING включен (например: @FILE: [path / to / file.tpl]). | Строка | smarttagtags.item | 1.0.0-beta1 |
т / л Упаковщик | Имя чанка для шаблона оболочки вывода. @BINDING включен (например: @FILE: [path / to / file.tpl]). | Строка | смарт-тегов.обертка | 1.0.0-beta1 |
Чтобы перечислить теги, вы ДОЛЖНЫ предоставить либо docIds, либо parentIds, либо свойства (параметры) allTags.
.