Кастомизация макроса content redirect() — различия между версиями
Williwaw (обсуждение | вклад) (Новая страница: « == Задача == Предположим, имеется следующая структура каталога обусловленная шаблоном: 1. О…») |
Po4emu4ka (обсуждение | вклад) |
||
(не показаны 2 промежуточные версии 1 участника) | |||
Строка 1: | Строка 1: | ||
− | |||
== Задача == | == Задача == | ||
Предположим, имеется следующая структура каталога обусловленная шаблоном: | Предположим, имеется следующая структура каталога обусловленная шаблоном: | ||
− | + | * Основная категория, в которой выводятся подкатегории товаров | |
− | + | *В каждой подкатегории выводятся дочерние подкатегории, либо только одна подкатегория, в которой находится один товар. | |
Редирект необходимо делать с тех категорий, выводимых в основной категории, в которых содержится только одна категория с одним товаром.Соответственно, редирект нужно сделать на этот конечный товар, минуя ту единственную категорию,в которой он содержится. | Редирект необходимо делать с тех категорий, выводимых в основной категории, в которых содержится только одна категория с одним товаром.Соответственно, редирект нужно сделать на этот конечный товар, минуя ту единственную категорию,в которой он содержится. | ||
Строка 26: | Строка 25: | ||
} | } | ||
</source> | </source> | ||
+ | [[category:Написание кастомных макросов]] |
Текущая версия на 12:59, 16 июля 2018
Задача
Предположим, имеется следующая структура каталога обусловленная шаблоном:
- Основная категория, в которой выводятся подкатегории товаров
- В каждой подкатегории выводятся дочерние подкатегории, либо только одна подкатегория, в которой находится один товар.
Редирект необходимо делать с тех категорий, выводимых в основной категории, в которых содержится только одна категория с одним товаром.Соответственно, редирект нужно сделать на этот конечный товар, минуя ту единственную категорию,в которой он содержится.
Через таблицу 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);
}
}