Маршрутизатор
Route – класс для работы с ЧПУ. Описан он файле includes/route.php. Объект класса создается в административной и пользовательской частях и в модулях доступен для обращения через переменную $this->diafan->_route
. Класс используется в моделях модулей и обработчиках POST-запросов.
Свойства
Свойства класса Route
– переменнные передаваемые в URL. Список всех доступных переменных задан в файле adm/includes/init.php (для административной части) и includes/init.php (для пользовательской части) и доступен через массив $this->diafan->rewrite_variable_names_all
.
Переменные, передавамые в URL в пользовательской части:
integer page – номер страницы для пагинации.
Пример:
// http://site.ru/news/page2/
// вторая страница списка новостей, если отключены категории
$this->diafan->_route->page = 2;
integer show – идентификатор элемента модуля, если отключено автоматическое формирование ЧПУ.
Пример:
// http://site.ru/news/show2/
// страница новости ID=2
$this->diafan->_route->show = 2;
integer add – добавление нового элемента.
Пример:
// http://site.ru/ads/add1/
// страница добавления объявления
$this->diafan->_route->add = 1;
integer edit – редактирование элемента.
Пример:
// http://site.ru/ads/edit15/
// страница редактирования объявления ID=15
$this->diafan->_route->edit = 15;
integer param – идентификатор значения дополнительной характеристики.
Пример:
// http://site.ru/shop/param3/
// страница товаров красного (ID=3) цвета
$this->diafan->_route->param = 3;
integer dpage – номер страницы для дополнительной пагинации.
Пример:
// http://site.ru/shop/palatki/52d/dpage3/
// третья страница списка комментариев на странице товара
$this->diafan->_route->dpage = 3;
integer cat – идентификатор категории.
Пример:
// http://site.ru/shop/cat5/
// страница категории товаров ID=5
$this->diafan->_route->cat = 5;
integer brand – идентификатор производителя.
Пример:
// http://site.ru/shop/brand1/
// страница производителя товаров ID=1
$this->diafan->_route->brand = 1;
integer year – год.
Пример:
// http://site.ru/news/year2013/
// список новостей за 2013 год
$this->diafan->_route->year = 2013;
integer month – месяц.
Пример:
// http://site.ru/ads/year2013/month11/
// список объявлений за ноябрь 2013 года
$this->diafan->_route->month = 11;
integer step – шаг.
Пример:
// http://site.ru/shop/cart/step2/
// шаг 2 при оформлении заказа в магазине
$this->diafan->_route->step = 2;
integer sort – направление сортировки.
Пример:
// http://site.ru/shop/palatki/sort2/
// список товаров в категории с сортировкой по убыванию цены
$this->diafan->_route->sort = 2;
Переменные, передавамые в URL в административной части:
integer page – номер страницы для пагинации.
Пример:
// http://site.ru/admin/news/page2/
// вторая страница списка новостей
$this->diafan->_route->page = 2;
integer addnew – добавление нового элемента.
Пример:
// http://site.ru/admin/ab/category/addnew1/
// страница добавления категории объявлений
$this->diafan->_route->addnew = 1;
integer edit – редактирование элемента.
Пример:
// http://site.ru/admin/news/edit15/
// страница редактирования новости ID=15
$this->diafan->_route->edit = 15;
integer site – идентификатор раздела сайта.
Пример:
// http://site.ru/admin/shop/site3/
// список товаров, прикрепленных к странице сайта ID=3
$this->diafan->_route->site = 3;
integer cat – идентификатор категории.
Пример:
// http://site.ru/admin/shop/cat5/
// список товаров, прикрепленных к категории ID=5
$this->diafan->_route->cat = 5;
integer parent – идентификатор родителя.
Пример:
// http://site.ru/admin/site/parent4/
// список страниц сайта, раскрыты вложенные страницы для пункта ID=4
$this->diafan->_route->parent = 4;
integer error – номер ошибки.
Пример:
// http://site.ru/admin/shop/error7/
// страница, на которой будет выведена ошибка:
// Внимание! Не установлена библиотека GD. Работа модуля невозможна. Обратитесь в техподдержку вашего хостинга!
$this->diafan->_route->error = 7;
integer success – сообщения об успешном выполнении.
Пример:
// http://site.ru/admin/shop/success1/
// страница, на которой будет выведено сообщение:
// Изменения сохранены!
$this->diafan->_route->success = 1;
Свойства
var variable_names_site = array('cat', 'param', 'show', 'brand', 'year', 'month', 'day', 'step', 'sort', 'add', 'edit', 'page') – переменные, передаваемые в URL в пользовательской части.
var variable_names_admin = array ('edit', 'savenew', 'save', 'addnew', 'site', 'cat', 'parent', 'page', 'show', 'step', 'error', 'success') – переменные, передаваемые в URL в административной части.
var rewrite_variable_names = array() – переменные контроллеров модулей, передаваемые в URL в пользовательской части.
Методы
void save (string $rewrite, string $text, integer $element_id, string $module_name, string $element_type, integer $site_id, [integer $cat_id = 0], [integer $parent_id = 0], [boolean $add_parents = false], [boolean $change_children = false], [array $data = array()]) – Сохраняет ЧПУ.
- string $rewrite: псевдоссылка
- string $text: значение, из которого автоматически генерируется ЧПУ
- integer $element_id: номер элемента модуля
- string $module_name: модуль
- string $element_type: тип данных (element – элемент (по умолчанию), cat – категория, param – значение списка доп.характеристики, brand – производитель)
- integer $site_id: номер страницы сайта
- integer $cat_id: номер категории
- integer $parent_id: номер родителя
- boolean $add_parents: добавлять ЧПУ родительских элементов
- boolean $change_children: изменить ЧПУ у детей
- array $data: данные, использующие для генерирования ЧПУ по шаблону
Пример:
// генерируем и сохраняем ЧПУ для товара ID=54 из имени, согласно настройкам
// в начале ЧПУ будет добавлено ЧПУ категории ID=2
// или страницы сайта ID=3
$this->diafan->_route->save('', 'Рюкзак «Контур 50»', 54, 'shop', 'element', 3, 2, 0, true);
// сохраняем ЧПУ для страницы сайта ID=5, заменяем первую часть ЧПУ
// у вложенных страниц
$this->diafan->_route->save('about', 'О компании', 5, 'site', 'element', 5, 0, 0, true, true);
/* к примеру была следующая структура страниц:
О компании /company/
История /company/history/
Философия /company/philosophy/
Обратная связь /feedback/
результат работы функции:
О компании /about/
История /about/history/
Философия /about/philosophy/
Обратная связь /feedback/
*/
void delete (integer|array $element_ids, string $module_name, [string $element_type = 'element']) – Удаляет ЧПУ одного или нескольких элементов.
- integer|array $element_ids: номер одного или нескольких элементов
- string $module_name: название модуля
- string $element_type: тип данных
string generate_rewrite (string $text) – Генерирует псевдоссылку.
- string $text: исходный текст
Пример:
$rewrite = $this->diafan->_route->generate_rewrite('Рюкзак «Контур 50»');
// вернет: ryukzak-kontur-50, если метод преобразования в «Параметрах сайта» задан как «транслит»
string link (integer $site_id, [integer $element_id = 0], [string $module_name = ''], [string $element_type = 'element'], [boolean $insert_route_end = true]) – Генерирует ссылку.
- integer $site_id: номер страницы сайта
- integer $element_id: номер элемента
- string $module_name: модуль
- string $element_type: тип данных (element – элемент (по умолчанию), cat – категория, param – значение списка доп.характеристики, brand – производитель)
- boolean $insert_route_end: добавлять окончание ЧПУ в конце ссылки
Пример:
// получим ссылку на страницу производителя ID=1,
// прикрепленного к странице сайта ID=3
$link = $this->diafan->_route->link(3, 1, "shop", "brand");
// получим ссылку на страницу сайта ID=5
$link = $this->diafan->_route->link(5);
void prepare (integer $site_id, integer $element_id, string $module_name, [string $element_type = 'element']) – Подготавливает ЧПУ.
- integer $site_id: номер страницы сайта
- integer $element_id: номер элемента
- string $module_name: модуль
- string $element_type: тип данных (element – элемент (по умолчанию), cat – категория, param – значение списка доп.характеристики, brand – производитель)
Пример:
// в этом примере будет выполенено три SQL-запроса к базе данных
// для получения ЧПУ всех заданных товаров
$ids = array(3, 5, 7);
foreach($ids as $id)
{
$link[$id] = $this->diafan->_route->link(3, $id, "shop");
}
Пример:
// в этом примере будет выполен один SQL-запрос к базе данных
// для получения ЧПУ всех заданных товаров
$ids = array(3, 5, 7);
foreach($ids as $id)
{
$this->diafan->_route->prepare(3, $id, 'shop');
}
foreach($ids as $id)
{
$link[$id] = $this->diafan->_route->link(3, $id, "shop");
}
string|boolean false module (string $module_name, [boolean $route_end = true]) – Получает ЧПУ страницы сайта по названию модуля.
- string $module_name: название модуля
- boolean $route_end: выводить окончание
Пример:
// получаем ссылку на страниц корзины
$link = BASE_PATH_HREF.$this->diafan->_route->module("cart");
mixed id_module (string $module_name, [mixed $site_id = 0], [boolean $return_array = true]) – Определяет номер страницы, к которой прикреплен модуль, доступной текущему пользователю.
- string $module_name: название модуля
- mixed $site_id: номер страницы (если задан, определяет прикреплен ли модуль, есть ли доступ)
- boolean $return_array: вернуть массив (или один номер)
Пример:
// определяем ID страницы сайта, к которой подключен модуль «Личные сообщения»
$site_id = $this->diafan->_route->id_module("messages", 0, false);
// из переменных ID выбираем те, к которым подключен модуль «Магазин»
$site_ids = $this->diafan->_route->id_module("shop", array(3, 5, 6));
string current_link ([string|array $exclude = ''], [array $include = array()]) – Выдает URL текущей страницы с включенными или исключенными переменными.
- string|array $exclude: исключенные переменные
- array $include: включенные переменные
Пример:
// убираем из адреса текущей страницы переменные page и dpage и добавляем add1/
$link = $this->diafan->_route->current_link(array("page", "dpage"), array("add" => 1));
// например, для страницы http://site.ru/shop/palatki/page3/dpage2/sort2/
// результат будет http://site.ru/shop/palatki/sort2/add1/
string current_admin_link ([string|array $exclude = '']) – Выдает URL текущей страницы административной части с включенными переменными.
- string|array $exclude: исключенные переменные
Пример:
// убираем из адреса текущей страницы переменные page и parent
$link = $this->diafan->_route->current_admin_link(array("page", "parent"));
// например, для страницы http://site.ru/admin/site/parent15/page2/
// результат будет http://site.ru/admin/site/
array|boolean false search (string $rewrite, [boolean $arguments_in_url = false], [boolean $binary = true], [boolean $like = false]) – Ищет псевдоссылку в базе данных.
- string $rewrite: текущая псевдоссылка
- boolean $arguments_in_url: в URL переданы аргументы
- boolean $binary: регистрозависимый поиск
- boolean $like: поиск псевдоссылок, начинающихся на значение текущей псевдоссылки
Пример:
print_r( $this->diafan->_route->search('shop'));
/* выведет:
Array
(
[module_name] => site
[element_id] => 3
[element_type] => element
[rewrite] => shop
) */
string replace_link_to_id (string $text) – Заменяет ссылки на идентификаторы.
- string $text: исходный текст
Пример:
// обрабатываем текст, добавленный через визуальный редактор
// перед сохранением в базу данных
$text = $this->diafan->_route->replace_link_to_id($_POST["text"]);
string replace_id_to_link (string $text) – Заменяет идентификаторы ссылки на ЧПУ.
- string $text: исходный текст
Пример:
// преобразуем текст, полученных из базы данных перед выводом на экран
echo $this->diafan->_route->replace_id_to_link($text);
void check_element_type (string $element_type, [boolean $mode = false]) – Валидация типа элементов.
- string $element_type: проверяемое значение
- boolean $mode: определяет режим ответа: false - Exception, true - return boolean
array get_rewrite_variable () – Возвращает переменные, передаваемые в URL страницы.
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.
Ваш комментарий будет первым.