Как перекрыть существующую страницу с помощью модуля Page manager existing pages

Сегодня я расскажу об очень важной особенности при работе с модулем Panels и Page Manager. Любому друпалеру, который работает с модулем Panels, когда нибудь может понадобиться изменить вывод существующей страницы. При попытке переопределить страницу стандартным способом с помощью модуля Page Manager, мы увидим сообщение: "Этот путь уже используется. Система не может заменить существующие пути". С решением данной проблемы нам поможет модуль Page manager existing pages.

Шаг 1. Устанавливаем модуль и после включения идем на страницу admin/structure/pages/existing-pages. Здесь у нас уже имеется одна существующая страница (она добавилась после включения модуля). Для добавления существующей страницы кликаем по ссылке "Добавить", откроется форма добавления, здесь:

  • Метка - любое понятное название. Если название на русском языке, то дополнительно необходимо будет вписать машинное имя;
  • Default context - контекст, который будет загружен на страницу. Если контексты загружать нет необходимости, то можно не заполнять;
  • Синонимы - пути, которые будут перекрыты;
  • Search paths - автокомплит поле, в котором показываются возможные пути на основании того, что мы пишем в это поле. Находим нужный путь, кликаем по нему и он автоматически добавится в поле Синонимы.
Шаг 1. Добавление существующей страницы
Шаг 1. Добавление существующей страницы

После заполнения всех полей жмем кнопку "Сохранить".

Шаг 2. Существующую страницу добавили, теперь необходимо ее включить, для этого идем на страницу admin/structure/pages. Здесь мы видим все страницы. Имена существующих страниц, которые добавлены модулем Page manager existing pages начинаются с "pm_existing_pages-". Находим нашу страницу и включаем её. Дальнейшая работа со страницей ничем не отличается от работы с другими страницами.

Шаг 3. Для того, чтобы вывести содержимое страницы, которую мы перекрыли, необходимо в попапе в списке категорий содержимого выбрать категорию Existing pages и выбрать содержимое Existing page:

Шаг 3. Добавление содержимого существующей страницы
Шаг 3. Добавление содержимого существующей страницы

Шаг 4. Откроется форма с настройками содержимого. В поле Existing page выбираем название нужной нам страницы и нажимаем кнопку "Готово":

Шаг 4. Сохранение содержимого существующей страницы
Шаг 4. Сохранение содержимого существующей страницы

Добавляем по мере необходимости другое содержимое на страницу, сохраняем изменения и наслаждаемся результатом.

Комментарии (6)

Аватар пользователя Татьяна
Татьяна

Отличный урок. Еще с шестого друпал активно пользуюсь панелями, а про этот модуль не знала.
Помогите решить задачу: нужно переопределить страницу регистрации одного из типов профилей.
Использую Profile2, Profile2 regpath.
По вашему рецепту получается вывести страницу регистрации как есть и добавить что-то еще, а надо наоборот, вывести только одно поле (email) и не выводить все поля профиля.
Заранее спасибо.

Аватар пользователя Benya
Benya

Если я правильно понял, то Вам скорее надо альтерить форму и прятать все, что не надо

Аватар пользователя Гена
Гена

У меня не получается подменить страницу user/login.
Я хочу сделать вход на сайт для анонимных пользователей как здесь: http://pronote.lyc-nodier.ac-besancon.fr/parent.html. Фоновое изображение должно меняться по сезонам или его может изменить авторизованный пользователь. При нажатии на изображение появляется/ пропадает всплывающий блок "Вход на сайт". При этом у роли анонимов отключены все права.

Что я сделал: модулем ThemeKey я задал тему Zen для анонимов, отключил в ней все блоки; модулем Redirect 403 to User Login заменил анонимам сообщение 403 на страницу входа на сайт. А вот эту страницу ни как не могу подменить.
Посоветуйте что нибудь, или укажите на возможные ошибки, пожалуйста.

Аватар пользователя Benya
Benya

Вариантов много, но врятли Вам какой то из них подойдет. Я бы все делал своим кодом с использованием панелей или кастомным шаблоном для страницы логина

Аватар пользователя Гена
Гена

А как Вы думаете, почему не срабатывает подмена страницы. И не могли бы Вы описать ваши варианты немного подробней, а то я не совсем понял, что Вы хотели сказать.

Аватар пользователя Benya
Benya

Самый просто способ, подсунуть для страницы логина шаблон page--user--login.tpl.php, в нем убрать всю лишнюю разметку. А дальше работа css + js