Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 151 Ответов
  • 44314 Просмотров
*

j-lubitel

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Код: php
unset($query['task']);
Это разве не название компонента?, по идее "zoo" в ссылке уже не должно быть, а он почему-то есть.
*

j-lubitel

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Видимо сложная задача )))
*

j-lubitel

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Если кто-то знает ответ, подскажите пожалуйста хотя-бы где копать, дальше сам попробую разобраться.
*

j-lubitel

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
А если кликать по тегам из item'а то ссылка получается сайт.ру/all/tag/all/статья )))
Теперь, плюс ко всему, нужно как-то поубирать эти "all"
*

ankoch

  • Захожу иногда
  • 498
  • 50 / 1
Так же обновился до последней версии, но item и catalog остались. возможно настройки где есть?
Заметил, что item и category исчезают только тогда, когда создаёшь пункт меню на определенный элемент каталога.
*

Abiladenda

  • Захожу иногда
  • 181
  • 5 / 0
Версия zoo 2.5.14 и Joomla 2.5.2, при данном способе замены роутера тем что здесь выложен, в canonical ссылках появляется ?view=item&layout=item после самой ссылки, а также на всех ссылках на items если из меню указывается категория. Но самое главное то что canonical получается с ?view=item&layout=item в конце а base без них, вот если бы было наоборот тогда можно и не обращать внимания на то что на странице категории ссылки с этим ?view=item&layout=item, по тому как для индексации берется ссылка с canonical. Вобоще же на форуме yootheme этот вопрос обсуждается уже давно, и пока yootheme не хочет убирать item из линка, только если вы делаете прямую ссылку на item из меню, хорошо хоть так а то раньше даже при прямой ссылке из меню - item всеравно было, плюс еще и category. Вывод такой решения пока нет, на мой взгляд лучше ставить родной роутер и делать прямые ссылки на items, так как в этом случае canonical будет без ?view=item&layout=item и не будет item в самом линке, итог - хорошая индексация. Ну и ждать от самой yootheme что бы алиасы были уникальными как в Joomla тогда все эти проблемы отпадут.
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
вот мой router.php на Zoo 2.5.12
ссылки на материалы без item
Код: php
<?php
/**
* @package   com_zoo
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license   http://www.gnu.org/licenses/gpl.html GNU/GPL
*/

// load config
require_once(JPATH_ADMINISTRATOR.'/components/com_zoo/config.php');

function ZooBuildRoute(&$query) {

$app = App::getInstance('zoo');

// init vars
$segments = array();

// frontpage
$task = 'frontpage';

if (@$query['task'] == $task || @$query['view'] == $task) {
if (@$query['task'] == $task) {
$segments[] = $task;
}
unset($query['task']);
unset($query['view']);
unset($query['layout']);

// pagination
if (isset($query['page'])) {
$segments[] = $query['page'];
unset($query['page']);
}
}

// category
$task = 'category';

if (@$query['task'] == $task || @$query['view'] == $task) {
if (@$query['task'] == $task) {
$segments[] = $task;
}
if (@$query['category_id']) {
$segments[] = $app->alias->category->translateIDToAlias((int) $query['category_id']);
}
unset($query['task']);
unset($query['view']);
unset($query['layout']);
unset($query['category_id']);

// pagination
if (isset($query['page'])) {
$segments[] = $query['page'];
unset($query['page']);
}
}

// alpha index
$task = 'alphaindex';

if ((@$query['task'] == $task || @$query['view'] == $task) && isset($query['alpha_char']) && isset($query['app_id'])) {
$segments[] = $task;
$segments[] = $app->alias->application->translateIDToAlias((int) $query['app_id']);
$segments[] = $query['alpha_char'];
unset($query['task']);
unset($query['view']);
unset($query['alpha_char']);
unset($query['app_id']);

// pagination
if (isset($query['page'])) {
$segments[] = $query['page'];
unset($query['page']);
}
}

// tag
$task = 'tag';

if ((@$query['task'] == $task || @$query['view'] == $task) && isset($query['tag']) && isset($query['app_id'])) {
$segments[] = $task;
$segments[] = $app->alias->application->translateIDToAlias((int) $query['app_id']);
$segments[] = $query['tag'];
unset($query['task']);
unset($query['view']);
unset($query['tag']);
unset($query['app_id']);

// pagination
if (isset($query['page'])) {
$segments[] = $query['page'];
unset($query['page']);
}
}

// item
$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']);
}

