Удалить ID из url (ссылки) материалов Joomla. Убрать id из url joomla


Убираем id из урла joomla 2.5.x/3.x.x

Достоинством, который и делает метод, описанный в данной статье, достаточно популярным, является то, что не нужно использовать сторонние расширения (решается все непосредственно средствами самой CMS) и, как следствие, система не нагружается дополнительными запросами, а стало быть сайт работает быстрее. К тому же это сложно назвать хаком, поскольку дальнейшие обновления никак не повлияют на, активированные данным способом, настройки.

 Рекомендации.

Использование описанного в этой статье метода влечет за собой изменение адресов (URL). Поэтому его следует применять до того, как вы начнете добавлять материалы. Если ресурс уже наполнен и индексируется поисковыми системами, то будьте готовы к тому, что в выдаче ПС появятся ссылки на ваш сайт, которые ведут на страницу ошибок 404.

Открываем в блокноте файл ваш_сайт/administrator/components/com_content/config.xml

Сразу же после строки description="COM_CONTENT_CONFIG_ARTICLE_SETTINGS_DESC"> (у меня это строка 6) вставляем следующий код:

<field name="sef_advanced_link" type="radio" default="1" label="SefAdvancedMode" description="Remove Item ID from Content URL?"> <option value="0">JNO</option> <option value="1">JYES</option> </field>

Сохраняем файл. Переходим в админ панель сайта, выбираем в верхнем меню Материалы/Менеджер материалов. Нажимаем кнопку Настройки в верхней части страницы.

Появится всплывающее окно с настройками. Переходим во вкладку Материалы и видим пункт SefAdvancedMode с двумя радио переключателями Нет и Да. Проверяем, что бы отмечен был переключатель Да (он должен быть отмечен по умолчанию), при необходимости активируем нужный пункт. Сохраняемся и закрываем окно.

Открываем главную страницу сайта и начинаем переходить по ссылкам. Если все сделано правильно, id в URL-ах отображаться не будут.

Теперь изменения, внесенные в файл config.xml, как это не удивительно, можно спокойно удалить (а можно и не трогать - файл пере запишется при следующих обновлениях, но активированная настройка останется прежней).

Возможные проблемы

