Главная arrow Документация arrow Создание шаблонов для Joomla arrow 8. Создание меню
8. Создание меню Печать E-mail
Многие люди при создании своего собственного шаблона задаются вопросам: "Как лучше организовать меню?". Некоторые используют Flash-меню, некоторые вставляют JavaScript-меню. Я не люблю использовать эти элементы в своих работах, мне нравится чистый код, не обременный лишними файлами. Но, как тогда сделать удобное, легкое меню? Все очень просто: через CSS! Есть много способов создания меню с помощью CSS, в основе большинства которых лежит использование списков (с помощью тегов <li>). Один из таких приемов мы сейчас и рассмотрим ниже. В Joomla! вывод меню оформляется и контролируется через [модули]. При создании нового меню, автоматически будет создан модуль с таким же названием, что и меню. В любом модуле есть настраиваемые параметры, изменяя которые, можно добиться изменения стиля отображения меню. Нужный нам модуль называется mod_mainmenu. Наиболее важный параметр модуля - это "Стиль меню". Существует три стиля меню:
  • Вертикальный - Меню выводится в вертикальной таблице
  • Горизонтальный - Меню выводится в горизонтальной таблице
  • Плоский список - Меню формируется через маркированный список (тег <ul>)

Так выглядит вывод меню через таблицы - или вертикальную, или горизонтальную:

<divclass="moduletable">
<h3>Главное меню</h3>
<tableborder="0"cellpadding="0"cellspacing="0"width="100%">
<tbody>
<tralign="left">
<td><ahref="http://mysite/index.php?option=com_frontpage&Itemid=1"
class="mainlevel"id="active_menu">
Главная</a>
</td>
</tr>
<tralign="left">
<td><ahref="http://mysite/index.php?option=com_content&task=view&id=5&Itemid=6"
class="mainlevel">
Лицензия Joomla!</a>
</td>
</tr>
<tralign="left">
<td><ahref="http://mysite/index.php?option=com_content&task=section&id=1&Itemid=2"
class="mainlevel">
Новости</a>
</td>
</tr>
<tralign="left">
<td><ahref="http://mysite/index.php?option=com_content&task=blogsection&Itemid=9"
class="mainlevel">
Блог</a>
</td>
</tr>
<tralign="left">
<td><ahref="http://mysite/index.php?option=com_weblinks&Itemid=23"
class="mainlevel">
Ссылки</a>
</td>
</tr>
<tralign="left">
<td><ahref="http://mysite/index.php?option=com_contact&Itemid=3"
class="mainlevel">
Контакты</a>
</td>
</tr>
<tralign="left">
<td><ahref="http://mysite/index.php?option=com_search&Itemid=5"
class="mainlevel">
Поиск</a>
</td>
</tr>
</tbody>
</table>
</div>

А вот так выглядит плоский список:

<divclass="moduletable">
<h3>Главное меню</h3>
<ulid="mainlevel">
<li><ahref="http://mysite/index.php?option=com_frontpage&Itemid=1"
class="mainlevel"id="active_menu">
Главная</a>
</li>
<li><ahref="http://mysite/index.php?option=com_content&task=view&id=5&Itemid=6"
class="mainlevel">
Лицензия Joomla!</a>
</li>
<li><ahref="http://mysite/index.php?option=com_content&task=section&id=1&Itemid=2"
class="mainlevel">
Новости</a>
</li>
<li><ahref="http://mysite/index.php?option=com_content&task=blogsection&Itemid=9"
class="mainlevel">
Блог</a>
</li>
<li><ahref="http://mysite/index.php?option=com_weblinks&Itemid=23"
class="mainlevel">
Ссылки</a>
</li>
<li><ahref="http://mysite/index.php?option=com_contact&Itemid=3"
class="mainlevel">
Контакты</a>
</li>
<li><ahref="http://mysite/index.php?option=com_search&Itemid=5"
class="mainlevel">
Поиск</a>
</li>
</ul>
</div>