// feed
$task = 'feed';

if ((@$query['task'] == $task || @$query['view'] == $task) && isset($query['type']) && isset($query['app_id']) && isset($query['category_id'])) {
$segments[] = $task;
$segments[] = $query['type'];
$segments[] = $app->alias->application->translateIDToAlias((int) $query['app_id']);
if ($query['category_id']) {
$segments[] = $app->alias->category->translateIDToAlias((int) $query['category_id']);
}
unset($query['task']);
unset($query['view']);
unset($query['type']);
unset($query['app_id']);
unset($query['category_id']);
}

// submission
$task = 'submission';

if (((@$query['task'] == $task || @$query['view'] == $task) && @$query['layout'] == 'submission')) {
$segments[] = $task;
$segments[] = @$query['layout'];
$segments[] = $app->alias->submission->translateIDToAlias((int) $query['submission_id']);
$segments[] = $query['type_id'];
$segments[] = $query['submission_hash'];
$segments[] = $app->alias->item->translateIDToAlias((int) @$query['item_id']);
unset($query['task']);
unset($query['view']);
unset($query['layout']);
unset($query['submission_id']);
            unset($query['type_id']);
            unset($query['submission_hash']);
            unset($query['item_id']);
}

// submission mysubmissions
$task = 'submission';

if (((@$query['task'] == $task || @$query['view'] == $task) && @$query['layout'] == 'mysubmissions')) {
$segments[] = $task;
$segments[] = @$query['layout'];
$segments[] = $app->alias->submission->translateIDToAlias((int) $query['submission_id']);
unset($query['task']);
unset($query['view']);
unset($query['layout']);
unset($query['submission_id']);
}

return $segments;
}

function ZooParseRoute($segments) {

$app = App::getInstance('zoo');

// init vars
$vars  = array();
$count = count($segments);

// fix segments (see JRouter::_decodeSegments)
foreach (array_keys($segments) as $key) {
$segments[$key] = str_replace(':', '-', $segments[$key]);
}

// frontpage (with optional pagination)
$task = 'frontpage';

if ($count == 1 && $segments[0] == $task) {
$vars['task'] = $task;
}

if ($count == 2 && $segments[0] == $task) {
$vars['task'] = $task;
$vars['page'] = (int) $segments[1];
}

// category (with optional pagination)
$task = 'category';

if ($count == 2 && $segments[0] == $task) {
$vars['task']        = $task;
$vars['category_id'] = (int) $app->alias->category->translateAliasToID($segments[1]);
}

if ($count == 3 && $segments[0] == $task) {
$vars['task']        = $task;
$vars['category_id'] = (int) $app->alias->category->translateAliasToID($segments[1]);
$vars['page']        = (int) $segments[2];
}

// alpha index (with optional pagination)
$task = 'alphaindex';

if ($count == 3 && $segments[0] == $task) {
$vars['task']       = $task;
$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[1]);
$vars['alpha_char'] = (string) $segments[2];
}

if ($count == 4 && $segments[0] == $task) {
$vars['task']       = $task;
$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[1]);
$vars['alpha_char'] = (string) $segments[2];
$vars['page']       = (int) $segments[3];
}

// tag (with optional pagination)
$task = 'tag';

if ($count == 3 && $segments[0] == $task) {
$vars['task']   = $task;
$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[1]);
$vars['tag']    = (string) $segments[2];
}

