Новости Joomla

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

noname-dev

  • Захожу иногда
  • 281
  • 17 / 0
Re: Как исключить item из ЧПУ в K2?
« Ответ #30 : 14.05.2012, 16:17:34 »
Им может и облегчает, а мне нет.
Вот согласитесь, ставить этого монстра ради того чтобы убрать item из ссылки - не хорошая идея.
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: Как исключить item из ЧПУ в K2?
« Ответ #31 : 14.05.2012, 16:49:27 »
Кстати, на одном из сайтов у меня этот компонент стоит =) Здорово облегчил жизнь.
Кстати, что там с человеком, контакты которого я давал?
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

noname-dev

  • Захожу иногда
  • 281
  • 17 / 0
Re: Как исключить item из ЧПУ в K2?
« Ответ #32 : 15.05.2012, 18:04:05 »
Кстати, что там с человеком, контакты которого я давал?
Молчит
*

karabert

  • Захожу иногда
  • 276
  • 30 / 3
Re: Как исключить item из ЧПУ в K2?
« Ответ #33 : 15.05.2012, 20:57:21 »
написать роутер?

ps с черточками разбирайтесь сами  ;)

[вложение удалено Администратором]
« Последнее редактирование: 15.05.2012, 21:38:25 от karabert »
*

noname-dev

  • Захожу иногда
  • 281
  • 17 / 0
Re: Как исключить item из ЧПУ в K2?
« Ответ #34 : 16.05.2012, 08:24:33 »
написать роутер?

ps с черточками разбирайтесь сами  ;)
Сдвиг есть...
item  из ссылки пропали, но если перейти по ссылке то 404 ошибку выдает
*

karabert

  • Захожу иногда
  • 276
  • 30 / 3
Re: Как исключить item из ЧПУ в K2?
« Ответ #35 : 16.05.2012, 08:43:51 »
Сдвиг есть...
item  из ссылки пропали, но если перейти по ссылке то 404 ошибку выдает

у меня на последней версии k2 и если урл без черточек, то работает

посмотри в parseRoute, что приходит ("строка-через-тире" преобразуется в "строка:через-тире") и все поймешь
« Последнее редактирование: 16.05.2012, 09:17:30 от karabert »
*

moolkin

  • Захожу иногда
  • 65
  • 15 / 0
Re: Как исключить item из ЧПУ в K2?
« Ответ #36 : 25.05.2012, 15:45:17 »
у меня на последней версии k2 и если урл без черточек, то работает

посмотри в parseRoute, что приходит ("строка-через-тире" преобразуется в "строка:через-тире") и все поймешь

так а исправиьт это как-то можно? а то я смотрел-смотрел но так и не понял что с этим делать
делаю и помогаю делать сайты на джумле.
кому интересно - стучитесь в мой профиль на фри-лансе
https://www.free-lance.ru/users/Moolkin/
или в аську/скайп
*

karabert

  • Захожу иногда
  • 276
  • 30 / 3
Re: Как исключить item из ЧПУ в K2?
« Ответ #37 : 25.05.2012, 16:38:53 »
так а исправиьт это как-то можно? а то я смотрел-смотрел но так и не понял что с этим делать

да, делать надо
*

moolkin

  • Захожу иногда
  • 65
  • 15 / 0
