Как убрать /item/ из тела ссылки элемента?

  • 149 Ответов
  • 30605 Просмотров

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

Есть: http://site.ru/blog/design/item/статья
Нужно: http://site.ru/blog/design/статья

Кто-нибудь подскажет, откуда выпиливать?


-----
Быстрая навигация по топику:
Роутер для ZOO 2.5.12
Роутер для ZOO 3.0.10
« Последнее редактирование: 13.04.2013, 18:40:01 от Sulpher »

*

Оффлайн Kuzmitch

Есть: http://site.ru/blog/design/item/статья
Нужно: http://site.ru/blog/design/статья

Кто-нибудь подскажет, откуда выпиливать?
Тоже интерестно

*

Оффлайн MetaSpirit

  • ******
  • 1379
  • [+]106 / [-]0
  • R.A.S.Lab[.org]
    • Просмотр профиля
    • R.A.S.Lab[.org]
Переписыванием роутера или сторонними ЧПУ
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.

*

Оффлайн djforce

Ребятт так решил кто это? как в zoo 2.5 со стандартным SEF убрать item ?

*

Оффлайн Kuzmitch

Переписыванием роутера или сторонними ЧПУ
Скиньте у кого есть пример переписанного роутера. или ссылку где можно почитать - как переписать самому.

*

Оффлайн Виталик

Код: (php) [Выделить]
<?php
/**
* @package   com_zoo
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*/

// 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) {
$segments[] = $task;
unset($query['task']);
unset($query['view']);

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

// category
$task 'category';

if ((@$query['task'] == $task || @$query['view'] == $task) && isset($query['category_id'])) {
$segments[] = $task;
if ($query['category_id']) {
$segments[] = $app->alias->category->translateIDToAlias((int) $query['category_id']);
}
unset($query['task']);
unset($query['view']);
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) && isset($query['item_id'])) {
$segments[] = $app->alias->item->translateIDToAlias((int) $query['item_id']);
unset($query['task']);
unset($query['view']);
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';
    
$layout 'submission';

if (((@$query['task'] == $task || @$query['view'] == $task) && @$query['layout'] == $layout)) {
$segments[] = $task;
            
$segments[] = $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';
    
$layout 'mysubmissions';

if (((@$query['task'] == $task || @$query['view'] == $task) && @$query['layout'] == $layout)) {
$segments[] = $task;
            
$segments[] = $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 == && $segments[0] == $task) {
$vars['task'] = $task;
}

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

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

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

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

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

if ($count == && $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) {
$vars['task']    = $task;
$vars['item_id'] = (int) $app->alias->item->translateAliasToID($segments[0]);
}

// feed
$task 'feed';

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

if ($count == && $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 == && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']   = $task;
$vars['layout'] = (string) $segments[1];
}

if ($count == && $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 == && $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 == && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']   = $task;
$vars['layout'] = (string) $segments[1];
}

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

return $vars;
}

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

Для того, чтобы убрать /item/, нужно удалить строку 97 (ориентировочно, в ZOO 2.4.12) в файле \components\com_zoo\router.php:
Код: (php) [Выделить]
$segments[] = $task;

*

Оффлайн Виталик

Для того, чтобы убрать /item/, нужно удалить строку 97 (ориентировочно, в ZOO 2.4.12) в файле \components\com_zoo\router.php:
Код: (php) [Выделить]
$segments[] = $task;
Если начали искать изменения, то просмотрите файл до конца и напишите обо всех отличиях от оригинального и проверьте работоспособность файла по своей инструкции прежде чем советовать другим просто убрать одну строку.

*

Оффлайн djforce

Спасибо, работает

*

Оффлайн pavel_28121

  • ****
  • 266
  • [+]28 / [-]0
  • Cart for ZOO, Watermark for ZOO, Price fo ZOO
    • Просмотр профиля
    • Расширения для Yootheme ZOO. Профессиональная помощь по Yootheme ZOO. Расширения для ZOO на заказ.
А как убрать category ?
Расширения для Yootheme ZOO http://zooapps.ru, а также профессиональная помощь по Yootheme ZOO. Расширения для ZOO на заказ. ZooCart, ZooWatermark, ZooPrice.


*

Оффлайн djforce

а как вы убираете?
Примажусь, тоже интересно)))

*

Оффлайн Виталик