if ($count == 4 && $segments[0] == $task) {
$vars['task']   = $task;
$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[1]);
$vars['tag']    = (string) $segments[2];
$vars['page']   = (int) $segments[3];
}

// item
$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]);
}

// feed
$task = 'feed';

if ($count == 3 && $segments[0] == $task) {
$vars['task'] = $task;
$vars['type'] = (string) $segments[1];
$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[2]);
}

if ($count == 4 && $segments[0] == $task) {
$vars['task']        = $task;
$vars['type']        = (string) $segments[1];
$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[2]);
$vars['category_id'] = (int) $app->alias->category->translateAliasToID($segments[3]);
}

// submission
$task = 'submission';
    $layout = 'submission';

if ($count == 2 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']   = $task;
$vars['layout'] = (string) $segments[1];
}

if ($count == 5 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']            = $task;
$vars['layout']          = (string) $segments[1];
$vars['submission_id']   = (int) $app->alias->submission->translateAliasToID($segments[2]);
            $vars['type_id']         = (string) $segments[3];
            $vars['submission_hash'] = (string) $segments[4];
}

if ($count == 6 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']            = $task;
$vars['layout']          = (string) $segments[1];
$vars['submission_id']   = (int) $app->alias->submission->translateAliasToID($segments[2]);
            $vars['type_id']         = (string) $segments[3];
            $vars['submission_hash'] = (string) $segments[4];
            $vars['item_id']         = (int) $app->alias->item->translateAliasToID($segments[5]);
}

// submission mysubmissions
$task = 'submission';
    $layout = 'mysubmissions';

if ($count == 2 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']   = $task;
$vars['layout'] = (string) $segments[1];
}

if ($count == 3 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']          = $task;
$vars['layout']        = (string) $segments[1];
$vars['submission_id'] = (int) $app->alias->submission->translateAliasToID($segments[2]);
}

// try to retrieve vars from menu item
if (empty($vars)) {
if ($menu_item = $app->object->create('JSite')->getMenu()->getActive()) {
$vars['task'] = @$menu_item->query['view'];

switch ($vars['task']) {
case 'frontpage':
if ($count == 1) {
$vars['page'] = (int) $segments[0];
}

break;
case 'category':
if ($count == 1) {
$vars['page'] = (int) $segments[0];
$vars['category_id'] = @$menu_item->query['category_id'];
}
break;
}
}
}

return $vars;
}


изменения только здесь:
Код: php
	// item
$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']);
}
и здесь:
Код: php
// item
$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]);
}
*

Abiladenda

  • Захожу иногда
  • 181
  • 5 / 0
Виталик Да с вашим последним роутером все работает как надо, на моем zoo 2.5.14 и Joomla 2.5.2.
canonical стали таким как надо, и item и category исчезли из линков.
Зачет вам.
Однако следует добавить что если все хорошо, не нужно обновлять zoo иначе все может слететь.

Есть еще одна проблема для zoo на сегодняшний день, это генерация файла sitemap.xml, дело в том что последний плагин zoo plugin for Xmap 2.0 с включенным родным SEF Joomla 2.5  добавляет в линк component/zoo. То есть ссылки в XML файле выглядят вот так mysite.com/component/zoo/item or category name, пока решения нет и приходится использовать вот эти сайты http://www.xml-sitemaps.com/ и http://www.mysitemapgenerator.com/ для генерации файла с ссылками, заодно и проверять дубли, потом в ручную уничтожаю component/zoo или с заменой вставляю то что мне  нужно. Есть jcrawler который якобы может генерить файл с картой сайта в XML, но у меня не работает на Joomla 2.5.2 и zoo 2.5.14.

Нет еще zoo плагина для Xmap который убирал бы component/zoo поэтому вот и мучаемся.

*

theWurm

  • Захожу иногда
  • 51
  • 0 / 8
