Новости Joomla

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

Релиз Joomla 6.1.0

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

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

goga_pgasovav

  • Захожу иногда
  • 445
  • 6 / 0
  • Внимательный джумловод
Есть ли какая-то альтернатива плагину HP Router?
Может как-то можно изменить стандартный SEF таким образом, чтобы он не выводил ID материала в урле?
Я имею ввиду:
чтобы URL mysite.com/news/22-good-news выглядел как mysite.com/news/good-news

HP Router отлично справлялся со своей задачей, до тех пор пока не потребовалась многоязычность, и в связке с JoomFish начались траблы.
*

goga_pgasovav

  • Захожу иногда
  • 445
  • 6 / 0
  • Внимательный джумловод
очень долго искал информацию для решения этой задачи.
Лишь на одном забугорном сайте добрый человек по имени Marvin Ryan выложил модифицированный router.php который как раз таки и делает то, что мне нужно!

1. Идем в components/com_content и находим там файл router.php
2. Заменяем все его содержимое на:

Код
<?php
/**
* @version $Id: router.php 14401 2010-01-26 14:10:00Z louis $
* @package Joomla
* @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

function ContentBuildRoute(&$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'];
$mCatid = (empty($menuItem->query['catid']))? null : $menuItem->query['catid'];
$mId = (empty($menuItem->query['id']))? null : $menuItem->query['id'];

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

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

if (($mView == 'article') and (isset($query['id'])) and ($mId == intval($query['id']))) {
unset($query['view']);
unset($query['catid']);
unset($query['id']);
}

if (isset($view) and ($view == 'section' && !empty($query['Itemid']))) {
if (($mView != 'section') or ($mView == 'section' and $mId != intval($query['id']))) {
$segments[] = 'section';
unset($query['Itemid']);
}
}

if (isset($view) and $view == 'category') {
if ($mId != intval($query['id']) || $mView != $view) {
$temp = explode(':',$query['id']);
if(count($temp) > 1)
{
$query['id'] = $temp[1];
}

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

if (isset($query['catid'])) {

if ((($view == 'article') and ($mView != 'category') and ($mView != 'article') and ($mCatid != intval($query['catid'])))) {
$temp = explode(':',$query['catid']);
if(count($temp) > 1)
{
$query['catid'] = $temp[1];
}

$segments[] = $query['catid'];
}
unset($query['catid']);
};

if(isset($query['id'])) {
if (empty($query['Itemid'])) {
$temp = explode(':',$query['id']);
if(count($temp) > 1)
{
$query['id'] = $temp[1];
}

$segments[] = $query['id'];
} else {
if (isset($menuItem->query['id'])) {
if($query['id'] != $mId) {
$temp = explode(':',$query['id']);
if(count($temp) > 1)
{
$query['id'] = $temp[1];
}

$segments[] = $query['id'];
}
} else {
$temp = explode(':',$query['id']);
if(count($temp) > 1)
{
$query['id'] = $temp[1];
}

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

if(isset($query['year'])) {

if(!empty($query['Itemid'])) {
$segments[] = $query['year'];
unset($query['year']);
}
};

if(isset($query['month'])) {

if(!empty($query['Itemid'])) {
$segments[] = $query['month'];
unset($query['month']);
}
};

if(isset($query['layout']))
{
if(!empty($query['Itemid']) && isset($menuItem->query['layout'])) {
if ($query['layout'] == $menuItem->query['layout']) {

unset($query['layout']);
}
} else {
if($query['layout'] == 'default') {
unset($query['layout']);
}
}
};

return $segments;
}

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

$menu =& JSite::getMenu();
$item =& $menu->getActive();
$db =& JFactory::getDBO();
$count = count($segments);


if(!isset($item))
{
$vars['view']  = $segments[0];
$vars['id']    = $segments[$count - 1];
if($vars['view'] == 'article')
{
$query = 'SELECT id FROM #__content WHERE alias = '.$db->Quote($vars['id']);
} elseif($vars['view'] == 'category') {
$query = 'SELECT id FROM #__categories WHERE section > 0 && alias = '.$db->Quote($vars['id']);
}
$db->setQuery($query);
$vars['id'] = $db->loadResult();
return $vars;
}

switch($item->query['view'])
{
case 'section' :
{
if($count == 1) {
$vars['view'] = 'category';

if(isset($item->query['layout']) && $item->query['layout'] == 'blog') {
$vars['layout'] = 'blog';
}
}

if($count == 2) {
$vars['view']  = 'article';
$vars['catid'] = $segments[$count-2];
}

$vars['id']    = $segments[$count-1];

} break;

case 'category'   :
{
$vars['id']   = $segments[$count-1];
$vars['view'] = 'article';

} break;

case 'frontpage'   :
{
$vars['id']   = $segments[$count-1];
$vars['view'] = 'article';

} break;

case 'article' :
{
$vars['id']   = $segments[$count-1];
$vars['view'] = 'article';
} break;

case 'archive' :
{
if($count != 1)
{
$vars['year']  = $count >= 2 ? $segments[$count-2] : null;
$vars['month'] = $segments[$count-1];
$vars['view']  = 'archive';
} else {
$vars['id']   = $segments[$count-1];
$vars['view'] = 'article';
}
}
}

$alias = explode(':', $vars['id']);
if((int) $alias[0] > 0)
{
$vars['id'] = $alias[0];
} else {
if(count($alias) > 1)
{
$vars['id'] = $alias[0].'-'.$alias[1];
}

if($vars['view'] == 'article')
{
$query = 'SELECT id FROM #__content WHERE alias = '.$db->Quote($vars['id']);
} elseif($vars['view'] == 'category') {
$query = 'SELECT id FROM #__categories WHERE section > 0 && alias = '.$db->Quote($vars['id']);
}
$db->setQuery($query);
$vars['id'] = $db->loadResult();
}

return $vars;
}
3. Всё прекрасно работает...
... но. В переключателе языков JoomFish теперь ссылки вроде: mysite.com/news/22
т.е. с точностью до наоборот, остался один лишь ID материала...
может приведенный выше код поможет исправить данную проблему?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка 404 категория материалов Артио

Автор ReefTank

Ответов: 0
Просмотров: 3958
Последний ответ 01.07.2019, 10:23:50
от ReefTank
После переноса материалов из Joomla 1.5 в Joomla 3.8 появились вопросы по работе

Автор WeX

Ответов: 0
Просмотров: 1704
Последний ответ 20.11.2017, 11:42:16
от WeX
Alias для меню и материалов

Автор huligan

Ответов: 0
Просмотров: 1578
Последний ответ 25.05.2015, 12:40:03
от huligan
Изменение SEF через правку router.php

Автор jouser

Ответов: 3
Просмотров: 1609
Последний ответ 05.12.2014, 11:27:25
от kitSS
Router SEF

Автор MadChild

Ответов: 0
Просмотров: 1202
Последний ответ 24.07.2014, 16:53:05
от MadChild