Комментарии

Методика оптимального соответствия URL
( 0 Голосов )

Задача представления URL при отображении веб-страницы на первый взгляд кажется простой, но на самом деле она может оказаться много сложнее. Главное затруднение состоит в том, что во многих случаях страница, по существу, с той же самой информацией может быть отображена самыми разными способами. Для рассмотрения этого вопроса обратимся к примеру компонента Weblinks. Если загрузить выборочные данные (например, для версии Joomla 2.5), то появится категория Sample Data-Weblinks (Выборочные данные веб-ссылок) с идентификатором 18.

У нее имеется подчиненная категория Joomla Specific Links (Специальные ссылки Joomla) с идентификатором 32 и подчиненной ей самой категорией Other Resources (Другие ресурсы) с идентификатором 33. В меню компонента Weblinks определены два пункта: один — для представления категорий (отображает категории, подчиненные категории Sample Data-Weblinks), другой — для представления одиночной категории. Пункт выбора одиночной категории определен для категории 32 (т.е. категории Joomla Specific Links).

Такая организационная структура допускает два способа поиска веб-ссылок для категории 32, как показывают приведенные ниже примеры.

  • Выбрать пункт Weblinks Single Category (Одиночная категория веб-ссылок) из меню Using Joomla (Применение Joomla).
  • Выбрать пункт меню Weblinks Categories (Категории веб-ссылок) и щелкнуть на ссылке Joomla Specific Links.

Аналогичным образом можно отобразить ссылки на категорию 33, щелкнув на ссылке Other Resources, находящейся на странице Weblinks Categories или на странице Weblinks Single Category. В подобных случаях приходится решать, какой именно URL следует отображать. В частности, URL может быть отображен по-разному, зависимости от того, каким образом пользователь перешел на данную страницу. В первом примере категорию Using Joomla можно было бы отобразить как ее собственный пункт меню, когда она выбрана из меню, но показать ее как подчиненную категорию пункта меню Categories, когда она выбрана из пункта меню категорий. Но при прочих равных условиях целесообразнее иметь тот же самый URL для одного и того же содержимого страницы. Такой подход оказывается более интуитивным и упрощает каталогизацию подобного содержимого в поисковых механизмах.

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

Рассмотрим действие этой методики на представленных ранее примерах. Если щелкнуть на категории Joomla Specific Links, находясь в представлении категорий, маршрутизатор осуществит поиск существующего пункта меню для данной категории веб-ссылок. Если этот пункт меню будет найден, то для него возвратится URL. В итоге отобразятся та же самая страница и URL, что и при выборе пункта Weblinks Single Category непосредственно из меню.

Во втором примере пункт меню для категории 33 (Other Resources) отсутствует. Из этого положения имеются два выхода. Во-первых, показать ее как подчиненную категорию пункта меню Weblinks Single Category, поскольку она подчинена категории Joomla Specific Links. И во-вторых, показать ее как подчиненную подкатегории Sample Data-Weblinks, выбираемой из пункта меню категорий. Если при определении маршрутизатора было решено, что представлению одиночной категории следует всегда отдавать приоритет над представлением категорий, то URL отображается как результат проникновения вглубь меню, начиная с пункта выбора одиночной категории. Иными словами, отображается URL для пункта меню одиночной категории, после которого следует идентификатор подчиненной категории и псевдоним. Это можно продемонстрировать на следующем проверочном примере. Если загружены стандартные выборочные данные, то при проникновении вглубь меню к категории Other Resources получается приведенный ниже URL.

index.php/using-joomla/extensions/components/weblinks-component/weblinks-single-category/33-other-resources

В этом URL к пункту меню одиночной категории присоединяются идентификатор текущей категории (33) и псевдоним (other-resources). Тот же самый URL получается и при проникновении вглубь меню, начиная с пункта Weblinks Categories или Weblinks Single Category.

Если теперь перейти к административной части веб-сайта на Joomla и снять пункт меню Weblinks Single Category с публикации, а затем щелкнуть на категории Other Resources, выбрав ее на странице Weblinks Categories, то в конечном итоге будет получен следующий URL:

index.php/using-joomla/extensions/components/weblinks-component/weblinks-categories/32-joomla-specific-links/33-other-resources

В связи с тем что единственная категория больше не доступна, пришлось выбрать следующий ближайший вариант, т.е. проникнуть вглубь меню категорий. Пункт меню категорий связан с категорией Sample Data-Weblinks, имеющей идентификатор 18. Это прародительская категория для категории 33. Таким образом, путь к текущей категории отображается, начиная с категории 18 и следуя дальше вниз по иерархии (в данном случае сначала к категории 32, а затем к категории 33).

А что, если соответствующие пункты меню отсутствуют? В таком случае категории и пункты меню одиночных категорий снимаются с публикации в административной части веб-сайта. Теперь пункты меню недоступны для выбора, но можно ввести вручную следующий URL в форме запроса, чтобы отобразить категорию веб-ссылок:

index.php?option=com_weblinks&view=category&id=33

По этому URL происходит переход к странице Other Resources, а запрос получается именно в той форме, в какой он был введен в URL. В итоге маршрутизатор получает возможность успешно загрузить компонент и представление, но ему не удастся найти сопоставимый удобный для поиска URL. Следует также заметить, что при загрузке страницы получаются только те модули, которые назначены для всех пунктов меню. И это происходит потому, что в запросе отсутствует идентификатор пункта меню (Itemid). Если бы он был введен в запрос, то были бы получены модули, шаблоны и средства языковой поддержки, назначенные для данного пункта меню.


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости
Добавить комментарий


Защитный код