Главная Новости

Человекопонятные адреса в Joomla 1.5

Опубликовано: 01.09.2018

видео Человекопонятные адреса в Joomla 1.5

Общие настройки. Часть 2. Joomla CMS (42/48)

В Joomla более ранних версий, чем 1.5.х ссылки нельзя было видоизменять и сделать их, как в WordPress, человекопонятными. Начиная с версии 1.5.ч такая возможность появилась – теперь ссылки можно редактировать и видоизменять. Модуль mod_rewrite на apach включать совсем необязательно. Как пример, приведем статью «Welcome to Joomla». Пример первой ссылки – без применения mod_rewrite, пример второй – с применением модуля mod_rewrite:



http://www.example.com/index.php/the­news/1­latest­news/1­welcome­to­joomla

http://www.example.com/the­news/1­latest­news/1­welcome­to­joomla

Псевдонимы (алиасы)

Псевдоним сайта добавляется в адрес сайта вместо заголовка. В целях безопасности некоторые символы в UTF-8 подменяются эквивалентными, но кодированными в ASCII7. Псевдоним, или алиас создается самим пользователем и может быть любым, но в любом случае – безопасным, в случае неправильного применения символов вы получите предупреждение. Простейший способ получить безопасный псевдоним – применить метод Jtable::check(). Пример:


Настройка ЧПУ в Joomla 2 5

1 2 3 4 5 6 7 8 9 function check() { jimport( 'joomla.filter.output' ); $alias = JOutputFilter::stringURLSafe( $this->title ); if(empty( $this->alias ) || $this->alias === $alias ) { $this->alias = $alias; } /* Все проверки */ return true; }

function check() { jimport( 'joomla.filter.output' ); $alias = JOutputFilter::stringURLSafe( $this->title ); if(empty( $this->alias ) || $this->alias === $alias ) { $this->alias = $alias; } /* Все проверки */ return true; }


15-seo-secret-07. Что такое ЧПУ и страница 404

Если алиас небезопасен или является пустым полем, то вместо него будет использован заголовок сайта.

Слаг (код для вставки в сайт)

Как продолжение – использование кода «1­welcome­to­joomla». Первая часть кода – идентификатор записи, вторая часть – псевдоним. Разделяются эти составляющие дефисом.

1 2 $query = 'SELECT a.* CASE WHEN CHAR_LENGTH (a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug,'. [...];

$query = 'SELECT a.* CASE WHEN CHAR_LENGTH (a.alias) THEN CONCAT_WS(\':\', a.id, a.alias) ELSE a.id END as slug,'. [...];

Дальше вместо идентификатора задействуется слаг-код.

Метод JRoute

Данный метод переводит существующие ссылки в ссылки произвольные. Метод имеет 3 параметра значения:

1 JRoute::_( $url, $xhtml = true, $ssl=0 );

JRoute::_( $url, $xhtml = true, $ssl=0 );

$ssl — целое число, указывающее на шифровку адреса. 1 – безопасный адрес, 0 — обычный, -1 означает, что адрес небезопасен.

$url — содержти относительную или абсолютную внутреннюю ссылку.

$xhtml – необязательное значение, указывающее на преобразование результата в XHTML.

Работа метода происходит следующим образом:

1 JRoute::_( 'index.php?view=article&id='.$row->slug );

JRoute::_( 'index.php?view=article&id='.$row->slug );

$row->slug — параметр, комбинирующий идентификатор и заголовок-псевдоним.

Еще одно преимущество JRoute – возможность обработки имени компонента и идентификатора меню — $option и $Itemid. Теперь ссылка не использует эти компоненты, в отличие от более ранних версий Joomla.

Построение JRouter производится в два этапа:

1. Создается маршрутизатор. В действующих приложениях это делает JRouter.

2. Создается обработчик маршрута. Для этого JRouter должен найти router.php в каталоге.

router.php

Функции в router.php выполняют следующие задачи – построение адреса и обработка ссылки. Существует три вида – вид рубрик view = categories, вид одной рубрики option = category и вид статьи view=article.

Работа маршрутизатора:

1 2 3 4 5 6 7 8 9 10 11 12 function [Componentname]BuildRoute( &$query ) { $segments = array(); if(isset($query['view'])) { $segments[] = $query['view']; unset( $query['view'] ); } if(isset($query['id'])) { $segments[] = $query['id']; unset( $query['id'] ); }; return $segments; } JRoute::_( 'index.php?view=article&id='.$row->slug );

function [Componentname]BuildRoute( &$query ) { $segments = array(); if(isset($query['view'])) { $segments[] = $query['view']; unset( $query['view'] ); } if(isset($query['id'])) { $segments[] = $query['id']; unset( $query['id'] ); }; return $segments; } JRoute::_( 'index.php?view=article&id='.$row->slug );

Массив $query передается к [Componentname] BuildRoute. Этот метод добавляет в правильном порядке части в $segments. Значение $query должно быть отключено, в противном случае JRouter будет добавлять его в адрес ссылки.

Продолжение статьи читайте здесь .

Понравилась запись? Подпишитесь на обновления по почте:

Facebook

Читайте похожие статьи

3D стерео фильмы для 5D
rss