последнее время не убираю, так как на все категории есть пункты меня, а раньше в ZooBuildRoute просто не дописывал сегмент "category", а в ZooParseRoute сначала проверял является ли алиас категорией, а потом материалом

*

Оффлайн pavel_28121

  • ****
  • 266
  • [+]28 / [-]0
  • Cart for ZOO, Watermark for ZOO, Price fo ZOO
    • Просмотр профиля
    • Расширения для Yootheme ZOO. Профессиональная помощь по Yootheme ZOO. Расширения для ZOO на заказ.
А я убираю сторонним SEF и правкой sef_ext
Расширения для Yootheme ZOO http://zooapps.ru, а также профессиональная помощь по Yootheme ZOO. Расширения для ZOO на заказ. ZooCart, ZooWatermark, ZooPrice.

*

Оффлайн agro

Тоже хотелось бы убрать item, items, itemstable в роутере каталога DJ2. Может кто-то имеет готовое решение.

*

Оффлайн ankoch

Цитировать
Как убрать /item/ из тела ссылки элемента?

В zoo 2.5.4 уже этой проблемы нет, нужно просто обновиться до этой версии.

Цитировать
В zoo 2.5.4 уже этой проблемы нет
И как эта проблема решается в 2.5.4? У меня как были в ссылках item'ы, так и остались. Стоит 2.5.5.

*

Оффлайн ankoch

http://www.yootheme.com/support/question/154
Цитировать
ZOO 2.5.4 fixed the content duplication issue. Try it and tell me if that works for you too

По крайней мере у меня работает и item'ов нет, однако category остались, когда переходишь из титульной страницы в одну из категорий.

Joomla 1.5.23 + zoo 2.5.4

P.S. только что обновил  zoo до 2.5.6 и category совсем исчезли.

*

Оффлайн ankoch

Стоит заметить, что старые ссылки с item'ами остались работоспособными.
« Последнее редактирование: 14.01.2012, 14:53:34 от ankoch »

*

Оффлайн 61rus

Так же обновился до последней версии, но item и catalog остались. возможно настройки где есть?

*

Оффлайн ankoch

Глупый вопрос, однако - SEO Joomla включено?

*

Оффлайн 61rus

Подскажите, это где?:)

*

Оффлайн 61rus

Если вы в кофигурации самой Joomla, то конечно:
Search Engine Friendly URLs
Use URL rewriting
Adds Suffix to URL
включено

*

Оффлайн ankoch

Да, это там. У меня Joomla 1.5.23, всё работает при аналогичных настройках.

Кстати, после этих изменений с item'ами и category'ями, в индексе у Яндекс вдруг ни с того ни с сего страниц в поиске увеличилось ровно в 3 раза.

*

Оффлайн 61rus

У меня 1.7.3 стоит ничего нет после обновления.
Нашел на одном сайте переделанный router.php убирается, но он для более старой версии написан, меняются другие урлы в худшую сторону. У вас Яндекс меньше чем за неделю прошустрил весь сайт и выкинул это уже в поиск?

*

Оффлайн ankoch

У вас Яндекс меньше чем за неделю прошустрил весь сайт и выкинул это уже в поиск?
Примерно за неделю.


Ребят, а никто не пытался убрать component/zoo/tag/что-то-тут в пути при выводе результатов поиска по тэгам в zoo?
А еще если в тэге забито два слова, например "такая статья", то в пути получится "/такая%20статья", как бы убрать эти %20?
Joomla 1.5.23, zoo 2.5.6.

Я так понял, что за формирование ссылки по каждому тегу в модуле zootag (файл helper.php) отвечает строка

Код: (php) [Выделить]
$tag->href   = $menu_item ? sprintf('index.php?option=com_zoo&task=tag&tag=%s&app_id=%d%s', $tag->name, $application->id, $itemid) : $this->app->route->tag($application->id, $tag->name);
Только как её изменить, чтобы убрать "component/zoo"?

Или в файле component/com_zoo/router.php нужно будет добавлять дополнительные строки вот сюда?:
Код: (php) [Выделить]
// tag
$task = 'tag';
if ((@$query['task'] == $task || @$query['view'] == $task) && isset($query['tag']) && isset($query['app_id'])) {
$segments[] = $task;
$segments[] = $app->alias->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']);
}
}
Только что добавлять? Подскажите знающие люди.