Кастомизация макроса content redirect() — различия между версиями
Williwaw (обсуждение | вклад) (Новая страница: « == Задача == Предположим, имеется следующая структура каталога обусловленная шаблоном: 1. О…») |
Williwaw (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | |||
== Задача == | == Задача == | ||
Версия 15:41, 26 марта 2014
Задача
Предположим, имеется следующая структура каталога обусловленная шаблоном: 1. Основная категория, в которой выводятся подкатегории товаров 2.В каждой подкатегории выводятся дочерние подкатегории, либо только одна подкатегория, в которой находится один товар. Редирект необходимо делать с тех категорий, выводимых в основной категории, в которых содержится только одна категория с одним товаром.Соответственно, редирект нужно сделать на этот конечный товар, минуя ту единственную категорию,в которой он содержится.
Через таблицу cms_redirects такой редирект работать не будет, так как страницы с которых идет перенаправление существуют и активны. Если прописать для этих страниц стандартный макрос %content redirect()%, то переадресация произойдет прямо с основной страницы каталога, на которой данные категории выводятся.
Решение
Необходимо кастомизировать %content redirect()% так, чтобы осуществлялась проверка на источник перехода, т.е. будем проверять равенство идентификатора текущей страницы идентификатору, переданному в качестве параметра $source Если вызывать именно такой макрос на страницах выводимых в каталоге категорий, то переадресации с первой страницы каталога происходить не будет.
Открываем файл /classes/modules/content/_custom.php и вставляем туда следующий метод:
public function customRedirect($source= "",$url = "") {
$current_page_id = cmsController::getInstance()->getCurrentElementId();
if(is_numeric($url)&&is_numeric($source)&&$source==$current_page_id) {
$url = $this->get_page_url($url);
def_module::redirect($url);
}
}