UMI.CMS. Создание макроса для кастомного редиректа

UMI.CMS. Создание макроса для кастомного редиректа

Достаточно давно работаю с UMI.CMS версии Shop и при создание интернет магазинов постоянно возникает одна и та же проблема, от которой к сожалению не получиться избавиться, а именно — в ЧПУ после домена идет название каталога, а потом уже и правильное ЧПУ.

Любой разработчик на UMI.CMS сразу же скажет, что не следует создавать иерархического каталога, просто в модуле «Каталог» добавлять нужные вам разделы.

Может не совсем понятно, о чем именно сейчас идет речь, я объясню. Смотрите, если мы хотим, чтобы у нас в модуле «Структура» UMI.CMS все было красиво и структурированно, для этого мы в модуле «Каталог» создаем дополнительный раздел «Каталог товаров» и уже в него добавляем подразделы и товары:

UMI.CMS. Кастомный редирект.

А потом в пути сайта мы получаем лишнюю категорию, на которую пользователь и поисковик может перейти. Для пользователя, то ничего, а вот для поисковой системы это дополнительная страница:

UMI.CMS. Кастомный редирект.

Давайте попробуем побороть этот надоедливый переход на страницу «Каталог товаров»(market).

Для этого нужно создать дополнительный, кастомный макрос. Создать макрос в UMI.CMS очень просто, для этого нужно открыть файл custom.php, который находиться в папке \classes\modules\ и в этот файл добавить следующий код:

public function pontyk_com_ua_custom_redirect($currentPageUrl, $theSameUri, $referer) {
	if( $currentPageUrl === $theSameUri ) {
		$this->redirect($referer);
	}
}

Теперь нужно вызвать созданный макрос. Для этого нужно открыть файл вашего шаблона, желательно header.inc.tpl и перед <!DOCTYPE вставить строчку с вызовом кастомного макроса:

%custom fresh_redirect(%content get_page_url(%pid%)%, '/market/', '/')%

Теперь пройдемся по параметрам макроса:

$currentPageUrl — этот параметр не изменяем, тут всегда нужно подключать %content get_page_url (%pid%)%.

$theSameUri — url страницы, с которой нужно сделать редирект. Т.е. сюда нужно вставить url той страницы, на которую не должен попасть поисковик

$referer — страница, на которую должен перейти пользователь или поисковая система.

На этом все, вы можете увидеть, как можно легко и просто создавать кастомные макросы для UMI.CMS.

Хочу сказать, что все сайты, которые были разработаны мною имеют этот кастомные макрос редиректа для UMI.CMS.

Вот две полезные ссылки на кастомные редиректы для UMI.CMS http://goo.gl/g9xJr и http://goo.gl/RRGVm