Joomla, часть 2: структура меню

Под меню в Joomla! подразумевается конструируемая администратором иерархия "пунктов", каждый из которых связан с элементом контента. Например, пункт меню "Новости" связан с разделом "Новости", внутри которого размещаются статьи с новостями сайта. Можно сказать, что система меню отражает в навигационной информации структуру разделов, категорий и статей (на практике от меню в Joomla! можно получить несколько больше). Joomla! позволяет создавать множество меню и управлять их отображением на сайте.

Управление меню осуществляется из специального раздела интерфейса администратора.

Загруженные в первоначальную установку Joomla! демонстрационные данные содержат несколько готовых меню. Так, основное меню (mainmenu) включает в себя пункты из традиционного "навигационного набора" типичного сайта.

Попробуем добавить к этому меню пункт, позволяющий пользователю открыть список статей из нашего нового раздела "Растения". Воспользуемся основным меню интерфейса администратора (вверху страницы) и вызовем пункт "Меню->mainmenu".

В браузер загружается страница со списком пунктов, входящих в меню mainmenu (это и есть наше "Основное меню"). Здесь каждому пункту соответствует информация о состоянии публикации (виден ли этот пункт посетителям сайта или нет), параметры сортировки пунктов (эти параметры определяют порядок, в котором пункты отображаются в меню), уровень доступа (группы пользователей, которым доступен данный пункт меню), идентификаторы и типы элементов, связанных с данным пунктом меню. Сейчас нам наиболее интересен именно этот последний параметр.

В Joomla! есть строго определённый набор типов элементов, которые могут быть связаны с пунктом меню. Например, присутствующий в нашем меню пункт "Главная" связан с компонентом CMS "Главная страница" (так же называемым "Начальная страница", Front Page), и таким образом при клике пользователя на этот пункт будет всегда открываться начальная страница сайта.

Важно сразу отметить одну, часто вызывающую путаницу, особенность CMS Joomla, связанную с "главной" ("начальной") страницей сайта. CMS устроена таким образом, что в качестве "начальной" страницы, то есть страницы, которая отображается в том случае, если пользователь открыл корневую папку сайта, всегда используется тот объект СMS, на который указывает первый опубликованный пункт в меню mainmenu. Также в Joomla! существует компонент "Главная страница" (Front Page), отображающий контент, привязанный к этому компоненту при публикации (о том, как такая привязка осуществляется, рассказано ниже).