Почему-то category все равно осталось?

А можно как-то сделать, чтобы линк на статью был вида "сайт/название категории/название статьи"

Если за деньги только, то предложения в ЛС

Версия  Joomla - 2.5.2. zoo - 2.5.14
*

Abiladenda

  • Захожу иногда
  • 181
  • 5 / 0
В этом роутере все так и сделано сайт/название категории/название статьи
а категория (category) у вас показывается в линке только в том случае если название категории совпадает с алиосом статьи,
смотрите как вы делаете ссылки меню, если на категорию тогда выведется список items в этой категории, и при клике на item не должно быть категрии в линке, у меня так работает вот здесь ukraineadopt.com только одна категория осталась с (category) в линке, я так понимаю из за того что категория в zoo имеет тоже название что и алиас статьи, то есть item
*

Virocracy

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Доброго времени суток!
Скажите пожалуйста поэтапно, как вы добились изменения вида ссылок, т.е. без category и item. У меня Joomla 2.5.3 и zoo 2.5.12. Создаю приложение product catalog, потом категорию, потом сам элемент, алиасы естественно различные. Создаю меню, выбираю fronpage и созданное приложение, в итоге даже с переписанным router.php описанном на форуме category не пропадает..., может проклял кто конечно меня, но маловероятно ))).
Еще не много непонятно, цитирую "последнее время не убираю, так как на все категории есть пункты меню", "Вывод такого решения пока нет, на мой взгляд лучше ставить родной роутер и делать прямые ссылки на items, так как в этом случае canonical будет без ?view=item&layout=item и не будет item в самом линке, итог - хорошая индексация", если создавать меню под каждый item или отдельную категорию, то как потом вывести это все на одной страничке, допустим в качестве главной? Строго не судите, ногами не бейте, с zoo столкнулся впервые...
*

Apoca1ypto

  • Давно я тут
  • 749
  • 71 / 0
Без item - изменение файла ваш_сайт/components/com_zoo/router.php (чуть выше есть код, что и на что нужно изменить).
Без category - необходимо сделать пункты меню для каждой категории в Zoo.
После этих действий все ссылки будут правильного вида.
Как это работает можно посмотреть здесь gam3r.pro (каталоги игр и устройств).
Во время спора в Интернете Ваш оппонент приводит неопровержимые доказательства своей точки зрения? Не отчаивайтесь. До...тесь до орфографии.
*

Reiver

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Сделал по вышеописанному методу... ссылки на товары выглядят красиво (Site.ru/название категории/товар.html) но вот категории выглядят ужасно (Site.ru/название категории/category/название категории.html) хотя эта же страница доступна и по урлу  (Site.ru/название категории.html)

У меня категории выставлены на главной странице и кликая по одной из них попадаешь на страницу с урлом (Site.ru/название категории/category/название категории.html), а можно сделать чтобы я попадал на страницу с урлом (Site.ru/название категории.html)?

Может есть способ решить это?
Спасибо!
*

Apoca1ypto

  • Давно я тут
  • 749
  • 71 / 0
Сделал по вышеописанному методу... ссылки на товары выглядят красиво (Site.ru/название категории/товар.html) но вот категории выглядят ужасно (Site.ru/название категории/category/название категории.html) хотя эта же страница доступна и по урлу  (Site.ru/название категории.html)

У меня категории выставлены на главной странице и кликая по одной из них попадаешь на страницу с урлом (Site.ru/название категории/category/название категории.html), а можно сделать чтобы я попадал на страницу с урлом (Site.ru/название категории.html)?

Может есть способ решить это?
Спасибо!
Необходимо сделать пункты меню для каждой категории в Zoo.
Во время спора в Интернете Ваш оппонент приводит неопровержимые доказательства своей точки зрения? Не отчаивайтесь. До...тесь до орфографии.
*

