Перейти к содержимому


Фотография
* * * * * 1 Голосов

Удаляем из ссылок вложенность item, category, frontpage

рецепт роутер sef item category frontpage

Сообщений в теме: 59

#1 SmetDenis

SmetDenis

Отправлено 15 January 2014 - 14:31

*
Популярное сообщение!

В продолжение этой темы - http://forum.jbzoo.c...vleniya-ssylok/

Недавно, создавая новый оф сайт http://jbzoo.com я попробовал разобраться в принципе работы роутера Zoo.

У меня получилось выкинуть из ссылок item и category.
Сразу скажу - не уверен что способ 100% рабочий, но тем не менее для небольших сайтов он вполне сгодится.
Для нового jbzoo.com он вполне рабочий.

Основные достоинства на данный момент

  • Никаких хаков
  • Используется стандартный SEF
  • Не должно быть дополнительной нагрузки на сервер.
  • Никак не может изменить базу данных (понятия не имею откуда взялся миф что правки роутера ломамют контент).

Недостатки

  • Слабо тестировал. По факту всего на 2х сайтах.
  • На свой страх и риск =)

 

Что нужно сделать ?
Открываем файл \media\zoo\applications\jbuniversal\framework\events\jbevent.application.php
И меняем одноименные функции sefBuildRoute и sefParseRoute на вариант ниже

<?php
    /**
     * on after application sefparseroute
     * @param AppEvent $event
     */
    public static function sefParseRoute($event)
    {
        $app    = self::app();
        $params = $event->getParameters();
        $count  = count($params['segments']);

        if (empty($params['vars'])) {
            $itemId = (int)$app->alias->item->translateAliasToID($params['segments'][0]);
            if ($itemId) {
                $params['vars']['task']    = 'item';
                $params['vars']['item_id'] = $itemId;
            }
        }

        if (empty($params['vars'])) {
            $categoryId = (int)$app->alias->category->translateAliasToID($params['segments'][0]);
            if ($categoryId) {
                $params['vars']['task']        = 'category';
                $params['vars']['category_id'] = $categoryId;

                if (isset($params['segments'][1])) {
                    $params['vars']['page'] = (int)$params['segments'][1];
                }
            }
        }

        $event->setReturnValue($params);
    }

    /**
     * on after application sefbuildroute
     * @param AppEvent $event
     */
    public static function sefBuildRoute($event)
    {
        $app    = self::app();
        $params = $event->getParameters();

        if (isset($params['segments'][0])) {
            if (in_array($params['segments'][0], array('item', 'category', 'frontpage'))) {
                unset($params['segments'][0]);
            }
        }

        $params['segments'] = array_values($params['segments']);
        $event->setReturnValue($params);
    }

Они есть только в последних версиях JBZoo + Zoo
Если у вас не оказалось этого файла или функций, то скорее всего у вас для данного метода устарела версия либо Zoo, либо JBZoo.

Испытывал на
Joomla: 3.2.1, JBZoo: 2.1.2 Pro, Zoo: 3.1.4 без какого либо постороннего SEF

 
Я буду только рад, если кто-нибудь протестирует и напишет мне ошибки/отзыв
Т.к ближе к JBZoo v2.3.0 мы планируем написать свой роутер Zoo (со своим блекджеком и плюшками, опять же без хаков итд... итп...)
Ваш отзыв - был бы хорошим толчком разработчиков в нужном направлении.

PS Создал отдельный топик, а не сообщение в существующей теме, в надежде собрать ошибки/отзывы

UPD #1 Внес правку для удаления слова "frontpage"

 

UPD #2 Прикрепил пример файла /media/zoo/applications/jbuniversal/framework/events/jbevent.application.php

Прикрепленные файлы


Сообщение отредактировал SmetDenis: 23 January 2014 - 20:14
Прикрепил файл

  • 8
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#2 .polega.

.polega.

Отправлено 15 January 2014 - 15:39

Денис, недавно вы в этой теме предложили заменить роутер Zoo на переделанный вами

 

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

Заменить файл - components\com_zoo\router.php

PS Кстати, работать должен чуть-чуть быстрее, за счет того что  чуть-чуть меньше запросов в базу за алиасом

На данный момент всё работает как надо, ссылки вида http://www.realtygroup.info/item/<ID материала>.

 

Имеет ли смысл вернуть старый роутер на место и воспользоваться рекомендациями этого топика?

