Форум русской поддержки Joomla!® CMS
23.05.2017, 05:26:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Роутинг Joomla плодит дубли

 (Прочитано 115 раз)
0 Пользователей и 1 Гость смотрят эту тему.
voron121
Давно я тут
****

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 222


Метод тыка и мата помогает в кодинге


« : 12.04.2017, 16:44:15 »

Доброго времени суток. Просьба помочь с проблемой. Для самописного компонента реализовал  поддержку роутов согластно стандартам Joomla (на сколько я их понял есесн.). По итогу URL формируется нужный. Однако если из URL убрать часть  - то страница все равно останется. Пример : есть URL mysite.com/item/mfo_15.html (15 - это ид материала). Этот URL правильный. Но если написать вот так :  mysite.com/item/o_15.html или даже так:  mysite.com/item/fo_15.html  - то страница все равно выведется. Подскажите что не так плз. Вот код route.php который я писал :

 
Код
<?php
defined('_JEXEC') or exit;
 
   function ZaimBuildRoute(&$query) {
       $segments = array();
       if(isset($query['view'])){
           $segments[] = $query['view'];
           unset($query['view']);
       }
 
       if(isset($query['id'])){
           $segments[] = "mfo_".$query['id'];
           unset($query['id']);
       };
       return $segments;
   }
 
 
   function ZaimParseRoute( $segments ) {
       $vars = array();
       $count = count( $segments );
       if ( $count ) {
           $count--;
           $segment = array_shift( $segments );
           $vars['view'] = $segment;
       }
       if ( $count ) {
           $count--;
           $segment = array_shift( $segments );
           $vars['id'] = "mfo_".$segment;
       }
       return $vars;
 
   }
 
 
?>
 
 
 
Записан
ChaosHead
Профи
********

Репутация: +399/-11
Offline Offline

Пол: Мужской
Сообщений: 4663



« Ответ #1 : 12.04.2017, 16:59:45 »

Это беда Joomla, над её исправлением работают, но не так быстро, как хотелось бы.
Можно при выводе страницы определять правильный url и прописывать каноническую ссылку.
Записан
voland
Профи
********

Репутация: +512/-93
Offline Offline

Пол: Мужской
Сообщений: 9603


СКАЙП утерян! Пишите в телеграм!


« Ответ #2 : 12.04.2017, 17:01:19 »

JL Nodoubles
Записан
robert
Профи
********

Репутация: +369/-14
Offline Offline

Пол: Мужской
Сообщений: 3987


« Ответ #3 : 12.04.2017, 18:50:45 »

IMHO, так не должен был работать routing. Ведь у вас ID - не число, еще и с префиксом "mfo_":
Код
    function ZaimParseRoute( $segments ) {
...
           $segment = array_shift( $segments );
           $vars['id'] = "mfo_".$segment;
...
   }
 

P.S. Хм, а как модель ищет материал? Не может быть, чтобы в базе были такие ID: mfo_o_15, mfo_mf_15...
P.P.S. Вспомнил, там ID, скорее всего, приводится к integer.
Это беда Joomla, над её исправлением работают, но не так быстро, как хотелось бы.
Можно при выводе страницы определять правильный url и прописывать каноническую ссылку.
У ТС же свой компонент. IMHO, в рамках своего компонента вполне можно избежать эту ошибку.
« Последнее редактирование: 12.04.2017, 20:22:04 от robert » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet