Новости Joomla

Вышли релизы Joomla 6.1 и Joomla 5.4.5: новые возможности и стабильность

Релиз Joomla 6.1.0

Проект Joomla! объявил о доступности Joomla 6.1 [Nyota] — новой минорной версии шестой серии, а также о выпуске релиза исправлений ошибок Joomla 5.4.5. Релиз 6.1 приносит ряд долгожданных функций, повышающих удобство управления контентом и защиту от спама.

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

С тех пор, как в поисковиках появились нейроответы ИИ, трафик на сайты стал гораздо меньше, так как пользователь стал получать информацию непосредственно на странице поисковика без перехода на сайт. Но при генерации ответа ИИ указывает источники - ссылки на сайты, информация которых была использована для генерации ответа.

Долгое время у всех был немой вопрос: "Как же теперь оценивать эффективность сайта?". Теперь этот на этот вопрос отчасти отвечает новый инструмент аналитики.
Процитируем справку Яндекса по инструменту:
На запросы пользователей в Поиске может отвечать Алиса AI. Ответы появляются в поисковой выдаче, в объектных ответах и на отдельной вкладке Поиска. В них чаще всего упоминаются страницы сайтов, на которые Алиса AI опиралась при подготовке ответа.

С помощью инструмента Видимость сайта в Алисе AI в Яндекс Вебмастере вы можете:
- узнать долю упоминаний сайта среди источников в ответах Алисы AI в Поиске и отследить динамику изменений;
- посмотреть примеры запросов, по которым страницы сайта показываются в ответах Алисы AI;
- посмотреть примеры сайтов той же тематики, которые часто упоминаются в генеративной выдаче.
Данные отображаются за последние 3 месяца и обновляются каждую неделю.

Статистика собирается только по тем запросам, по которым ваш сайт уже находится достаточно высоко в поисковой выдаче. Это позволяет анализировать видимость именно в той нише, где вы заинтересованы в продвижении, и избегать «размытия» по малозначимым для вас запросам.

Кроме того, такой подход обусловлен работой Алисы AI: она строит ответ с опорой на самые релевантные, информативные и качественные страницы, которые обычно занимают высокие позиции в Поиске.

Чтобы увидеть статистику вашего сайта в меню Яндекс.Вебмастера перейдите в раздел "Эффективность" и далее в "Показы сайта в Алисе AI".

В начале февраля 2026г. был вебинар с Михаилом Сливинским - амбассадором Поиска Яндекса, и в рамках вебинара была озвучена просьба сделать такой инструмент. Скорее всего разработка на тот момент уже велась, потому что от просьбы до релиза прошло около 2-х месяцев. В любом случае хорошо, что такая статистика появилась.

Показы сайта в Алисе AI в вашем Яндекс,Вебмастере.

@joomlafeed

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

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
Просмотров: 44270
Последний ответ 12.03.2019, 10:07:10
от Pizzadox
Удалить из url component/k2/item!

Автор skb4com

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

Автор Semukha

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

Автор amor333

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

Автор serjr2d2

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