Навигация: К началу / Шаблонизатор Smarty


Создаем ЧПУ (человеко-понятные урлы) в шаблонах Smarty.

Автор:Сергей Кузнецов

Примечание: "Урл" - он же URL - универсальный адрес ресурса, она же ссылка на ресурс.

Человеко-понятные урлы - это ссылки, которые выглядят не запутанным нагромождением вопросительных знаков и амперсандов (значок &) и передаваемых в них параметров (типа такого - view_bill.php?id_bill=11 - и это еще не самый страшный вариант), а как ссылки на статичные html-страницы - например bill_11.htm. Кроме того, что они воспринимаются гораздо легче человеком, такие ссылки охотнее воспринимаются поисковыми системами (мнение кстати, довольно спорное - но большинство склоняется к нему), что приводит к лучшей индексации таких страниц - и соответственно лучшему нахождению сайта пользователями. Что в конечном итоге нам и надо.

Что бы отработать технику создания ЧПУ при помощи Smarty - вы можете скачать демо-версию Cкрипт продажи недвижимости - в ней есть уже подключенный Smarty, есть тестовое объявление и полностью сохранена работа с шаблонами. Все примеры ниже будут на базе шаблонов именно этой демо-версии.

Для создания этих самых ЧПУ в любом из скриптов, используюущем шаблонизатор Smarty (в частности, одним из моих готовых скриптов) нам понадобятся:
- модуль для Апача mod_rewrite (обычно уже установлен на сервере, если не уверены - поинтересуйтесь у своего хостинг-провайдера)
- файл .htaccess (также обычно на платном хостинге доступен для использования)
- непосредственно файлы-шаблоны, отвечающие в скрипте за вывод ссылок, которые мы и должны изменить.

Приступим к "приготовлению".

1. Создаем файл .htaccess - если он у вас уже есть, то просто открываем его и добавляем новые строки - например у его конец. Файл должен находится в папке с тем cкриптом, для которого мы "готовим" наши ЧПУ.

2. В нем прописываются правила замены - как именно должен сервер изменять урлы - так как по сути, меняя ссылки, мы никак не затрагиваем работу скриптов - а они по прежнему должны получать ожидаемые параметры через ссылку. Значит нужно, что бы сервер "переводил" те "понятные" ссылки, которые мы сделаем - в вид "непонятны" человеку, но понятных скрипту. Этим и занимается модуль Апача mod_rewrite.
Пример записи в файл .htaccess, в котором определяются правила замены ссылок вида bill_22.htm (22 - случайный номер, зависит от конкретного объявления, это его id номер) на понятную скрипту ссылку view_bill.php?id=22.

RewriteEngine On
RewriteRule ^bill_(.*).htm$ view_bill.php?id=$1

Подробнее о командах, используемых в файле:
RewriteEngine On - это отметка о включении применения правил переделки "урлов"

RewriteRule ^bill_(.*).htm$ view_bill.php?id=$1
А это правило, которое преобразует ссылки вида bill_12.htm в понятный для скрипта вид view_bill.php?id=12
Символ ^ - означает начало строки, а символ $ - ее конца
знак $1 - это тот символ - в нашем случае уникальный номер объявления, который получается при обработке ссылки - и захватывается он при помощи выражения (.*) в нашей строке поиска и замены.


Дальше - на сайте нужно организовать создание этих самых понятных урлов (вида bill_12.htm). Делается это в шаблоне - для скрипта недвижимости это например шаблон вывод списка объявлений - tpl/tiplate/view/_list_bill.tpl.

В шаблонном файле находим строки, которые формируют ссылку на объявления, вот например эта:
< a href="bill.php?id={$bill.id}" target="_blank" >< img src="img/dop_img/lup.gif" border="0" />

и в ней меняем соответственно
bill.php?id={$bill.id}
на
bill_{$bill.id}.htm

Как видите - для получения номера объявления используем переменную Smarty {$bill.id}.
Таким образом на сайте ссылки будут выглядеть как bill_12.htm (например), а для скрипт сервер их переделает в view_bill.php?id=12


Скрипты для сайта

Яндекс.Метрика

Rambler's Top100