В большинстве случаев меню mainmenu настраивается таким образом, что первый опубликованный пункт в нём как раз указывает на компонент "Главная страница" (Front Page). Поэтому, если читатель открывает корневую папку сайта (например, http://moysite.ru/), то CMS отображает результаты работы компонента "Главная страница", и то же самое происходит, если пользователь выбрал пункт меню "Главная". То есть поведение CMS по отображению страниц совпадает в обоих случаях.

Однако в качестве первого опубликованного пункта меню mainmenu можно установить пункт, указывающий не на компонент "Главная страница", а на какой-то другой компонент, на раздел сайта, на статичное содержимое или на любой другой допустимый для пунктов меню элемент CMS. Предположим, что наш сайт расположен по адресу moysite.ru/ и мы устроили меню mainmenu таким образом, что первый опубликованный пункт указывает на раздел "Новости проекта". В этом случае, если читатель откроет сайт, набрав адрес корневой страницы - moysite.ru/, - то CMS Jooomla! отобразит содержимое раздела "Новости проекта". А если посетитель кликнет на пункт меню, связанный с компонентом "Главная страница", то CMS отобразит результаты работы этого компонента. То есть при такой конфигурации поведение CMS различно и посетитель увидит разные страницы, в зависимости от того, открыл ли он корневую папку сайта, набрав её адрес, или перешёл к компоненту "Главная страница", использовав соответствующий пункт меню.

Типов элементов, которые можно назначить пунктам меню, много. На обычном web-сайте наиболее востребованы типы, относящиеся к отображению содержимого разделов и категорий.

Итак, перейдём к созданию пункта меню "Растения". Для этого на странице просмотра списка пунктов меню нужно кликнуть кнопку "Новый" в верхней части страницы.

Создание нового пункта состоит из двух шагов. На первом шаге нужно выбрать тип элемента. В нашем случае воспользуемся группой типов "Содержимое" и выберем тип "Блог - содержимое раздела". Каждый тип пунктов, из имеющихся в распоряжении администратора Joomla! для связывания с меню, отличается от других прежде всего тем, что именно будет отображаться при клике на пункт меню и тем, как результат будет отображаться. Например, выбранный нами пункт "Блог - содержимое раздела" выводит анонсы статей из всех категорий заданного раздела в виде блога, то есть в виде ленты, где анонсы упорядочены, например по дате. Тип "Таблица - содержимое раздела" будет выводить только заголовки статей из раздела, в табличной форме. А тип "Блог - содержимое категории" аналогичен типу "Блог - содержимое раздела", но выводит содержимое заданной категории.

Выберем тип "Блог - содержимое раздела", кликнув на название типа. После этого интерфейс администратора автоматически переходит ко второму шагу создания пункта меню - ввод параметров.

Страница, служащая для ввода параметров пункта меню, содержит множество регулируемых значений. Прежде всего, можно ввести название пункта меню - именно под этим названием пункт появится на страницах сайта. В нашем примере используем название "Растения". Так как выбранный тип пункта меню "Блог - содержимое раздела", то нужно указать раздел, содержимое которого, собственно, будет выводиться. Выбрать раздел можно в списке под полем ввода для названия. В нашем примере используется раздел "Растения". Список разделов, как нетрудно догадаться, соответствует тому их набору, который ранее был создан для контента сайта.
Другим параметром, который можно выбрать из списка, является "Родительский пункт меню" - этот параметр служит для создания многоуровневых структур меню, в которых внутри одного пункта находится несколько подчинённых ему пунктов ("подменю"). Выберем здесь пункт Top, означающий, что наш новый пункт меню в качестве родительского использует самый верхний уровень. Прочие варианты в этом списке формируются из имеющихся в данном меню названий пунктов. (Для пункта меню также можно выбрать состояние публикации.)

В правой части страницы редактирования пункта меню содержится большой раздел, управляющий тем, как будет отображаться контент на странице сайта, связанной с данным пунктом меню. Здесь можно выбрать изображение, привязываемое к этому пункту. Можно установить параметры связывания со стилями из таблицы CSS шаблона (использование суффикса позволяет сопоставить пункту меню уникальный стиль из таблицы стилей). Здесь же указывается заголовок страницы, выводимой после клика на пункт меню, и параметры отображения содержимого. На этом шаге мы оставим все значения параметров без изменений.

Для добавления пункта меню нужно кликнуть по кнопке "Сохранить" в верхней части страницы. После этого новый пункт меню будет создан и (если указан соответствующий режим публикации и уровень доступа) показан на сайте.
Аналогично создадим внутри пункта "Растения" два пункта меню "Кактусы" и "Деревья". Воспользуемся только что описанным методом создания пунктов меню, отличие будет состоять лишь в том, что на первом шаге мы выберем тип "Блог - содержимое категории", а на втором шаге, выбрав соответствующую категорию, укажем в качестве родительского пункта "Растения", а не Top.

В результате у нас в «Основном меню» появилась двухуровневая структура: пункт меню «Растения» содержит два подпункта - «Кактусы» и «Деревья».

Результат преобразования можно увидеть, зайдя на публичную часть сайта, – в списке пунктов меню появился пункт «Растения». Подпункты можно увидеть, если активировать этот пункт, кликнув по нему.

Необходимо заметить, что в CMS Joomla! имеется и другой путь для связывания разделов и категорий с пунктами меню. Для того чтобы его проиллюстрировать, попробуем добавить в главное меню новый пункт "Камни", соответствующий разделу контента, который создаётся описанным ранее способом.

После того, как создан новый раздел, можно перейти к редактированию его параметров, кликнув на название раздела на странице со списком разделов.

Открывшаяся страница почти совпадает со страницей, которая отвечает за создание нового раздела, однако теперь в правой части появилась дополнительная группа параметров, отвечающих за связывание с пунктами меню. Заполнив соответствующие поля в этой области, можно сразу же создать пункт в меню, связанный с данным разделом.

Важно заметить, что активировать область управления связыванием с пунктами меню можно при создании нового раздела (или категории), без возврата к странице со списком разделов (категорий). Для этого, после того как параметры нового раздела введены, достаточно вместо кнопки "Сохранить" кликнуть кнопку "Применить".

Первые итоги

Итак, мы создали простую структуру для контента из одного раздела и двух категорий и соответствующие ей пункты меню. Теперь можно несколько прорядить использованные нами демонстрационные данные, чтобы убрать лишнее. Начнём с приведения в порядок пунктов главного меню.

Используя страницу со списком пунктов, удалим лишнее. Для удаления пункта меню нужно отметить этот пункт в списке и кликнуть кнопку "В корзину" в верхней части страницы.

Удалим несколько пунктов меню, которые нам не потребуются на сайте. После удаления в главном меню осталось пять пунктов, которые мы планируем использовать.

Конечно, наш пример создания "структуры сайта" - самый простой. При работе с реальным сайтом, скорее всего, информационная структура окажется сложнее (потребуется больше разделов и категорий), что приведёт к усложнению структуры меню. Тем не менее, дальнейшее усложнение структуры сайта может производиться повторением описанных только что шагов для новых разделов, категорий и пунктов меню.