Кастомизация форм в MODX Revolution
14 апреля 2013, 13:24
В MODX есть интересная возможность — вы можете менять внешний вид формы редактирования ресурсов практически как вам хочется. Причем вы можете сделать разные формы для разных групп пользователей, и даже для разных ресурсов. Можно выбирать разные профили форм для данного ресурса в зависимости от его шаблона, родителя или других свойств.
И для этого нам не придется писать ни одной строчки кода!
Давайте, посмотрим, что, например, можно сделать с формами:
Во первых, уберем лишние пункты верхнего меню в один общий пункт — «Разработчику». Для этого заходим в раздел «Система» -> «Действия», создаем в корне новый пункт меню и перетаскиваем все ненужные пункты туда:
Дальше заходим в раздел «Безопасность» -> «Настройка форм» и создаем новый профиль, например, «Контент-менеджер». Потом нажимаем на нем правой кнопкой мыши и выбираем «Редактировать», переходим на вкладку «Группы пользователей» и добавляем группу, к которой будут применены новые правила.
Далее мы создаем новый набор правил. Их два вида — один для формы создания ресурса, второй — для формы его редактирования (create и update, соответственно). Этих правил может быть несколько — хоть по правилу для каждого ресурса.
После того, как правило будет создано, вы увидите страницу настройки — там три вкладки: Информация о наборе правил, Регионы, Дополнительные поля.
На первой вкладке перечислены стандартные поля ресурса. Их можно отключать или переименовывать. Регионы — это вкладки у ресурса. Вы можете создать новый регион и поместить туда некоторые ТВ-параметры, тогда они будут у ресурса не на вкладке «Дополнительные поля», а на новой вкладе — которую вы укажете. Здесь же можно отключать стандартные вкладки, например, «Группы ресурсов».
На третьей вкладке вы указываете расположение того или иного ТВ-параметра.
Я сделал небольшую шпаргалку по стандартным регионам:
Итак, давайте сразу уберем для пользователя все вкладки, кроме первой. Убираем галочки у регионов: modx-page-settings, modx-panel-resource-tv, modx-resource-access-permissions. Дальше — из стандартных полей оставим только pagetitle и alias. У остальных галочки убираем. Указываем новое название для поля pagetitle: «Заголовок новости» и alias: «Адрес страницы».
После этого переходим на вкладку «Дополнительные поля» и указываем, что ТВ-параметры должны находиться в той или иной области формы (в соответствии со шпаргалкой).
Осталось указать, для каких ресурсов действует это правило — в пункте «Шаблон» указваем, к ресурсам с каким шаблонам применять правило. Если правило для всех шаблонов, то ничего не указываем. И еще есть два пункта: «Ограничивающее поле» и «Ограничивающее значение». Здесь можно указывать остальные поля.
Давайте, укажем, что это правило относится к ресурсам, находящимся в «Новостях» — в пункте «Ограничивающее поле» пишем parent, а в «Ограничивающее значение» id ресурса «Новости», например, 22.
Подскажите, как можно изменить высоту редактора ресурсов? Насколько я понял, это поле с названием modx-resource-content. Причём надо его регулировать не жёстко в пикселах, а до полного заполнения оставшейся высоты экрана.
Дело в том, что modx-resource-content не всегда занимает максимально возможную площадь по высоте, а при редактировании скриптов и таблиц стилей удобно, чтобы оно было как можно больше (вплотную до нижней границы экрана). Там часто остаётся ещё приличная полоса, которая ничем не занята.
И в правом нижнем углу редактора ресурсов нет контрола для растяжения поля редактирования, как в TinyMCE, например.
спасибо за статью.
Мне нужно в плагине сделать
В evo это проще.
В рево есть такой метод — $modx->controller->setProperty('template',3);
Но что-то он не работает. Может я его неверно использую?
Пользуясь случаем, хочу задать ещё один вопрос: решали ли вы такую задачу, как вывод той же статистики Яндекса или Liveinternet в дашбоард? Я знаю, что существует такой плагин для Google Analytics, и всё. И вообще интересует ваше мнение относительно функционала Dashboard, как вы его используете и с какими плагинами.
cdn.joxi.ru/uploads/prod/2014/06/17/148/9b0/211d7b1a2fd3e27ae8d562b1055d816383ca6e4c.jpg
Но это пожалуй и всё, что я могу придумать. :(
Так понимаю без правки кода тут не обойтись?
Т.е. сейчас тв как-то так строятся
То нужно сделать что-то типа
Может есть какие готовые решения для этого, чтобы можно было подсмотреть идею и сделать по подобию? Ну, вроде минишоп хорошо кастомизируются, но там наверняка много всего сложного и т.д. Хотя буду конечно смотреть, но сейчас хочу найти другие варианты для изучения
Всем заранее спасибо!
Есть один вопрос, возможно Вы знаете ответ на него.
Как скрыть от менеджера определенные шаблоны? Скажем у меня 5 шаблонов, а я хочу чтобы менеджер видел только 1.
Спасибо большое
Если же нет, то реально ли как-то убрать пустующую вкладку SEO после переноса TV-полей на страницу контента из вкладки «ДОП.ПОЛЯ»?
Спасибо.
Можно ли это как-то решить с помощью настроек форм и если да, то какое ограничивающее поле должно быть?
Может быть есть другие пути спрятать определенные TV в определенных контекстах?
Нашел в одном видео вот такую формусоздания/редактирования ресурса.
Кастомные поля выделил красным.
На сколько трудоемко сделать также?
Есть ли что почитать по теме?
Я так понимаю, что стандартными средствами MODX этого не добиться?
Заранее спасибо!
Все гораздо проще оказалось!
Но все равно интересует вопрос на сколько трудоемко самому такое сделать для других целей?
Пытаюсь решить задачку: отобразить TV только в одном ресурсе.
Создаю первое правило, где скрываю поле из всех ресурсов, затем второе правило, с ограничивающим полем по ID, где включаю отображение этого поля – не срабатывает. При этом второе правило работает на «скрытие». То есть что-нибудь скрыть (не скрытое в первом правиле) я могу.
Я хочу для админа выводить список пользователей, которые записались на определенное событие. Ну либо что-то подобное. Вроде как это CMF, а вот фреймворковской кастомизации не вижу впритык в описании системы.
Кроме того, можно «вклиниться» в процесс рендера страницы и добавить все, что угодно.
Вот пример, как добавить поле, например, на страницу пользователя: https://modx.pro/howto/8324-i-extended-standard-user-table/#comment-58251
И туда можно передать id текущего документа?
Логотип свой установить например и сделать аутентификацию через hybridauth. Спасибо
Понадобится лишь вmanager/templates и manager/controllers скопировать папку default. Обозвать ее как-то по своему.
А также в manager_theme указать вновь созданную папку с уже вашим кодом, стилями, картинками и прочим.
Подробнее вот тут
Скрин
Там писали в основном разные интересные штучки для ежедневного использования. А сейчас в основном если решение не запаковано в пакет и не размещено в репозитории, о нём молчат, почему-то.
Подскажите где можно основные кнопки ресурсов поправить? (сохранить, копировать, просмотреть, отменить и т.д.) Конкретнее: интересно как отключить возможность «просмотра» у группы пользователей.