Небольшая хитрость с меню пользователя

  • 09.01.2006

После регистрации и авторизации на сайте пользователю становится доступно «Меню пользователя». Данное меню, помимо ссылки на редактирование параметров пользователя и завершения сеанса работы, содержит еще 2 пункта: «Добавить новость» и «Добавить ссылку». Однако, после регистрации пользователи относятся к группе Registered, которая не имеет прав на добавление новостей, поэтому наличие этих ссылок в пользовательском меню для обычных пользователей создает дополнительную путаницу. Можно конечно удалить эти пункты, но тогда они будут недоступны и для остальных групп пользователей. В этой статье я расскажу как можно решить эту небольшую проблему.

Чтобы решить эту проблему, мы в шаблоне сайта добавим дополнительную область для публикации модуля, которая будет отображаться только для пользователей группы Registered. Затем сделаем копию пользовательского меню из которой исключим пункты «Добавить новость» и «Добавить ссылку» и опубликуем этот модуль в вновь созданной области.


Модификация шаблона

Допустим пользовательское меню опубликовано в области left текущего шаблона. Необходимо сделать так, чтобы область left была видна всем зарегистрированным пользователям кроме группы Registered, а некая дополнительная область (назовем ее registeredusersmenu) была видна только пользователям группы Registered. Как это сделать ? Да очень просто.

Находим в файле index.php вашего шаблона код загрузки модулей области left:

<?php mosLoadModules ( 'left' ); ?>
и заменяем этот код на следующий:
<?php
	if ($my->usertype == 'Registered') {
		mosLoadModules ( 'registeredusersmenu' ); 
	} else {
		mosLoadModules ( 'left' ); 
	}
?>

Как это будет работать? Если текущий пользователь принадлежит группе Registered, то произойдет загрузка модулей из области registeredusersmenu в противном случае загрузятся модули опубликованные в области left.

Примечание: если в области left были опубликованы еще какие-то модули, то они не будут отображаться для пользователей группы Registered. Поэтому более правильно будет создать еще одну область в шаблоне, допустим usermenu. И опубликовать меню пользователя по умолчанию в этой области.

Тогда код загрузки модулей будет выглядеть так:

<?php
	if ($my->usertype == 'Registered') {
		mosLoadModules ( 'registeredusersmenu' ); 
	} else {
		mosLoadModules ( 'usermenu' ); 
	}
?>


Создаем и настраиваем меню registeredusermenu

  1. Авторизуемся в адимнистративной панели Joomla
  2. Создаем дополнительное меню (назовем его registeredusermenu)
  3. Создаем в registeredusermenu пункты «Ваши данные» и «Выход»
  4. Выбираем пункт меню Модули->Модули сайта
  5. В списке модулей сайта выбираем наше новое меню и нажимаем кнопку Изменить
  6. Устанавливаем уровень доступа Public
  7. Устанавливаем область публикации registeredusersmenu
  8. Нажимаем кнопку Сохранить

Это интересно:

Joomla!® CMS — пожалуй, лучшая система управления контентом с открытым исходным кодом

Joomla! — это больше, чем просто программное обеспечение, это люди, включающие разработчиков, дизайнеров, системных администраторов, переводчиков, копирайтеров, и, что самое главное — простых пользователей.

Мы рады пригласить вас в ряды нашего сообщества!

Скачать Joomla! 3 Документация Joomla! CMS Свернуть

Расширения Joomla

Новости портала

Новое в блогах

Видео