Reiver

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Apoca1ypto, пункты меню категорий созданы...но урл же все равно такого вида mysite.ru/этот_самый_пункт_меню/category/название_категории.
Хотя, как я сказал выше, есть дубль этой страницы с урлом mysite.ru/этот_самый_пункт_меню

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

На вашем же сайте на главной странице размещены только товары, а чтобы зайти в категорию нужно пройти по ссылке через меню! А эту самую ссылку вы уже можете ввести на страницу с красивым урлом!
Кстати как у вас с индексацией после изменений в роутере компонента zoo? Все ок?
*

Apoca1ypto

  • Давно я тут
  • 749
  • 71 / 0
Да, с индексацией проблем нет.
Яндекс и Google понимают канонические URL, так что проблем нет, даже если на страницу ведет несоклько URL - то в базе у них только один (правильный).
Линканите Ваш сайт (можно в личку).
Во время спора в Интернете Ваш оппонент приводит неопровержимые доказательства своей точки зрения? Не отчаивайтесь. До...тесь до орфографии.
*

Georgiy77

  • Захожу иногда
  • 164
  • 2 / 0
  • Развивайся, живи, люби - ты на пути!
Подскажите пожалуйста как убрать item в версии Zoo 2.4? Все предыдущие попытки замены выложенных здесь файлов обернулись неудачей. Вот мой Router.PHP

Спойлер
[свернуть]
   
*

fishi

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Добрый вечер.  zoo 2.4.9  , удалила из файла $segments[] = $task; . item пропали из урлов, НО перестали открыватся товары со страниц каталога, выходит ошибка 404. Как все таки сделать что б item ушли и  товары открывались. Спасибо.
*

usemind

  • Осваиваюсь на форуме
  • 33
  • 4 / 0
Дело еще в том, что используя вышеупомянутые способы возникает ошибка.
Убирая item из ссылки, мы получаем несуществующую первую страницу. То есть если по навигации пройти на 2 страницу, потом нажать не Предыдущая, а на цифру 1, то мы получим 404. как решить это я не знаю...
*

t2me

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Спаибо за роутер, очень помогло.
*

shima

  • Захожу иногда
  • 113
  • 7 / 0
Помогите с роутером в версии 2.6.1
не могу убрать /item/ в ссылках,
в sh404Sef  добавлять постранично элементы #items  отключено
провел выше описаные манипуляции
и никаких изменений не произошло
« Последнее редактирование: 01.08.2012, 13:06:24 от shima »
*

wusoldier

  • Осваиваюсь на форуме
  • 41
  • 1 / 0
Zoo 2.5.19, мучаюсь с /category/ в ссылках
как в router.php убрать эту строчку? заранее спасибо

использую родной SEF Joomla 2.5.6
« Последнее редактирование: 04.08.2012, 02:29:26 от wusoldier »
*

wusoldier

  • Осваиваюсь на форуме
  • 41
  • 1 / 0
