Небольшая хитрость с меню пользователя Joomla
Вопросы и ответы / Настраиваем Joomla!
После регистрации и авторизации на сайте пользователю становится доступно «Меню пользователя». Данное меню, помимо ссылки на редактирование параметров пользователя и завершения сеанса работы, содержит еще 2 пункта: «Добавить новость» и «Добавить ссылку». Однако, после регистрации пользователи относятся к группе Registered, которая не имеет прав на добавление новостей, поэтому наличие этих ссылок в пользовательском меню для обычных пользователей создает дополнительную путаницу. Можно конечно удалить эти пункты, но тогда они будут недоступны и для остальных групп пользователей. В этой статье я расскажу как можно решить эту небольшую проблему.
Чтобы решить эту проблему, мы в шаблоне сайта добавим дополнительную область для публикации модуля, которая будет отображаться только для пользователей группы Registered. Затем сделаем копию пользовательского меню из которой исключим пункты «Добавить новость» и «Добавить ссылку» и опубликуем этот модуль в вновь созданной области.
Модификация шаблона
Допустим пользовательское меню опубликовано в области left текущего шаблона. Необходимо сделать так, чтобы область left была видна всем зарегистрированным пользователям кроме группы Registered, а некая дополнительная область (назовем ее registeredusersmenu) была видна только пользователям группы Registered. Как это сделать ? Да очень просто.
Находим в файле index.php вашего шаблона код загрузки модулей области left:
mosLoadModules ( 'left' ); ?>
и заменяем этот код на следующий:
if ($my->usertype == 'Registered') {
mosLoadModules ( 'registeredusersmenu' );
} else {
mosLoadModules ( 'left' );
}
?>
Как это будет работать? Если текущий пользователь принадлежит группе Registered, то произойдет загрузка модулей из области registeredusersmenu в противном случае загрузятся модули опубликованные в области left.
Примечание: если в области left были опубликованы еще какие-то модули, то они не будут отображаться для пользователей группы Registered. Поэтому более правильно будет создать еще одну область в шаблоне, допустим usermenu. И опубликовать меню пользователя по умолчанию в этой области.
Тогда код загрузки модулей будет выглядеть так:
if ($my->usertype == 'Registered') {
mosLoadModules ( 'registeredusersmenu' );
} else {
mosLoadModules ( 'usermenu' );
}
?>
Создаем и настраиваем меню registeredusermenu
- Авторизуемся в адимнистративной панели Joomla
- Создаем дополнительное меню (назовем его registeredusermenu)
- Создаем в registeredusermenu пункты «Ваши данные» и «Выход»
- Выбираем пункт меню Модули->Модули сайта
- В списке модулей сайта выбираем наше новое меню и нажимаем кнопку Изменить
- Устанавливаем уровень доступа Public
- Устанавливаем область публикации registeredusersmenu
- Нажимаем кнопку Сохранить
- Hits: 4085