В прошлых статьях мы рассмотрели основные принципы работы ACL в Joomla 1.6+ и пример создания контента во фронтэнде сайта для учеников и учителей. Ученики, войдя в систему, видели информацию, предназначенную для них, а учителя видели оба типа контента: для учеников и учителей.
Все работало прекрасно, но теперь нам нужно нечто большее. Что если нам нужно своя приветственная страница для каждой группы пользователей, входящей на сайт? Также в зависимости от входа на сайт – с помощью модуля или ссылки меню, результат будет отличаться.
Модуль "Вход на сайт"
Модуль логина доступен на домашней странице Joomla 2.5 вместе или без установленных демо данных. При входе с использованием этого блока, модуль логина перенаправит вас по умолчанию на домашнюю страницу.
Можно изменить настройки, отредактировав модуль. Зайдите в "Расширения - Менеджер модулей - Login" (Вход на сайт). Посмотрите на опции конфигурации в правой части экрана:
В опции "Перенаправление при входе" можно установить, куда будет перенаправляться пользователь после входа на сайт. Из выпадающего меню можно выбрать любую страницу, связанную с помощью меню на вашем сайте. "По умолчанию" означает стандартную страницу сайта (обычно домашнюю страницу).
Могут возникнуть затруднения, если блок входа на сайт расположен внизу страницы и пользователю придется использовать прокрутку, а также, если он есть только на домашней странице (страница, куда перенаправляется пользователь после входа на сайт). Пользователь авторизуется и видит ту же самую страницу. Нужно прокрутить страницу вниз для того, чтобы увидеть, что блок входа теперь имеет опцию выхода. К сожалению, такое случается у пользователей с разрешением монитора 1024x768, использующих сайт Joomla с демо данными.
Ссылка в меню для входа на сайт
Можно также создать ссылку в меню на страницу, содержащую форму входа на сайт. Для этого зайдите в "Меню - Main Menu (или выберите ваше меню) - Создать пункт меню". Нажмите "Выбрать" рядом с "Создать пункт меню", далее "Форма авторизации", которая находится под пунктом "Менеджер пользователей". Посмотрите на правую часть экрана конфигурации и вы увидите следующее:
Экран конфигурации логина не перенаправляет пользователя по умолчанию на какую-то страницу. Вместо этого, он перенаправляет его на страницу профиля. Для настройки перенаправления, введите URL нужной страницы в поле "Перенаправление после входа". Вот как пользователь увидит свою страницу при стандартных настройках:
Три способа сделать вход/выход пользователя более удобным
1. Используйте одинаковое перенаправление
Вы используете модуль входа на сайт и ссылку для входа на своем сайте? Убедитесь, что оба способа входа перенаправляют на одну и ту же страницу. Предложите выбор из модуля входа на сайт или ссылки для входа на сайт. Убедитесь, что страница, на которую будет перенаправлен пользователь выбрана логично. Также убедитесь, что модуль входа на сайт или ссылка для входа перенаправляют на ту же страницу при выходе. Если используется всего один способ входа на сайт, проверьте страницы для перенаправления, чтобы убедиться, что пользователю понятно, что он авторизовался на сайте или же вышел из него.
2. Настройте целевую страницу входа на сайт для определенной группы пользователей
Что если нужно, чтобы ученики видели при входе в систему одно сообщение, а учителя – другое? И если администратору сайта необходимо видеть сообщения для учителей, учеников и свое собственное? В Joomla есть возможность перенаправления только на одну страницу и все будут видеть одну и ту же страницу. Как же быть, если у нас есть всего одна страница? Ответ - использйте Joomla ACL.
Вот, как бы я настроил целевую страницу входа на сайта для трех разных групп:
- Настройте категорию для целевой страницы входа на сайта и выставьте уровень доступа Registered (все, кто находится в этой категории смогут видеть контент);
- Добавьте статью в категорию. Внутри матерала не вводите текст, а введите три позиции модуля с помощью [loadposition]. Например: [loadposition student], [loadposition teacher], [loadposition admin] (не забудьте заменить символы "[ ]" на "{ }");
- Создайте модули для каждого уровня доступа с позициями "student" для учеников, "teacher" для учителей и "admin" для администратора (или соответственно вашему коду loadposition). Это могут быть HTML-код модули, содержащие контент, настроенный под определенную группу пользователей;
- Когда посетитель зайдет на сайт, он увидит модуль, настроенный в зависимости от уровня доступа пользователя.
А теперь более подробные инструкции, как этого достичь.
Шаг 1: Убедитесь, что пользователи входят в группу зарегистрированных.
Пользователи могут быть назначены в одну или несколько групп. Проверьте, чтобы одна из групп была для зарегистрированных пользователей и что все вошедшие в систему могут видеть общий контент. Гости, т.е. не зашедшие в систему, не могут видеть контент, предназначенный для зарегистрированных пользователей. (подробности в статье Joomla ACL: Уровни доступа)
Шаг 2: Создайте категорию, материал и пункт меню для целевой страницы входа на сайт.
Создайте категорию для целевой страницы входа на сайт, например, с именем "Страница приветствия". Установить уровень доступа в категории Registered (группы учеников и учителей должны иметь уровень доступа Registered).
Создайте в категории материал. В материале должны быть позиции модуля для каждого уровня доступа:
Создайте ссылку на меню в Менеджере меню, выберите "Материал" в качестве типа и выберите ваш материал целевой страницы входа на сайт. Установите уровень доступа Registered для пункта меню.
Если вы не хотите, чтобы ссылка отображалась в меню, вы можете использовать технику скрытой ссылки для того, чтобы спрятать ее.
Шаг 3: Создайте модули.
Создайте свои отдельные HTML-код модули в Менеджере модулей. Для каждого модуля назначьте соответствующий уровень доступа и позицию. Например, создайте модуль для уровня доступа для учеников с позицией "student", один с уровнем доступа для учителей с позицией "teacher", один с уровнем доступа для администратора с позицией "admin" и еще один для уровня доступа зарегистрированных пользователей со позицией "registered".
После входа в систему пользователь увидит материал, потому что он является зарегистрированным и имеет к ней доступ. Модули, которые они смогут увидеть, будут определяться уровнем доступа самого модуля.
3. Сделайте заметную кнопку выхода из системы
При входе на сайт Joomla, модуль входа на сайт превращается в кнопку выхода из системы. Такой способ хорош, если модуль отображается на всех страницах сайта, но чаще всего он расположен только на одной или нескольких страницах. Таким образом, пользователю придется возвращаться на эту страницу, чтобы выйти из сайта. То же самое и со ссылкой для входа на сайт: нужно будет вернуться на страницу входа на сайт (и там будет написано "Войти", даже если они хотят выйти).
Было бы хорошо, если бы кнопка "Выйти" была на каждой странице. С помощью ACL можно настроить оба эти варианта, которые помогут пользователю лeгче ориентироваться на сайте.
Создание модуля входа на сайт с функцией выхода
Для того чтобы у авторизированного пользователя кнопка "Выход" появлялась на каждой странице сайта, но вы не хотите, чтобы на них отображался блок с логином, сделайте следующее.
Создайте второй модуль логина. Назначьте уровень доступа зарегистрированных пользователей и настройте так, чтобы он появлялся на всех страницах. Этот модуль появится только у залогиненных пользователей, а так как они уже сошли в систему, в нем будет отображаться кнопка выхода. Если они нажмут на неё и выйдут, то модуль больше не будет отображаться.
Создание ссылки для выхода из сайта
Если вы предпочитаете ссылку для выхода из сайта, но хотите, чтобы она появлялась только у залогиненных пользователей, сделайте следующее.
Создайте пункт меню с типом "Форма авторизации". Назовите его "Выйти". Назначьте уровень доступа для зарегистрированных пользователей. Теперь пункт меню появится только у залогиненных пользователей. При нажатии на него, появится страница с кнопкой выхода. Этот способ требует дополнительного клика, но может быть более удобным для некоторых пользователей или просто будет лучше смотреться в сочетании с дизайном каких-то сайтов. Решать вам.
Редакция статьи: Dmitry Rekun (b2z)