Logo
Версия для печати

K2 - как убрать item и id статьи из url

  • Автор  SeRbGa

После установки компонента К2 на любую версию CMS Joomla (1.5, 2.5, 3.0), ссылки в адресной строке выглядят не совсем так как в структуре меню или каталогов в административной части.

Появляютя дополнительные данные в поле URL ("item" и "ID" статьи):

item

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

Необходимо все-таки убрать item и id статьи из url. Вобщем решение как всегда на поверхности - и можно сделать это путем редактирования файла «router.php» в структуре сайта:

rout

Путь где лежит файл - "корневая папка сайта"/components/com_k2/router.php.

Перед тем как его открыть я сделал копию файла на всякий пожарный.

Далее открываем файл router.php, удаляем все содержимое и вставляем код, который находится ниже.

<?php

// 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]=null; $segments[1]=$alias[1]; } } // Изменения. Конец.

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; }

После замены кода ссылки примут нормальный вид: 

item2

Если в конце ссылки вдруг окажется "слэш" - найдите в этом же файле стороки:

if(isset($segments[0]))
{
if($segments[0]=='item')
{
$alias = explode(':',$segments[1]);
$segments[0]=$alias[1];
$segments[1]=null;
}
}

и замените на эти:


if(isset($segments[0]))
{
if($segments[0]=='item')
{
$alias = explode(':',$segments[1]);
$segments[0]=null;
$segments[1]=$alias[1];
}
}

Последнее изменениеЧетверг, 24 Октябрь 2013 15:52
  • Оцените материал
    (8 голосов)
  • Опубликовано в Web coding
  • Прочитано 35304 раз
SeRbGa

SeRbGa

мечтатель

Сайт: www.serbga.ru

Оставить комментарий

SeRbGa