неужели никто не знает? :(
*

Georgiy77

  • Захожу иногда
  • 164
  • 2 / 0
  • Развивайся, живи, люби - ты на пути!
Насчет как убрать item из Zoo 2.4 решений также не удалось никому найти?
*

Apoca1ypto

  • Давно я тут
  • 749
  • 71 / 0
Насчет как убрать item из Zoo 2.4 решений также не удалось никому найти?
Решение которое опубликовано чуть выше, не подходит для 2.4?
Во время спора в Интернете Ваш оппонент приводит неопровержимые доказательства своей точки зрения? Не отчаивайтесь. До...тесь до орфографии.
*

Georgiy77

  • Захожу иногда
  • 164
  • 2 / 0
  • Развивайся, живи, люби - ты на пути!
Да, именно не подходит! Я оставлял чуть выше свой файл Router.PHP, если можно посмотрите пожалуйста в чем может быть причина неисправности. Спасибо.
*

mexx63

  • Новичок
  • 4
  • 0 / 0
Виталик, спасибо большое! по вашей схеме все отлично получилось и работает.
*

voland

  • Легенда
  • 11031
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Виталик, спасибо большое! по вашей схеме все отлично получилось и работает.
А где версии используемых компонентов?
*

Dmitriy50

  • Захожу иногда
  • 96
  • 4 / 11
  • TV
А как быть с версией 3.0.10?  Как убрать item?
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
А как быть с версией 3.0.10?  Как убрать item?
router.php для 3.0.10
Код: php
<?php
/**
* @package   com_zoo
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license   http://www.gnu.org/licenses/gpl.html GNU/GPL
*/

// load config
require_once(JPATH_ADMINISTRATOR.'/components/com_zoo/config.php');

function ZooBuildRoute(&$query) {

$app = App::getInstance('zoo');

// init vars
$segments = array();

// frontpage
$task = 'frontpage';

if (@$query['task'] == $task || @$query['view'] == $task) {
if (@$query['task'] == $task) {
$segments[] = $task;
}
unset($query['task'], $query['view'], $query['layout']);

// pagination
if (isset($query['page'])) {
$segments[] = $query['page'];
unset($query['page']);
}
}

// category
$task = 'category';

if (@$query['task'] == $task || @$query['view'] == $task) {
if (@$query['task'] == $task) {
$segments[] = $task;
}
if (@$query['category_id']) {
$segments[] = $app->alias->category->translateIDToAlias((int) $query['category_id']);
}
unset($query['task'], $query['view'], $query['layout'], $query['category_id']);

// pagination
if (isset($query['page'])) {
$segments[] = $query['page'];
unset($query['page']);
}
}

// alpha index
$task = 'alphaindex';

if ((@$query['task'] == $task || @$query['view'] == $task) && isset($query['alpha_char'], $query['app_id'])) {
$segments[] = $task;
            if (!($menu = $app->system->application->getMenu('site')
                    and $menu instanceof JMenu
                    and isset($query['Itemid'])
                    and $item = $menu->getItem($query['Itemid'])
                    and @$item->component == 'com_zoo'
                    and $app_id = $item->params->get('application')
                    and $query['app_id'] == $app_id)) {
                // Set app alias in the url only if we can't get the app_id from the menu item
                $segments[] = $app->alias->application->translateIDToAlias((int) $query['app_id']);
            }
$segments[] = $query['alpha_char'];

unset($query['task'], $query['view'], $query['alpha_char'], $query['app_id']);

// pagination
if (isset($query['page'])) {
$segments[] = $query['page'];
unset($query['page']);
}
}

// tag
$task = 'tag';

if ((@$query['task'] == $task || @$query['view'] == $task) && isset($query['tag'], $query['app_id'])) {
$segments[] = $task;
            if (!($menu = $app->system->application->getMenu('site')
                    and $menu instanceof JMenu
                    and isset($query['Itemid'])
                    and $item = $menu->getItem($query['Itemid'])
                    and @$item->component == 'com_zoo'
                    and $app_id = $item->params->get('application')
                    and $query['app_id'] == $app_id)) {
                // Set app alias in the url only if we can't get the app_id from the menu item
                $segments[] = $app->alias->application->translateIDToAlias((int) $query['app_id']);
            }
$segments[] = $query['tag'];

unset($query['task'], $query['view'], $query['tag'], $query['app_id']);

// pagination
if (isset($query['page'])) {
$segments[] = $query['page'];
unset($query['page']);
}
}

// item
$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']);
}

// feed
$task = 'feed';

if ((@$query['task'] == $task || @$query['view'] == $task) && isset($query['type'], $query['app_id'], $query['category_id'])) {
$segments[] = $task;
$segments[] = $query['type'];
$segments[] = $app->alias->application->translateIDToAlias((int) $query['app_id']);
if ($query['category_id']) {
$segments[] = $app->alias->category->translateIDToAlias((int) $query['category_id']);
}
unset($query['task'], $query['view'], $query['type'], $query['app_id'], $query['category_id']);
}

// submission
$task = 'submission';

if (((@$query['task'] == $task || @$query['view'] == $task) && @$query['layout'] == 'submission')) {
$segments[] = $task;
$segments[] = @$query['layout'];
$segments[] = $app->alias->submission->translateIDToAlias((int) $query['submission_id']);
$segments[] = $query['type_id'];
$segments[] = $query['submission_hash'];
$segments[] = $app->alias->item->translateIDToAlias((int) @$query['item_id']);
unset($query['task'], $query['view'], $query['layout'], $query['submission_id'], $query['type_id'], $query['submission_hash'], $query['item_id']);
}

// submission mysubmissions
$task = 'submission';

if (((@$query['task'] == $task || @$query['view'] == $task) && @$query['layout'] == 'mysubmissions')) {
$segments[] = $task;
$segments[] = @$query['layout'];
$segments[] = $app->alias->submission->translateIDToAlias((int) @$query['submission_id']);
unset($query['task'], $query['view'], $query['layout'], $query['submission_id']);
}

$app->event->dispatcher->notify($app->event->create(null, 'application:sefbuildroute', array('segments' => &$segments, 'query' => &$query)));

return $segments;
}