Есть ли отличия в работе между вариантами с заменой роутера Zoo и этими рекомендациями?


  • 0

#3 SmetDenis

SmetDenis

Отправлено 15 January 2014 - 16:05

Имеет ли смысл вернуть старый роутер на место и воспользоваться рекомендациями этого топика?
Есть ли отличия в работе между вариантами с заменой роутера Zoo и этими рекомендациями?

Если вы к предыдущему решению добавите правки из этого топика, то у вас просто из ссылки пропадет item, получится не такая ссылка
http://www.realtygroup.info/item/<ID материала>
а такая
http://www.realtygroup.info/<ID материала>
Если у вас уже действующий сайт, то большого смысла в этом нет, т.к поисковые машины уже "привыкли" к старым ссылкам.
А мое решение не сделает редиректа на новую ссылку.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#4 .polega.

.polega.

Отправлено 15 January 2014 - 16:27

Если вы к предыдущему решению добавите правки из этого топика, то у вас просто из ссылки пропадет item, получится не такая ссылка

а если не добавлять к предыдущему решению правки из этого топика , а вернуть роутер Zoo и переделать по рекомендации этого топика, останется ли в силе это:

 

PS Кстати, работать должен чуть-чуть быстрее, за счет того что  чуть-чуть меньше запросов в базу за алиасом


  • 0

#5 .polega.

.polega.

Отправлено 17 January 2014 - 07:16

Пробовал одновременно добавить изменения и из этого топика и из другой рекомендации.

По отдельности работают нормально, как и заявлено. Проверял.

Вместе не хотят. Точнее такие ссылки генерируются:

http://www.realtygroup.info/<ID материала>

но при переходе на материал Zoo он не выводится. Всё обрамление страницы есть, пагинация есть, а материала нет.


  • 0

#6 sc

sc

Отправлено 20 January 2014 - 00:04

Для ленивых подойдет и ZOOseo от ZOOlanders (ссылки не даю, чтобы не гневить Всевидящее око). Информация прозвучала в качестве популяризации топика складчины  :))


  • 0

yootheme-logo.png
Лицензирование YOOtheme (шаблоны, Widgetkit, ZOO). А так же самые свежие обновления напрямую от ZOOlanders, SH404SEF, Akeeba Backup PRO, Admin Tools PRO, Accordion Menu и д.р. Пишите в ЛС


#7 Sliapy

Sliapy

Отправлено 20 January 2014 - 00:25

Купить/найти варез, скачать, установить, настроить или внести правки в 1 файл - интересно, какой из этих вариантов для ленивых? :)


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

#8 alekseytol

alekseytol

Отправлено 20 January 2014 - 11:32

Поправил, item из ссылки исчез. Вроде всё работает, дальше потестим. Думаю, для поисковиков хуже не будет. ))) Спасибо.


  • 0

#9 alekseytol

alekseytol

Отправлено 20 January 2014 - 16:30

Кстати, а для поисков хуже не будет? ))) Денис, а как этот способ может отразиться на работе x-map?


Сообщение отредактировал alekseytol: 20 January 2014 - 16:31

  • 0

#10 SmetDenis

SmetDenis

Отправлено 20 January 2014 - 19:03

Кстати, а для поисков хуже не будет? ))) Денис, а как этот способ может отразиться на работе x-map?

Xmap будет генерировать ссылки по тому же принципу.

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

Склоняюсь, что современные алгоритмы считают это с точки зрения процентного соотношения и умеют выявлять смысловую нагрузку в словах, которые встречаются в ссылках. Скорее всего умеют выкидывать мусор из ссылок, т.е если во всех ссылках встречается слово "item", то игнорировать его.

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

Мой любимый пример - joomlaforum.ru
- ссылки ужасные
- никто не следит за красивый и качественным контентом
- никто не следит за seo
- заголовки страницы - как попало
- ключевики, перелинкова итд - не, не слышал.

Итог - сайт (т.е форум) почти всегда в топ10 почти по всем запросам о Joomla. Делайте выводы ;)

В любом случае делать надо как можно красивее, понятнее и главное юзабельно для пользователей. Чтобы ссылки отражали структуру сайта итд итп...
Если есть возможность, почему бы нет ;) Мелкий плюс в карму на первых этапах жизни сайта хуже не сделает.

PS Смешное правило такое есть - "Делайте как надо, а как не надо - не делайте!" :D
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.






Темы с аналогичным тегами рецепт, роутер, sef, item, category, frontpage

Click to return to top of page in style!