Псевдо категории товаров из родительской категории

Добрый день! На сайте поменялась структура(относительно 1-й категории), но осталось требование оставить дочерние директории. Аналогично реализовано с брендами, по заметки Василия. Но что-то голова не соображает как на дописать if для моего случая.


Ранее структура была такой:
/katalog/pechi/gazovyie/[0-9]+.html
Теперь:
/katalog/pechi/[0-9]+.html  //Все товары были подняты на категорию выше, теперь под категория как опция для фильтра
/katalog/pechi/gazovyie/[0-9]+.html  //Необходимо оставить прошлую логику
Если пользователь переходит в газовые печи, то и получает список газовых печей. Сейчас для страниц с брендом используется, по заметки Василия (мне даже коменты не помогают сообразить):
<?php
if ($modx->event->name != 'OnPageNotFound') {return false;}
$alias = $modx->context->getOption('request_param_alias', 'q');
if (!isset($_REQUEST[$alias])) {return false;}

$request = $_REQUEST[$alias];
$tmp = explode('/', $request);
// Ссылка подходит под заданный формат: brands/brandname
if ($tmp[0] == 'brands' && count($tmp) >= 2) {
	// Определяем id раздела /brands/.
	// Конечно, можно его и руками прописать - но так гибче
	if (!$section = $modx->findResource($tmp[0] . '/')) {
		// Если вдруг раздел куда-то делся - выходим.
		return false;
	}
	// Теперь очищаем имя бренда от возможного расширения
	$name = str_replace('.html', '', $tmp[1]);
	$modx->setPlaceholder('pagetitle', $name);
    $modx->setPlaceholder('longtitle', $name);
	// Если очищенное имя не равно запрошенному - то можно отредиректить юзера
	// Также возможен вариант с косой на конце имени бренда - его тоже учитываем
	// SEOшники должны оценить =)
	if ($tmp[1] != $name || (isset($tmp[2]) && $tmp[2] == '')) {
		$modx->sendRedirect($tmp[0] . '/' . $name);
	}
	
	// Люди с неправильной ссылкой ушли на правильную и дошли до этого момента со второго раза
	// Дальше проверяем наличие запрошенного бренда
	if ($brand = $modx->getObject('msVendor', array('name' => $name))) {
		// Круто, такой бренд есть, получаем его id
		$id = $brand->get('id');
		// Осталось выставить нужные переменные в запрос, как будто юзер их сам указал
		// Так как это mFilter2 - выставляем выбранный бренд
		$_GET['ms|vendor'] = $_REQUEST['ms|vendor'] = $id;
		// А теперь подсовывем юзеру страницу брендов, а дальше сниппет на ней сам разберётся
		$modx->sendForward($section);
	}
}
// Иначе ничего не делаем и юзер получает 404 или его перехватывает другой плагин.
Виктор
13 февраля 2017, 13:36
modx.pro
1 317
0

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0