И снова, используя CSS, мы смогли добиться более компактного и чистого кода. Теперь, после настройки меню, осталось всего 12 таблиц. Кроме этого, используя построение меню через списки, мы облегчаем доступ к содержимому поисковым ботам, текстовым браузерам и браузерам, не поддерживающим CSS.

Другое преимущество использования CSS при построении меню - это большое количество примеров. Взять хотя бы этот ресурс - maxdesign.com - имеет более 30 примеров меню на CSS.

Вгляните на следующий код:

<div id="navcontainer">
<ul id="navlist">
<li id="active"><a href="tutorials/joomla-template-tutorial_8.html" id="current" name=
"current">Первый пункт</a></li>

<li><;span style="color: #009900"><a href=
"tutorials/joomla-template-tutorial_8.html">Второй пункт</a></li>

<li><a href="tutorials/joomla-template-tutorial_8.html">Третий пункт</a></li>

<li><a href="tutorials/joomla-template-tutorial_8.html">Четвертый пункт</a></li>

<li><a href="tutorials/joomla-template-tutorial_8.html">Пятый пункт</a></li>
</ul>
</div>

Здесь меню заключено в контейнер <ul> с идентификатором navlist, который в свою очередь заключен в контейнер <div> с идентификатором navcontainer. Давайте перед левыми модулями в нашем шаблоне добавим позицию user1.

<div id="sidebar">
<div class="inside">
<div id="navcontainer">
<?php mosLoadModules('user1',-2);?>
</div>
<?php mosLoadModules('left',-2);?>
</div>
</div>

Обратите внимание, что мы разместили вывод модуля внутри контейнера <div id="navcontainer">, чтобы соответствовать примеру. Идентификатор контейнера может быть любой, но, для наглядности в нашем случае, мы оставили идентификатор с таким же названием. Далее, вместо <ul id="navlist"> Joomla! всегда выводит mainlevel:

<ulid="mainlevel"> 

Чтобы индивидуально настроить вывод модуля с меню, необходимо добавить ему css-суффикс в "Панели управления". Эта весьма полезная опция позволяет любому модулю назначить определенный суффикс, который будет использоваться при форматировании через стили. Суффикс добавляется в настройках модуля, в поле "CSS-суффикс модуля". Суффикс желательно начинать с "-" (дефис). Чтобы показать наглядно, я добавил модулю меню суффикс -leftnav:

  • Если установлен стиль вывода модуля -2, то название контейнера будет выглядеть так:
.moduletable-leftnav
  • Если установлен стиль вывода модуля -3, то название контейнера будет выглядеть так:
.module-leftnav

После небольшого форматирования меню, мой CSS выглядит так:

.moduletable-leftnav{
margin-bottom:1em;
padding:0; /*здесь отсутствуют отступы, т.к. модуль вложен в другой блок*/
border:1px#CCCsolid;
}
.moduletable-leftnav h3{
background:#666;
width:100%;
color:#fff;
padding:0.25em0;
text-align:center;
font-size:1.1em;
margin:0; /*и отрицательные margin больше не нужны*/
border-bottom: 1pxsolid#CCC;
}
#navcontainer{
padding:0;
color: #333;
}
#navcontainer ul{
list-style: none;
margin: 0;
padding: 0;
}
#navcontainer li{
border-bottom: 1pxsolid#ccc;
margin: 0;
}
#navcontainer li a{
display: block;
padding: 3px5px3px0.5em;
border-left: 10pxsolid#333;
border-right: 10pxsolid#9D9D9D;
background-color:#666;
color: #fff;
text-decoration: none;
}
html>body #navcontainer li a {
width: auto;
}
#navcontainer li a:hover,a#active_menu:link,a#active_menu:visited{
border-left: 10pxsolid#1c64d1;
border-right: 10pxsolid#5ba3e0;
background-color: #2586d7;
color: #fff;
}

 

 
« Пред.   След. »

Администрация






Забыли пароль?

Кто на сайте?

Сейчас на сайте находятся:
10 гостей

Статистика



Рекомендуем

Экспорт новостей

Реклама