Когда на веб-сайте, построенном на Joomla, активизируются URL, удобные для поиска (SEF), то понять, каким образом они создаются, оказывается нелегко, исходя из контекста. В частности, используется ли при этом псевдоним статьи или меню, как организуются ссылки на статьи из категорий, можно ли перейти к одной и той же странице по разным URL?
Ответы на эти вопросы помогают лучше понять принятые в Joomla подходы к организации веб-сайтов. Они также помогают оптимизировать веб-сайт таким образом, чтобы “пауки” поисковых механизмов могли эффективно распознать его содержимое и представить его посетителям. В этом разделе предпринимается попытка развеять мрак тайны вокруг системы маршрутизации, применяемой в Joomla для формирования URL, представляемых пользователям. В нем будет также показано, как отображать содержимое вручную по идентификационному номеру статьи, что может оказаться полезным для проверки отдельных статей с помощью разрабатываемых расширений.
Анализ URL
Рассмотрение URL в Joomla лучше всего начать со стандартных, а не удобных для поиска URL, т.е. с тех, которые формируются в Joomla для меню веб-сайта. С этой целью выберите в интерфейсе администратора веб-сайта команду меню Site^Global Configuration (Сайт^Глобальная конфигурация). Установите значение No параметра Search Engine Friendly URLs (Удобные для поиска URL) на панели SEO Settings (Параметры поисковой оптимизации). Затем перейдите в окне браузера к начальной странице веб-сайта (или обновите ее, если вы уже находитесь на ней). Установив указатель на меню, вы сможете теперь увидеть фактическую структуру каждой ссылки. На уровне интерфейса администратора веб-сайта можно всегда проверить URL для перехода к любому меню в поле Link (Ссылка) этого меню.
Для компоновки меню с единственной статьей ссылка, отображаемая в поле Link, будет иметь вид, аналогичный следующему:
index.php?option=com_content&view=article&id=l
Но это неполная ссылка. Если перейти в окно браузера и щелкнуть на этой ссылке, на правляющей к меню, то появится URL с еще одним параметром, как показано ниже:
index.php?option=com_content&view=article&id=l&Itemid=3
Параметр Itemid имеет большое значение для контроля над современным веб-сайтом на Joomla, поскольку он определяет меню, а следовательно, и его настройки для отображения данной статьи. Специально настраивая этот параметр, можно отобразить статью практически как угодно. Зачастую такая возможность используется для создания специальных ссылок на содержимое, для которого применяется конкретный шаблон сайта музыки.
Иными словами, создавая специально настраиваемую ссылку в статье или на странице, можно по-разному отображать одну и ту же часть содержимого. Допустим, что имеется единственная статья, которую требуется сделать общей как для пользовательской, так и для административной части веб-сайта. Но в зависимости от местоположения ссылки ее придется отображать с помощью подходящего шаблона или других меню с левой стороны. Если статья оставлена с используемым по умолчанию шаблоном, например, Atomic, она будет отображена. Но другое меню может быть настроено на применение шаблона Beez. Шаблоны для отдельных меню можно выбрать, открыв элемент шаблона по команде меню Extensions>Template Manager (Расширения>Диспетчер шаблонов), перейдя на вкладку Menu Assignment (Назначение меню) и выбрав конкретные меню.
Если же попытаться выбрать несколько шаблонов для одного и того же пункта меню при сохранении элемента шаблона, этот выбор будет просто отменен и произойдет возврат к предыдущему шаблону. В качестве примера рассмотрим установку меню Developer Section (Раздел разработчика) и выбор для него шаблона Beez по команде меню Extensions>Template Manager. Установив меню, откройте окно диспетчера пунктов меню (Menu Item Manager) и найдите на правом его краю столбец ItemID в списке пунктов меню. Запишите идентификационный номер данного пункта меню, чтобы ввести его в URL, как показано ниже:
index ,php?opt ion=com_content&view=ar tide &id=l&Itemid=4
Когда по этому всб-адресу откроется окно браузера, вы обнаружите, что та же самая статья отображается по другому шаблону. Подобным способом можно свободно контролировать порядок отображения статьи в зависимости от устанавливаемых параметров ссылки на нес.
Даже если на веб-сайте применяются удобные для поиска URL, элементарный URL может послужить неплохой отправной точкой для попыток продиагностировать ошибки маршрутизации. Это особенно уместно, поскольку маршрутизация по удобным для поиска URL, по существу, действует по тому же самому образцу в отношении идентификационных номеров статей.
Анализ удобного для поиска URL
После активизации в Joomla режимов удобства поиска (SEF) не так-то просто выяснить, каким образом происходит маршрутизация по указанному URL. Так, если активизировать режим SEF для перезаписи без модификации на примере рассмотренного ранее URL (index. php?option=com_content&view=article&id=l), то в результате анализа URL для меню оказывается аналогичным следующему:
index.php/home/3
Маршрутизатор разбивает исходную строку ссылки на следующие части.
- Хост. Это базовый URL (например, www.example.com), но может включать подкаталог, если хост (т.е. сетевой узел) не является корневым (например, www. example. com/my j oomla).
- Порт. Если порт имеет номер 80 (стандартный для веб порт), то данная переменная на стороне сервера оказывается пустой.
- Путь. Это путь к запрашиваемой странице в форме установки SEF, и поэтому он может быть представлен в одной из подобных форм (например, / index.php, / index.php/mymenu или /mymenu).
- Запрос. Это параметры запроса. Для сайта без активизированного режима сопоставления с SEF URL данное поле должно содержать значение, аналогичное следующему: option=com_content&view=article&id=173.
Для определения URL самой важной из перечисленных выше переменных является сам путь. Он анализируется системой, чтобы определить SEF URL. Путь всегда составляется на основе меню, используемого для доступа к искомому ресурсу.
Так, если имеется иерархическое меню, в URL будет включен псевдоним меню на каждом уровне иерархии. Если же поле параметра Раде Heading (Заголовок страницы) не заполнено при установке меню, то используется заглавие статьи. В противном случае содержимое поля параметра Page Heading появляется в строке заголовка окна.
Если же конечное меню приводит к такому компоненту, как компоновка Category Blog, то отдельным идентификационным номерам статей будет соответствовать конечный номер URL. Это означает, что статья в блоге будет иметь URL, аналогичный следующему:
/mytopmenu/mysubmenu/81-article-anatomy