В своей практике мне не приходилось сталкиваться с какими либо неприятностями при использовании данного хака. Но в интернете я часто встречаю описание, что после изменения файла config.xml возможны ошибки при обращении к материалам сайта. Если произошел такой случай, то открываем в блокноте файл ваш_сайт/components/com_content/router.php, находим строку if ($count == 1) { (у меня это 226 строка) и изменяем ее на строку вида if ($count == 1 && !$advanced) {.

данный текст взял отсюда http://siteis.ru/administrirovanie-joomla/ubiraem-id-iz-urla

famedsoft.ru

Убираем id из урла joomla 2.5.x/3.x.x

Достоинством, который и делает метод, описанный в данной статье, достаточно популярным, является то, что не нужно использовать сторонние расширения (решается все непосредственно средствами самой CMS) и, как следствие, система не нагружается дополнительными запросами, а стало быть сайт работает быстрее. К тому же это сложно назвать хаком, поскольку дальнейшие обновления никак не повлияют на, активированные данным способом, настройки.Рекомендации.

Использование описанного в этой статье метода влечет за собой изменение адресов (URL). Поэтому его следует применять до того, как вы начнете добавлять материалы. Если ресурс уже наполнен и индексируется поисковыми системами, то будьте готовы к тому, что в выдаче ПС появятся ссылки на ваш сайт, которые ведут на страницу ошибок 404.

Открываем в блокноте файл ваш_сайт/administrator/components/com_content/config.xml

Сразу же после строки description="COM_CONTENT_CONFIG_ARTICLE_SETTINGS_DESC"> (у меня это строка 6) вставляем следующий код:<field name="sef_advanced_link" type="radio" default="1" label="SefAdvancedMode" description="Remove Item ID from Content URL?"><option value="0">JNO</option><option value="1">JYES</option></field>

Сохраняем файл. Переходим в админ панель сайта, выбираем в верхнем меню Материалы/Менеджер материалов. Нажимаем кнопку Настройки в верхней части страницы.

Появится всплывающее окно с настройками. Переходим во вкладку Материалы и видим пункт SefAdvancedMode с двумя радио переключателями Нет и Да. Проверяем, что бы отмечен был переключатель Да (он должен быть отмечен по умолчанию), при необходимости активируем нужный пункт. Сохраняемся и закрываем окно.

Открываем главную страницу сайта и начинаем переходить по ссылкам. Если все сделано правильно, id в URL-ах отображаться не будут.

Теперь изменения, внесенные в файл config.xml, как это не удивительно, можно спокойно удалить (а можно и не трогать - файл пере запишется при следующих обновлениях, но активированная настройка останется прежней).

Возможные проблемы

В своей практике мне не приходилось сталкиваться с какими либо неприятностями при использовании данного хака. Но в интернете я часто встречаю описание, что после изменения файла config.xml возможны ошибки при обращении к материалам сайта. Если произошел такой случай, то открываем в блокноте файл ваш_сайт/components/com_content/router.php, находим строку if ($count == 1) { (у меня это 226 строка) и изменяем ее на строку вида if ($count == 1 && !$advanced) {.

joomla4.ru

Убираем id из урла joomla 2.5.x/3.x.x

Достоинством, который и делает метод, описанный в данной статье, достаточно популярным, является то, что не нужно использовать сторонние расширения (решается все непосредственно средствами самой CMS) и, как следствие, система не нагружается дополнительными запросами, а стало быть сайт работает быстрее. К тому же это сложно назвать хаком, поскольку дальнейшие обновления никак не повлияют на, активированные данным способом, настройки.

Рекомендации.

Использование описанного в этой статье метода влечет за собой изменение адресов (URL). Поэтому его следует применять до того, как вы начнете добавлять материалы. Если ресурс уже наполнен и индексируется поисковыми системами, то будьте готовы к тому, что в выдаче ПС появятся ссылки на ваш сайт, которые ведут на страницу ошибок 404.

Открываем в блокноте файл ваш_сайт/administrator/components/com_content/config.xml

Сразу же после строки description="COM_CONTENT_CONFIG_ARTICLE_SETTINGS_DESC"> (у меня это строка 6) вставляем следующий код:

<field name="sef_advanced_link" type="radio" default="1" label="SefAdvancedMode" description="Remove Item ID from Content URL?"> <option value="0">JNO</option> <option value="1">JYES</option> </field>

Сохраняем файл. Переходим в админ панель сайта, выбираем в верхнем меню Материалы/Менеджер материалов. Нажимаем кнопку Настройки в верхней части страницы.

Появится всплывающее окно с настройками. Переходим во вкладку Материалы и видим пункт SefAdvancedMode с двумя радио переключателями Нет и Да. Проверяем, что бы отмечен был переключатель Да (он должен быть отмечен по умолчанию), при необходимости активируем нужный пункт. Сохраняемся и закрываем окно.

Открываем главную страницу сайта и начинаем переходить по ссылкам. Если все сделано правильно, id в URL-ах отображаться не будут.

Теперь изменения, внесенные в файл config.xml, как это не удивительно, можно спокойно удалить (а можно и не трогать - файл пере запишется при следующих обновлениях, но активированная настройка останется прежней).

Возможные проблемы

В своей практике мне не приходилось сталкиваться с какими либо неприятностями при использовании данного хака. Но в интернете я часто встречаю описание, что после изменения файла config.xml возможны ошибки при обращении к материалам сайта. Если произошел такой случай, то открываем в блокноте файл ваш_сайт/components/com_content/router.php, находим строку if ($count == 1) { (у меня это 226 строка) и изменяем ее на строку вида if ($count == 1 && !$advanced) {.

Автор: Super User

siteis.ru

Удалить ID из url (ссылки) материалов Joomla - Без логики

Способ как убрать id из урлов без сторонних компонентов.

По моему с id-шниками вполне можно жить, но сео-шаманы против...

Причём, выходит так, что эта функция была заложена самими разработчиками движка, но отключена, дабы избежать двусмысленных ситуаций и ошибок, в смысле использовать данный метод разработчики использовать не рекомендуют. Ведь проще оставить пару цифр в ссылке, нежели получать ошибки, вместе с недовольством пользователей...

Данный метод избавит нас от цифр в начале URL материала Joomla, с совсем не сложным вмешательством в исходные файлы. Причем, если помнить, про это, то ничего не изменится и при обновлениях движка.

Естественно, проиндексированные материалы выдадут закономерную 404. Нужно будет заморочиться с редиректами, но это уже совсем другая история...

Ещё! Нужно помнить, что одинаково названые материалы, сгенерируют одинаковые же алиасы (во-о-о-от зачем нужны ID), но это легко изменить - если помнить.

Приступим

Вносим изменения.

Нам нужен файл: /administrator/components/com_content/config.xml

В нём после строки:

description="COM_CONTENT_CONFIG_ARTICLE_SETTINGS_DESC">

(На момент написания эта строка была 6-й)

Далее вставляем код:

<field name="sef_advanced_link" type="radio" default="1" label="SefAdvancedMode" description="Remove Item ID from Content URL?"> <option value="0">JNO</option> <option value="1">JYES</option> </field>

Настраиваем

Переходим в настройки менеджера материалов, ищем пункт SefAdvancedModeс, у него должно быть два радио-переключателя: Нет и Да. Ставим ДА и сохраняемся!

Проверяем URL материалов на сайте. Всё должно работать!

Важно!

После очередного обновления CMS, изменения в фале : /administrator/components/com_content/config.xml затрутся перезапишутся. Но работать всё будет как и прежде, ПОКА не залезть в настройки менеджера материалов и не сохранить их!!! То есть нужно куда-то себе записать, что такое может быть...

Ещё...

При использовании этого способа всё работает нормально, но это были мелкие сайты, где всё видно. На форуме же (ссылки написаны ниже), говорят, что возможно получить ошибку при обращении к материалам с алиасом из одного слова, вроде... Решается так: в /components/com_content/router.php заменить код:

(для J2.5 и 3.x отличается количеством знаков "=")

// then we assume it is a category. If they don't we assume it is an article if ($count === 1) {

На код:

// then we assume it is a category. If they don't we assume it is an article if ($count === 1 && !$advanced) {

Итог...

Будем ждать Joomla 4 и надеяться!

Пока же, если нет острой необходимости трогать ай-дишники, то пусть будут, мне кажется...

bez-logiki.ru

Как удалить item и id из url в K2 Joomla 2.5 или joomla 3

<?php

/**

* @version                $Id: router.php 1492 2012-02-22 17:40:09Z  [email protected] $

* @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;

}

forwww.com


Prostoy-Site | Все права защищены © 2018 | Карта сайта