...

Маркировка первого и последнего пункта меню в Joomla 1.6 и Joomla 1.7

Честно говоря, я до сих пор не понимаю, почему разработчики Joomla! так и не удосужились сделать по умолчанию в модуле меню. Не смотря на то, что модуль меню в Joomla! версии 1.6-1.7 был значительно переработан и улучшен, все-таки важный и нужный пункт об обозначении первого и последнего пунктов списка меню остался открыт.
Но, к счастью, есть энтузиасты для которых это не совсем и большая проблема.

Лично я в силу того что я верстальщик решал ее с помощью небольшого куска JavaScript кода с использованием встроенной в Joomla! библиотеки Mootolls. Однако, каждый раз делая это, я думал что в случае, если пользователь отключит JS в браузере, то мой метод не сработает, а значит он не 100%. Поэтому, логическим решением являлось то, что нужно передавать класс первому и последнему элементам списка меню с помощь сервера а не клиента. И такое решение нашлось, при создании одного из первых шаблонов для Joomla! 1.6, а в последствии было испробовано и проверено на Joomla! 1.7. Сразу скажу, что решение не придумано мной, я взял его на форуме Joomla!, поэтому ни коим образом не претендую на авторство, а просто лишь хочу поделится им со всеми, кто разрабатывает шаблоны для CMS Joomla!

Итак, для того чтобы добавить нужные классы к первому и последнему пунктам меню Joomla! 1.6-1.7 вам нужно сделать следующее:

1. Добавить в папку /html вашего шаблона шаблон для переопределения разметки модуля меню Joomla! Для этого из папки /modules/mod_menu/tmpl/ скопируйте файлы default.php и index.html в папку переопределения разметки вашего шаблона /templates/your_template_name/html/mod_menu

2. Теперь в фале default.php модуля меню в папке /html вашего шаблона найдите строки

и замените их на следующий код

 $currentitemcount ++;
   if ($item->shallower or $currentitemcount == count($list)) {
      $class .= ' last ';
   }
 
   if ($lastdeeper or $currentitemcount == 1) {
      $class .= ' first ';
   }
 
 
   if ($item->deeper) {
      $class .= ' deeper ';
      $lastdeeper = true;
   } else {
      $lastdeeper = false;   
   }

Собственно на этом и все. Остается лишь добавить, что если ваш сайт находится в рабочем режиме и на нем включено кеширование, то не забудьте почистить кеш. Удачного вам Joomla! строительства.

Спонсоры статьи:
Оцените статью
Добавить комментарий