function ZooParseRoute($segments) {

$app = App::getInstance('zoo');

// init vars
$vars  = array();
$count = count($segments);

// fix segments (see JRouter::_decodeSegments)
foreach (array_keys($segments) as $key) {
$segments[$key] = str_replace(':', '-', $segments[$key]);
}

// frontpage (with optional pagination)
$task = 'frontpage';

if ($count == 1 && $segments[0] == $task) {
$vars['task'] = $task;
}

if ($count == 2 && $segments[0] == $task) {
$vars['task'] = $task;
$vars['page'] = (int) $segments[1];
}

// category (with optional pagination)
$task = 'category';

if ($count == 2 && $segments[0] == $task) {
$vars['task']        = $task;
$vars['category_id'] = (int) $app->alias->category->translateAliasToID($segments[1]);
}

if ($count == 3 && $segments[0] == $task) {
$vars['task']        = $task;
$vars['category_id'] = (int) $app->alias->category->translateAliasToID($segments[1]);
$vars['page']        = (int) $segments[2];
}

// alpha index (with optional pagination)
$task = 'alphaindex';

        if ($count == 2 && $segments[0] == $task && $menu_item = $app->menu->getActive()) {
            $vars['task']       = $task;
            $vars['alpha_char'] = (string) $segments[1];
            $vars['app_id'] = $menu_item->params->get('application');
        }

        if ($count == 3 && $segments[0] == $task) {
            $vars['task']           = $task;
            if (!$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[1]) and $menu_item = $app->menu->getActive()) {
                $vars['app_id']     = $menu_item->params->get('application');
                $vars['alpha_char'] = (string) $segments[1];
                $vars['page']       = (int) $segments[2];
            } else {
                $vars['alpha_char'] = (string) $segments[2];
            }
        }

        if ($count == 4 && $segments[0] == $task) {
            $vars['task']       = $task;
            $vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[1]);
            $vars['alpha_char'] = (string) $segments[2];
            $vars['page']       = (int) $segments[3];
        }

// tag (with optional pagination)
$task = 'tag';

// if a menu item is set, avoid using app alias in the url
        if ($count == 2 && $segments[0] == $task && $menu_item = $app->menu->getActive()) {
            $vars['task']   = $task;
            $vars['app_id'] = $menu_item->params->get('application');
            $vars['tag']    = (string) $segments[1];
        }

        if ($count == 3 && $segments[0] == $task) {
            $vars['task']       = $task;
            if (!$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[1]) and $menu_item = $app->menu->getActive()) {
                $vars['app_id'] = $menu_item->params->get('application');
                $vars['tag']    = (string) $segments[1];
                $vars['page']   = (int) $segments[2];
            } else {
                $vars['tag']    = (string) $segments[2];
            }
        }

        if ($count == 4 && $segments[0] == $task) {
            $vars['task']   = $task;
            $vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[1]);
            $vars['tag']    = (string) $segments[2];
            $vars['page']   = (int) $segments[3];
        }

