Jump to content


Photo
* * * * * 1 votes

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

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

59 replies to this topic

#31 SmetDenis

SmetDenis
  • Topic Starter
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 05 February 2014 - 09:45

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

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



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


#32 masterxoloda

masterxoloda
  • JBZoo User (rus)
  • User rate: 0
  • posts: 64
  • topics: 27

Posted 05 February 2014 - 12:23

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

Для старых ссылок будет редирект

Спасибо! Так и знал, что надо всего-лишь немного подождать!


  • 0

#33 An1hony

An1hony
  • JBZoo User (rus)
  • User rate: 0
  • posts: 145
  • topics: 72

Posted 05 February 2014 - 12:29

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

Для старых ссылок будет редирект

 

Денис, может добавите и опцию в виде вывода ID материала вместо алиаса, как здесь?

 

Было бы очень здорово.


  • 0

#34 SmetDenis

SmetDenis
  • Topic Starter
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 05 February 2014 - 13:26

masterxoloda, Просто рук на все и всех не хватает =)

An1hony, Думаю можно сделать.

Как появится немного свободного времени допишу в рецепт новую версию роутера.
Хочу добавить
- id вместо алиаса
- удаляем category_id
- редирект со старых ссылок на новые.
- возмоооожно, если получится... независимость от пунктов меню joomla. но тут все очень можно ((
  • 3
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



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


#35 Tunga

Tunga
  • JBZoo User (rus)
  • User rate: 9.7
  • posts: 595
  • topics: 129

Posted 05 February 2014 - 19:34

Спасибо Денис, ждем с нетерпением выхода новой версии JBZoo! (yes)


  • 0

JBZoo это круто!


#36 ugroomiy

ugroomiy
  • JBZoo User (rus)
  • User rate: 0
  • posts: 48
  • topics: 18

Posted 05 March 2014 - 15:38

Нашёл багу.

Если в разных категориях есть одинаковые подкатегории с одинаковыми алиасами, то при просмотре обеих подкатегорий показывается тизер одного материала, того, что привязан к первой подкатегории.

Со стандартным роутером показываются разные материалы.


  • 0

#37 SmetDenis

SmetDenis
  • Topic Starter
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 05 March 2014 - 20:43

Если в разных категориях есть одинаковые подкатегории с одинаковыми алиасами
 

Вы что-то путаете.

В Zoo нельзя создать две категории с одинаковыми алиасами, даже если они принадлежат разным каталогам.


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



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


#38 ugroomiy

ugroomiy
  • JBZoo User (rus)
  • User rate: 0
  • posts: 48
  • topics: 18

Posted 15 March 2014 - 11:03

 

Вы что-то путаете.

В Zoo нельзя создать две категории с одинаковыми алиасами, даже если они принадлежат разным каталогам.

 

Да, это я перегнул парку в кастомизации создания алиасов и убил проверку на уникальность, вернул обратно =)


  • 0

#39 isay777

isay777
  • JBZoo User (rus)
  • User rate: 113.4
  • posts: 1878
  • topics: 232

Posted 04 April 2014 - 17:08

Хотел кое-что уточнить по данному хаку 

 

 

 

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

 

У меня так: 

/**
     * on after application sefparseroute
     * @param AppEvent $event
     */
    public static function sefParseRoute($event)
    {
    }

    /**
     * on after application sefbuildroute
     * @param AppEvent $event
     */
    public static function sefBuildRoute($event)
    {
    }

Мне это удалить и заменить вашим? 

Просто тогда <?php не в тему. 


  • 0
ХОСТИНГ для сайтов jbzoo (все попугаи)

#40 Sliapy

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

Posted 04 April 2014 - 17:15

Ну, в PHP все-таки полезно разбираться хотя бы на уровне понимания (как я :) ) и знать, что такое функция.

 

Функция sefParseRoute в Вашем файле :

 public static function sefParseRoute($event)
    {
    }

Функция sefParseRoute в коде Дениса:

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);
    }

sefBuildRoute

public static function sefBuildRoute($event)
    {
    }

sefBuildRoute в коде Дениса

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);
    }

Edited by Sliapy, 04 April 2014 - 17:16.

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





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

Click to return to top of page in style!