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

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

Использование ЧПУ в своих компонентах, как?

 (Прочитано 251 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sesil
Осваиваюсь на форуме
***

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

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


Учусь!


« : 22.06.2015, 08:20:20 »

Добрый день, проблема заключается в следующем, есть сторонний компонент написанный мною, при открытии нужной страницы URL имеет следующий вид "index.php?option=com_characters&view=readmore&id=1", вопрос! как можно взаимодействовать со встроенным функционалом Joomla 3 и выше что бы URL был таким "index.php/characters/readmore/podrobnaya-informatsiya-ob-fishkakh"? Пробовал пользоваться гуглом но толкового не чего не нашел. может кто сталкивался с подобным вопрос или знает что нибудь.
Записан
robert
Профи
********

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

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


« Ответ #1 : 22.06.2015, 08:49:12 »

Если сами написали свой компонент, то вам не составит труда написать свой роутер.
Записан
sesil
Осваиваюсь на форуме
***

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

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


Учусь!


« Ответ #2 : 22.06.2015, 09:18:41 »

Собственно да. уже разобрался. Есть функция которая должна находится в роутере компонента.

Код
function CharacterschipsBuildRoute(&$query) {
   $segments = array();
 
   if (isset($query['task'])) {
       $segments[] = implode('/', explode('.', $query['task']));
       unset($query['task']);
   }
   if (isset($query['view'])) {
       $segments[] = $query['view'];
       unset($query['view']);
   }
   if (isset($query['id'])) {
       $segments[] = $query['id'];
       unset($query['id']);
   }
 
   return $segments;
}
 
Записан
sesil
Осваиваюсь на форуме
***

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

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


Учусь!


« Ответ #3 : 22.06.2015, 09:18:58 »

Код
function CharacterschipsParseRoute($segments) {
   $vars = array();
 
   // view is always the first element of the array
   $vars['view'] = array_shift($segments);
 
   while (!empty($segments)) {
       $segment = array_pop($segments);
       if (is_numeric($segment)) {
           $vars['id'] = $segment;
       } else {
           $vars['task'] = $vars['view'] . '.' . $segment;
       }
   }
 
   return $vars;
}
 
Записан
b2z
Support Team
*****

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

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


Разраблю понемногу


« Ответ #4 : 22.06.2015, 11:23:50 »

Если пишете под тройку, то роутер должен быть классом, который extends JComponentRouterBase:
Код
class CharacterschipsRouter extends JComponentRouterBase

В нем реализуете
Код
public function build(&$query)
public function parse(&$segments)

смотрите /components/com_content/router.php
Записан
Страниц: [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