// item
$task = 'item';
$item_id = (int) $app->alias->item->translateAliasToID($segments[0]);
if ($count == 1 && $item_id) {
$vars['task']    = $task;
$vars['item_id'] = $item_id;
}

// feed
$task = 'feed';

if ($count == 3 && $segments[0] == $task) {
$vars['task'] = $task;
$vars['type'] = (string) $segments[1];
$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[2]);
}

if ($count == 4 && $segments[0] == $task) {
$vars['task']        = $task;
$vars['type']        = (string) $segments[1];
$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[2]);
$vars['category_id'] = (int) $app->alias->category->translateAliasToID($segments[3]);
}

// submission
$task = 'submission';
    $layout = 'submission';

if ($count == 2 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']   = $task;
$vars['layout'] = (string) $segments[1];
}

if ($count == 5 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']            = $task;
$vars['layout']          = (string) $segments[1];
$vars['submission_id']   = (int) $app->alias->submission->translateAliasToID($segments[2]);
            $vars['type_id']         = (string) $segments[3];
            $vars['submission_hash'] = (string) $segments[4];
}

if ($count == 6 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']            = $task;
$vars['layout']          = (string) $segments[1];
$vars['submission_id']   = (int) $app->alias->submission->translateAliasToID($segments[2]);
            $vars['type_id']         = (string) $segments[3];
            $vars['submission_hash'] = (string) $segments[4];
            $vars['item_id']         = (int) $app->alias->item->translateAliasToID($segments[5]);
}

// submission mysubmissions
$task = 'submission';
    $layout = 'mysubmissions';

if ($count == 2 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']   = $task;
$vars['layout'] = (string) $segments[1];
}

if ($count == 3 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']          = $task;
$vars['layout']        = (string) $segments[1];
$vars['submission_id'] = (int) $app->alias->submission->translateAliasToID($segments[2]);
}

// try to retrieve vars from menu item
if (empty($vars)) {
if (($count == 0 || $count == 1 && is_numeric($segments[0])) && $menu_item = $app->menu->getActive()) {
$vars['task'] = @$menu_item->query['view'];

switch ($vars['task']) {
case 'frontpage':
if ($count == 1) {
$vars['page'] = (int) $segments[0];
}

break;
case 'category':
if ($count == 1) {
$vars['page'] = (int) $segments[0];
$vars['category_id'] = @$menu_item->query['category_id'];
}
break;
}
}
}

$app->event->dispatcher->notify($app->event->create(null, 'application:sefparseroute', array('segments' => &$segments, 'vars' => &$vars)));

return $vars;
}
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ссылки в JBZoo

Автор Whitelamb

Ответов: 3
Просмотров: 2982
Последний ответ 15.09.2017, 22:17:11
от isay777
[Решено] Как в модуле ZOO Item вывести название и описание категории?

Автор frolov.ar

Ответов: 13
Просмотров: 4540
Последний ответ 01.04.2017, 13:29:52
от rivermc
Как настроить отображение страницы элемента product в виде cookbook?

Автор saschka

Ответов: 1
Просмотров: 1463
Последний ответ 12.01.2017, 16:44:50
от shtier
Запись данных из элемента

Автор yandex_hb

Ответов: 0
Просмотров: 1071
Последний ответ 10.10.2016, 20:23:00
от yandex_hb
Модуль: ZOO item популярные за неделю ( НЕ бесплатно)

Автор dee88

Ответов: 4
Просмотров: 1984
Последний ответ 29.08.2016, 16:13:28
от ameli90