Re: Как исключить item из ЧПУ в K2?
« Ответ #38 : 25.05.2012, 16:49:19 »
добавил такое - вроде заработало
Код
 if(count($segments)==1)
        {
                $alias = $segments[0];
                $alias = str_replace ( ':' , '-' , $alias);//добавил
делаю и помогаю делать сайты на джумле.
кому интересно - стучитесь в мой профиль на фри-лансе
https://www.free-lance.ru/users/Moolkin/
или в аську/скайп
*

CityCat

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
  • Алексей Voronov
Re: Как исключить item из ЧПУ в K2?
« Ответ #39 : 06.06.2012, 10:38:38 »
Так, господа хорошие, как этим роутером пользоваться? Можно вас попросить расписать по пунктам, так сказать для «свистящей ёмкости с кипятком»?
*

moolkin

  • Захожу иногда
  • 65
  • 15 / 0
Re: Как исключить item из ЧПУ в K2?
« Ответ #40 : 06.06.2012, 10:44:50 »
найти файл  components/com_k2/router.php
Скопировать в него вот этот текст, удалив то, что там было (нету времени выбирать то, что там было изменено)

Код
<?php
/**
 * @version                $Id: router.php 1492 2012-02-22 17:40:09Z joomlaworks@gmail.com $
 * @package                K2
 * @author                JoomlaWorks http://www.joomlaworks.net
 * @copyright        Copyright (c) 2006 - 2012 JoomlaWorks Ltd. All rights reserved.
 * @license                GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die('Restricted access');
//SELECT alias FROM `j25_k2_items` WHERE id = "1" LIMIT 1
//SELECT id FROM `j25_k2_items` WHERE alias = "test" LIMIT 1
function K2BuildRoute( & $query) {

    $segments = array ();

    $menu = & JSite::getMenu();
    if ( empty($query['Itemid'])) {
        $menuItem = & $menu->getActive();
    }
    else {
        $menuItem = & $menu->getItem($query['Itemid']);
    }
    $mView = ( empty($menuItem->query['view']))?null:$menuItem->query['view'];
    $mTask = ( empty($menuItem->query['task']))?null:$menuItem->query['task'];
    $mId = ( empty($menuItem->query['id']))?null:$menuItem->query['id'];
    $mTag = ( empty($menuItem->query['tag']))?null:$menuItem->query['tag'];

    if ( isset ($query['layout'])) {
        unset ($query['layout']);
    }

    if ( $mView == @$query['view'] && $mTask == @$query['task'] && $mId == @intval($query['id']) &&  @intval($query['id']) > 0 ) {
        unset ($query['view']);
        unset ($query['task']);
        unset ($query['id']);
    }

    if ( $mView == @$query['view'] && $mTask == @$query['task'] && $mTag == @$query['tag'] && isset($query['tag']) ) {
        unset ($query['view']);
        unset ($query['task']);
        unset ($query['tag']);
    }

    if ( isset ($query['view'])) {
        $view = $query['view'];
        $segments[] = $view;
        unset ($query['view']);
    }

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

    if ( isset ($query['id'])) {
        $id = $query['id'];
        $segments[] = $id;
        unset ($query['id']);
    }

    if ( isset ($query['cid'])) {
        $cid = $query['cid'];
        $segments[] = $cid;
        unset ($query['cid']);
    }

    if ( isset ($query['tag'])) {
        $tag = $query['tag'];
        $segments[] = $tag;
        unset ($query['tag']);
    }

    if ( isset ($query['year'])) {
        $year = $query['year'];
        $segments[] = $year;
        unset ($query['year']);
    }

    if ( isset ($query['month'])) {
        $month = $query['month'];
        $segments[] = $month;
        unset ($query['month']);
    }

    if ( isset ($query['day'])) {
        $day = $query['day'];
        $segments[] = $day;
        unset ($query['day']);
    }

    if ( isset ($query['task'])) {
        $task = $query['task'];
        $segments[] = $task;
        unset ($query['task']);
    }

        // Изменения.
        if(isset($segments[0]))
        {
                if($segments[0]=='item')
                {
                        $alias = explode(':',$segments[1]);
                        $segments[0]=$alias[1];
                        $segments[1]=null;
                }
        }
        // Изменения. Конец.

    return $segments;
}

function K2ParseRoute($segments) {
    $vars = array ();

        // Изменения.
        $id = false;
        if(count($segments)==1)
        {
                $alias = $segments[0];
                $alias = str_replace ( ':' , '-' , $alias);
                $db = &JFactory::getDBO();
                $query = 'SELECT id FROM `#__k2_items` WHERE alias = "'.$alias.'" LIMIT 1';
                $db->setQuery($query);
                $id = $db->loadResult();
        }

        if($id)
        {
                $vars['view'] = 'item';
                $vars['task'] = $id.':'.$alias;
                $vars['id'] = $vars['task'];
        }else{
        // Изменения. Конец.

    $vars['view'] = $segments[0];
    if (!isset($segments[1]))
        $segments[1]='';
    $vars['task'] = $segments[1];

    if ($segments[0] == 'itemlist') {

        switch($segments[1]) {

            case 'category':
                $vars['id'] = $segments[2];
                break;

            case 'tag':
                if (isset($segments[2]))
                    $vars['tag'] = $segments[2];
                break;

            case 'user':
                if (isset($segments[2]))
                    $vars['id'] = $segments[2];
                break;

            case 'date':
                if (isset($segments[2]))
                    $vars['year'] = $segments[2];
                if (isset($segments[3]))
                    $vars['month'] = $segments[3];
                if (isset($segments[4])) {
                    $vars['day'] = $segments[4];
                }
                break;

        }

    }

    else if ($segments[0] == 'item') {

        switch($segments[1]) {

            case 'edit':
                if (isset($segments[2]))
                    $vars['cid'] = $segments[2];
                break;

            case 'download':
                if (isset($segments[2]))
                    $vars['id'] = $segments[2];
                break;

            default:
                $vars['id'] = $segments[1];
                break;

        }

    }

        if($segments[0] == 'comments' && isset($segments[1]) && $segments[1] == 'reportSpammer') {
                $vars['id'] = $segments[2];
        }

        // Изменения.
        }
        // Изменения. Конец.

    return $vars;
}
делаю и помогаю делать сайты на джумле.
кому интересно - стучитесь в мой профиль на фри-лансе
https://www.free-lance.ru/users/Moolkin/
или в аську/скайп
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: Как исключить item из ЧПУ в K2?
« Ответ #41 : 06.06.2012, 11:59:49 »
Прикреплю пока тему, просьба протестировавшим данное решение отписаться о результатах.
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

moolkin

  • Захожу иногда
  • 65
  • 15 / 0
Re: Как исключить item из ЧПУ в K2?
« Ответ #42 : 06.06.2012, 12:22:26 »
ну к примеру я этими категориями/статьями от К2 сделал вот эти страницы:
http://grc.moolkin.ru/fotografii и все вложенные статьи. нигде itemov не наблюдается. версия K2 v2.5.7
делаю и помогаю делать сайты на джумле.
кому интересно - стучитесь в мой профиль на фри-лансе
https://www.free-lance.ru/users/Moolkin/
или в аську/скайп
*

karabert

  • Захожу иногда
  • 276
  • 30 / 3
Re: Как исключить item из ЧПУ в K2?
« Ответ #43 : 06.06.2012, 13:18:05 »
Прикреплю пока тему, просьба протестировавшим данное решение отписаться о результатах.

А что там может не работать? логика простая, если только один параметр поступает (в стоковом виде такого невозможно), то ищем такой алиас в базе
Единственное Joomla двоеточие добавляла вместо пробела, но товарищ moolkin справился)
*

fallout9000

  • Осваиваюсь на форуме
  • 27
  • 1 / 0
  • Работаю за еду
moolkin, попробовал. Багов не вылезло, все гуд работает. Спасибо)
*

moolkin

  • Захожу иногда
  • 65
  • 15 / 0
moolkin, попробовал. Багов не вылезло, все гуд работает. Спасибо)
спасибо не мне, а karabert'у, он всё основное сделал, я тут не при чём )
делаю и помогаю делать сайты на джумле.
кому интересно - стучитесь в мой профиль на фри-лансе
https://www.free-lance.ru/users/Moolkin/
или в аську/скайп
*

HYBRID

  • Захожу иногда
  • 228
  • 47 / 0
  • Они захватят мир
поставил на 2 сайта, полет нормальный, большое спасибо за такой рутер, надо бы на разрабам к2 кинуть в багтрекер, так хотя бы дело с мертвой точки сдвинется а то в роадмапе вроде обозначено удаление всех этих паразитов, но как-то мутно
один вопрос - как избавиться от слеша в конце ссылки на материал?
http://hybrid-lab.com - лаборатория
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Цитировать
один вопрос - как избавиться от слеша в конце ссылки на материал?

Это чтобы дублей не было или роутер добавляет слэш даже после .html?
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

HYBRID

  • Захожу иногда
  • 228
  • 47 / 0
  • Они захватят мир
с этим рутером .html вообще пропал, но это не беда, отключил добавление суффиксов и ссылки стали еще симпатичнее
ссылки на пункты меню выглядят так: http://сайт.ру/меню или http://сайт.ру/меню/меню(2)
а на материалы: http://сайт.ру/меню/меню(2)/материал/
http://hybrid-lab.com - лаборатория
*

Очередной вебмастер

  • Давно я тут
  • 768
  • 55 / 0
  • лысый умный дядя
А ежели через .htaccess попробовать:
Код
# Add/remove trailing slash to (non-file) URLs
# Rewrite "domain.com/foo/ -> domain.com/foo"
<IfModule mod_rewrite.c>
    RewriteRule ^(.*)/$ /$1 [R=301,L]
</IfModule>
Сайты на Joomla, разработка и поддержка
----------
Помог ответ - жми плюс!
*

HYBRID

  • Захожу иногда
  • 228
  • 47 / 0
  • Они захватят мир
не .htaccess не помогает, пробовал перед этим, думал синтаксис неправильный, тем не менее способ не рабочий
http://hybrid-lab.com - лаборатория
*

juvileor

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
На Joomle 2.5 пробовал - всё идёт отлично. Сейчас на другом сайте стоит JoomSEF уже долгое время. Страниц куча - поэтому менять нельзя - из индекса всё повылетает. Буду пробовать на JoomSEF что-то найти.
*

yrygvay

  • Завсегдатай
  • 1293
  • 36 / 3
juvileor Так JoomSEF это сторонний компонент, а он по идее должен и так решать "проблему" с item ?!

или он у вас для чего был установлен?!
Смотрю....
*

juvileor

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Попробовал с заменой Router - всё получилось. Только вот вопрос - как сделать добавление .html ко всем материалам? Сейчас такой вид:
http://musicsens.ru/test/moy-lyubimyiy-ibanez/

Хотелось бы чтобы был
http://musicsens.ru/test/moy-lyubimyiy-ibanez.html
*

juvileor

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
juvileor Так JoomSEF это сторонний компонент, а он по идее должен и так решать "проблему" с item ?!

или он у вас для чего был установлен?!

Я отписывался о компоненте sh404SEF. Он - лучшее решение. Но вот на joomle 1.5.21 - почему то не пошёл, может потому что накладывал поверх JoomSEF. А при установке интеграционного плагина JoomSEF и K2 - вообще сайт падал... Поэтому решил проблему заменой файла router
*

eramar

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Подскажите, пожалуйста, как сделать название материалов на латинице? Стоит sh404SEF и k2 , сейчас ссылки имеют вид
http://site.by/novosti/novosti-apple/новые-возможности-в-ios6.html

и еще в параметрах k2 стоит sh404SEF URL префикс категории для материалов   - только последняя категория, а отображаются все почему-то
« Последнее редактирование: 14.06.2012, 10:52:05 от eramar »
*

moolkin

  • Захожу иногда
  • 65
  • 15 / 0
Подскажите, пожалуйста, как сделать название материалов на латинице? Стоит sh404SEF и k2 , сейчас ссылки имеют вид
http://site.by/novosti/novosti-apple/новые-возможности-в-ios6.html

и еще в параметрах k2 стоит sh404SEF URL префикс категории для материалов   - только последняя категория, а отображаются все почему-то

в параметрах К2, во вкладке расширенные, в поле SEO надо поменять символы замены на вот такой набор: :

Код
Á|A, Â|A, Å|A, Ă|A, Ä|A, À|A, Ć|C, Ç|C, Č|C, Ď|D, É|E, È|E, Ë|E, Ě|E, Ì|I, Í|I, Î|I, Ï|I, Ĺ|L, Ń|N, Ň|N, Ñ|N, Ò|O, Ó|O, Ô|O, Õ|O, Ö|O, Ŕ|R, Ř|R, Š|S, Ś|O, Ť|T, Ů|U, Ú|U, Ű|U, Ü|U, Ý|Y, Ž|Z, Ź|Z, á|a, â|a, å|a, ä|a, à|a, ć|c, ç|c, č|c, ď|d, đ|d, é|e, ę|e, ë|e, ě|e, è|e, ì|i, í|i, î|i, ï|i, ĺ|l, ń|n, ň|n, ñ|n, ò|o, ó|o, ô|o, ő|o, ö|o, š|s, ś|s, ř|r, ŕ|r, ť|t, ů|u, ú|u, ű|u, ü|u, ý|y, ž|z, ź|z, ˙|-, ß|ss, Ą|A, µ|u, Ą|A, µ|u, ą|a, Ą|A, ę|e, Ę|E, ś|s, Ś|S, ż|z, Ż|Z, ź|z, Ź|Z, ć|c, Ć|C, ł|l, Ł|L, ó|o, Ó|O, ń|n, Ń|N, Г?|A, Г‚|A, Д‚|A, Г„|A, Д†|C, Г‡|C, Д¦|C, Д®|D, Д?|D, Г‰|E, Д?|E, Г‹|E, Д№|E, Г«|I, Г®|I, Д±|L, Е?|N, Е‡|N, Г“|O, Г”|O, Е?|O, Г–|O, Е”|R, Е?|R, Е |S, Е№|O, Е¤|T, ЕЏ|U, Г№|U, Е°|U, Г¶|U, Г»|Y, ЕЅ|Z, Е±,Z, Г·|a, Гў|a, Д?|a, Г¤|a, Д‡|c, Г§|c, Д«|c, Д¬|d, Д‘|d, ГЊ|e, Д™|e, ГЌ|e, Д›|e, Г­|i, ГЏ|i, Дє|l, Е„|n, Е?|n, Гі|o, Гґ|o, Е‘|o, Гќ|o, Е·|s, Е›|s, Е™|r, Е•|r, ЕЎ|t, ЕЇ|u, Гє|u, Е‘|u, ГҐ|u, ГЅ|y, Еµ|z, Еє|z, Л™|-, Гј|ss, Д„|A, Вњ|u, Ў|G, Ё|YO, Є|E, Ї|YI, І|I, і|i, ґ|g, ё|yo, ±|#, є|e, ї|yi, А|A, Б|B, В|V, Г|G, Д|D, Е|E, Ж|ZH, З|Z, И|I, Й|Y, К|K, Л|L, М|M, Н|N, О|O, П|P, Р|R, С|S, Т|T, У|U, Ф|F, Х|H, Ц|TS, Ч|CH, Ш|SH, Щ|SCH, Ъ|', Ы|Y, Ь|, Э|E, Ю|YU, Я|YA, а|a, б|b, в|v, г|g, д|d, е|e, ж|zh, з|z, и|i, й|y, к|k, л|l, м|m, н|n, о|o, п|p, р|r, с|s, т|t, у|u, ф|f, х|h, ц|ts, ч|ch, ш|sh, щ|sch, ъ|', ы|y, ь|, э|e, ю|yu, я|ya
делаю и помогаю делать сайты на джумле.
кому интересно - стучитесь в мой профиль на фри-лансе
https://www.free-lance.ru/users/Moolkin/
или в аську/скайп
*

Blister

  • Новичок
  • 2
  • 0 / 0
Спасибо за исправление роутера. Протестировал (ЧПУ родное). Выявленные проблемы:
1) Вложения в материалах перестали скачиваться, т.к. ссылка на них стала вести в никуда. До обновления: .../partneram/prezentatsii/item/download/12_b91d34551c7eb434f47d860f49eaeb26. После обновления: .../partneram/12_b91d34551c7eb434f47d860f49eaeb26. Необходимо добавить исключение или редирект на правильную ссылку.
2) Автор топика пишет, что проблема с появлением в ссылке на материал /item/ и id начинается с 3 уровня вложенности. На самом деле со 2-го. Обновление это исправляет. Но не исправляет ссылку на категорию. Если есть 4-й и более уровень вложенности, то начиная с 3-го в ссылке на категорию появляются .../itemlist/category/ID-. Как временное решение пока дублирую в основном меню пункты со ссылками на уровни категорий и прописанными псевдонимами (копирующими псевдонимы соответствующих категорий). Но это неудобно.
Мысли по поводу id в ссылке материала/категории. В случае его присутствия корректировка псевдонима не влияет на доступность ссылки. Т.е. при необходимости можем вносить корректировки при оптимизации и при этом не вылетим из поиска т.к. материал/категория остаются доступными. При новом роутере изменение даже одного символа в псевдониме ведет посетителя по старой ссылке на 404 страницу. Какие будут мысли от уважаемого общества? Переходить на sh404SEF и подобные не рассматриваем.
*

BHy4eK

  • Захожу иногда
  • 110
  • 1 / 0
найти файл  components/com_k2/router.php
Скопировать в него вот этот текст, удалив то, что там было (нету времени выбирать то, что там было изменено)

Код
<?php
/**
 * @version                $Id: router.php 1492 2012-02-22 17:40:09Z joomlaworks@gmail.com $
 * @package                K2
 * @author                JoomlaWorks http://www.joomlaworks.net
 * @copyright        Copyright (c) 2006 - 2012 JoomlaWorks Ltd. All rights reserved.
 * @license                GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die('Restricted access');
//SELECT alias FROM `j25_k2_items` WHERE id = "1" LIMIT 1
//SELECT id FROM `j25_k2_items` WHERE alias = "test" LIMIT 1
function K2BuildRoute( & $query) {

    $segments = array ();

    $menu = & JSite::getMenu();
    if ( empty($query['Itemid'])) {
        $menuItem = & $menu->getActive();
    }
    else {
        $menuItem = & $menu->getItem($query['Itemid']);
    }
    $mView = ( empty($menuItem->query['view']))?null:$menuItem->query['view'];
    $mTask = ( empty($menuItem->query['task']))?null:$menuItem->query['task'];
    $mId = ( empty($menuItem->query['id']))?null:$menuItem->query['id'];
    $mTag = ( empty($menuItem->query['tag']))?null:$menuItem->query['tag'];

    if ( isset ($query['layout'])) {
        unset ($query['layout']);
    }

    if ( $mView == @$query['view'] && $mTask == @$query['task'] && $mId == @intval($query['id']) &&  @intval($query['id']) > 0 ) {
        unset ($query['view']);
        unset ($query['task']);
        unset ($query['id']);
    }

    if ( $mView == @$query['view'] && $mTask == @$query['task'] && $mTag == @$query['tag'] && isset($query['tag']) ) {
        unset ($query['view']);
        unset ($query['task']);
        unset ($query['tag']);
    }

    if ( isset ($query['view'])) {
        $view = $query['view'];
        $segments[] = $view;
        unset ($query['view']);
    }

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

    if ( isset ($query['id'])) {
        $id = $query['id'];
        $segments[] = $id;
        unset ($query['id']);
    }

    if ( isset ($query['cid'])) {
        $cid = $query['cid'];
        $segments[] = $cid;
        unset ($query['cid']);
    }

    if ( isset ($query['tag'])) {
        $tag = $query['tag'];
        $segments[] = $tag;
        unset ($query['tag']);
    }

    if ( isset ($query['year'])) {
        $year = $query['year'];
        $segments[] = $year;
        unset ($query['year']);
    }

    if ( isset ($query['month'])) {
        $month = $query['month'];
        $segments[] = $month;
        unset ($query['month']);
    }

    if ( isset ($query['day'])) {
        $day = $query['day'];
        $segments[] = $day;
        unset ($query['day']);
    }

    if ( isset ($query['task'])) {
        $task = $query['task'];
        $segments[] = $task;
        unset ($query['task']);
    }

        // Изменения.
        if(isset($segments[0]))
        {
                if($segments[0]=='item')
                {
                        $alias = explode(':',$segments[1]);
                        $segments[0]=$alias[1];
                        $segments[1]=null;
                }
        }
        // Изменения. Конец.

    return $segments;
}

function K2ParseRoute($segments) {
    $vars = array ();

        // Изменения.
        $id = false;
        if(count($segments)==1)
        {
                $alias = $segments[0];
                $alias = str_replace ( ':' , '-' , $alias);
                $db = &JFactory::getDBO();
                $query = 'SELECT id FROM `#__k2_items` WHERE alias = "'.$alias.'" LIMIT 1';
                $db->setQuery($query);
                $id = $db->loadResult();
        }

        if($id)
        {
                $vars['view'] = 'item';
                $vars['task'] = $id.':'.$alias;
                $vars['id'] = $vars['task'];
        }else{
        // Изменения. Конец.

    $vars['view'] = $segments[0];
    if (!isset($segments[1]))
        $segments[1]='';
    $vars['task'] = $segments[1];

    if ($segments[0] == 'itemlist') {

        switch($segments[1]) {

            case 'category':
                $vars['id'] = $segments[2];
                break;

            case 'tag':
                if (isset($segments[2]))
                    $vars['tag'] = $segments[2];
                break;

            case 'user':
                if (isset($segments[2]))
                    $vars['id'] = $segments[2];
                break;

            case 'date':
                if (isset($segments[2]))
                    $vars['year'] = $segments[2];
                if (isset($segments[3]))
                    $vars['month'] = $segments[3];
                if (isset($segments[4])) {
                    $vars['day'] = $segments[4];
                }
                break;

        }

    }

    else if ($segments[0] == 'item') {

        switch($segments[1]) {

            case 'edit':
                if (isset($segments[2]))
                    $vars['cid'] = $segments[2];
                break;

            case 'download':
                if (isset($segments[2]))
                    $vars['id'] = $segments[2];
                break;

            default:
                $vars['id'] = $segments[1];
                break;

        }

    }

        if($segments[0] == 'comments' && isset($segments[1]) && $segments[1] == 'reportSpammer') {
                $vars['id'] = $segments[2];
        }

        // Изменения.
        }
        // Изменения. Конец.

    return $vars;
}

С П А С И Б О ! ];
 
*

eep

  • Новичок
  • 2
  • 0 / 0
Добрый день!
Недавно возникла необходимость изменить адрес "site.com/category/item/1-material" на "site.com/category/material.html" для определенной категории.
Вижу, что тут тема активно обсуждается, поэтому решил сделать доброе дело и бросить свой вариант кода, может кому и пригодится :)
Решил следующим образом:
Спойлер
[свернуть]
Измененный код естественно в файле ../components/com_k2/router.php
Все протестировано, работает как часы :)

P.S. естественно алиасы для материалов должны быть уникальными
« Последнее редактирование: 29.06.2012, 15:21:10 от eep »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

k2 router - исключается /item /itemlist/category/ убираем id из ссылок, транлитерация для тегов

Автор lammer

Ответов: 83
Просмотров: 37415
Последний ответ 12.03.2019, 10:07:10
от Pizzadox
Удалить из url component/k2/item!

Автор skb4com

Ответов: 6
Просмотров: 16425
Последний ответ 03.03.2017, 11:16:37
от Hollyfild
k2 - itemlist, item

Автор Semukha

Ответов: 2
Просмотров: 1372
Последний ответ 16.09.2016, 18:24:18
от Septdir
Убрать item

Автор amor333

Ответов: 4
Просмотров: 1220
Последний ответ 13.02.2016, 20:22:42
от amor333
как убрать item и id статьи из url?

Автор serjr2d2

Ответов: 1
Просмотров: 1648
Последний ответ 10.12.2015, 07:51:35
от serjr2d2