Jump to content


Photo
- - - - -

Обзор роутера Zoo, способы исправления ссылок

рецепт sef router роутер

2 replies to this topic

#1 joejoker

joejoker
  • JBZoo User (rus)
  • User rate: 6.8
  • posts: 305
  • topics: 5

Posted 14 August 2013 - 09:14

Очень часто разработчики сталкиваются с проблемой отображения человеко-понятных url (чпу). При использовании стандартного ЧПУ Joomla, в ссылках есть два параметра, которые устраивают далеко не всех. Это category и item (или task) Привести стандартные ссылки к нужному виду не так уж и сложно. Для этого существует как минимум три способа.
  • Установка сторонних sef компонентов
  • Ручная правка роутера.
  • Создание пунктов меню.
Первый способ
 
Для первого способа, нужно установить сам компонент sh404sef. Скачать его можно здесь:
 
 http://anything-digi...s.html#sh404SEF  Внимание! Компонент платный. И обязательно скачать и установить плагин Zoo sh404sef. Скачать плагин можно здесь: http://yoonique.net/...=57&Itemid=118. После установки плагина, нужно зайти в менеджер плагинов Joomla и включить его. Далее, в настройках компонента, настроить ссылки так как Вам нужно, учитывая один нюанс. Нужно обязательно перейти в Контрольная панель -> Конфигурация -> Компонент sh404sef -> компонент ZOO и поставить "ПРОСТАЯ КОДИРОВКА" вместо "handler". Только при наличии такой настройки будет корректно работать корзина.
 
Достоинства этого метода в том, что не придется править код ядра ZOO и в дальнейшем не возникнет ни каких проблем с обновлением. Недостатки этого метода в том, что в разы увеличивается нагрузка на сервер, а так же не правильная обработка GET запросов. Иногда sh404sef может "съедать" параметры.
 
 
Второй способ. 
 
Ручная правка кода роутера ZOO. Файл роутера находится здесь: /components/com_zoo/router.php Если посмотреть на код, видно что роутер, по сути состоит из двух методов ZooBuildRoute() и ZooParseRoute() В первом создается строка запроса, во втором происходит ее разбор. Внимание! Данные правки тестировались на версии ZOO 3.0 и все правки кода Вы делаете на свой страх и риск. Стандартный sef Joomla должен быть включен. Для того что бы избавиться от параметров item и category нужно изменить всего два участка. Сначала в районе 107 строки, находим такой код:
 


$task = 'item';


if (@$query['task'] == $task || @$query['view'] == $task) {
    if (@$query['task'] == $task && @$query['item_id']) {
        $segments[] = $task;
        $segments[] = $app->alias->item->translateIDToAlias((int) $query['item_id']);
    }
    unset($query['task'], $query['view'], $query['layout'], $query['item_id']);
}
И заменяем его на этот: 

 
    $task = 'item';


    if (@$query['task'] == $task || @$query['view'] == $task) {
        if (@$query['task'] == $task && @$query['item_id']) {
            $segments[] = $app->alias->item->translateIDToAlias((int) $query['item_id']);
        }
        unset($query['task']);
        unset($query['view']);
        unset($query['layout']);
        unset($query['item_id']);
        unset($query['category_id']);
    }
Далее, в методе ZooParseRoute() ищем следующий код:

 
$task = 'item';

if ($count == 2 && $segments[0] == $task) {
    $vars['task']    = $task;
    $vars['item_id'] = (int) $app->alias->item->translateAliasToID($segments[1]);
}
И заменяем его на этот: 

 
$task = 'item';

    if ($count == 1 && (int) $app->alias->item->translateAliasToID($segments[0]))
    {
        $vars['task']    = $task;
        $vars['item_id'] = (int) $app->alias->item->translateAliasToID($segments[0]);
    }
После этих правок, параметры category и item должны исчезнуть из ссылок. 
 
Достоинство этого метода, по сути одно - отсутствие сторонних компонентов. Недостатков хватает. Во-первых данные изменения затрутся с ближайшим обновлением. Во-вторых, нет гарантии что все функции Zoo будут работать корректно.
 
 
Третий способ.
 
Заключается в том, что на каждую категорию и каждый материал, создается пункт меню. У данного способа плюсов много. Не меняется код ядра ZOO, нет сторонних расширений и т.д. Но есть один существенный недостаток. Подходит этот способ только небольшим проектам.
 
Полезные ссылки по теме:
Обсуждение вопроса на joomlaforum http://joomlaforum.r...&topic=180639.0
Платный плагин для ZOO http://www.raslab.or...tem/zooptimizer

Еще один альтернативный роутер http://forum.jbzoo.c...io-sef/?p=18463


Четвертый способ

Экспериментальный вариант, который удаляет из ссылок item и category бБЕЗ хака.
http://forum.jbzoo.c...tem-i-category/

Edited by SmetDenis, 15 January 2014 - 14:33.
Добавил 4й вариант

  • 2
В мире все совсем не сложно, если самому не усложнять.
Разработка индивидуальных решений для ZOO /JBZoo /Joomla

#2 Артём

Артём
  • JBZoo User (rus)
  • User rate: 2.8
  • posts: 78
  • topics: 3

Posted 28 November 2013 - 23:55

2й способ: При хаке родного роутера перестаёт работать xmap, точнее не выстраивает ссылки на которые вели *item* и *category*.

3й способ: Можно добавить https://www.zoolande...tensions/zooseo   Но это скорее не решение проблем с роутером, а комплексный инструмент для seo. Проще взглянуть на скриншоты, чем перечислять. Пользуюсь - очень удобно, раньше приходилось вручную править шаблоны для item'ов для создания красивых снипетов: хотя бы ради этого стоит брать.


  • 2
в ЛС не писать | коплю карму

#3 Sliapy

Sliapy
  • JBZoo User (rus)
  • User rate: 50.5
  • posts: 6393
  • topics: 15

Posted 29 November 2013 - 00:01

А что там со сниппетами? По скриншотам их настроек не видно. Нормальная разметка схема.орг поддерживается или как? Можно где-то посмотреть?

 

И как с этим всем ведет себя тот же xmap? Вырезаются дубли с category_id ?


Edited by Sliapy, 29 November 2013 - 00:03.

  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]





Also tagged with one or more of these keywords: рецепт, sef, router, роутер

Click to return to top of page in style!