Как убрать item и id в K2

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

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

Это выглядит не совсем красиво, поэтому здесь мы рассмотрим вариант, при котором ссылги будут отображаться без этих добавок

Есть два варианта пути!

Первый и самый простой нужно перейти в настройки компонента К2 в админке и чтобы убрать item, поставить галочку Да на "Включить дополнительные SEF для K2 URL адресов". Чтобы убрать id поставь Нет в "использовать ID материала в URL"

Второй путь - перелопатить код PHP (сделать это путем редактирования файла «router.php»)

item1 

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

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

rout

Далее открываем файл 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 = &amp; $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'] &amp;&amp; $mTask == @$query['task'] &amp;&amp; $mId == @intval($query['id']) &amp;&amp; @intval($query['id']) > 0 ) { unset ($query['view']); unset ($query['task']); unset ($query['id']); }
 
if ( $mView == @$query['view'] &amp;&amp; $mTask == @$query['task'] &amp;&amp; $mTag == @$query['tag'] &amp;&amp; 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 = &amp;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' &amp;&amp; isset($segments[1]) &amp;&amp; $segments[1] == 'reportSpammer') {
 
$vars['id'] = $segments[2]; }
 
//Изменения. }
 
return $vars; }
 
 

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

item2

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

<a href="http://www.serbga.ru/images/NEWS/web/web_coding/24.10.2013/item2.jpg" target="_blank">if(isset($segments[0]))
{
if($segments[0]=='item')
{
$alias = explode(':',$segments[1]);
$segments[0]=$alias[1];
$segments[1]=null;
}
}</a>

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

<a href="http://www.serbga.ru/images/NEWS/web/web_coding/24.10.2013/item2.jpg" target="_blank">if(isset($segments[0]))
{
if($segments[0]=='item')
{
$alias = explode(':',$segments[1]);
$segments[0]=null;
$segments[1]=$alias[1];
}
}</a>
Просмотров 1570
(1 like)
Последнее изменение Среда, 23 Ноябрь 2016

Поделиться с другими


 

Антон Рубаненко 17.02.2015
Чтобы убрать item, поставь Да на "Включить дополнительные SEF для K2 URL адресов". Чтобы убрать id поставь Нет в "использовать ID материала в URL"
   
© Все права защищены. Видеосъёмка СПБ Sankt-video 2019