Статьи

Небольшая хитрость с меню пользователя 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

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