Псевдо категории товаров из родительской категории
Добрый день! На сайте поменялась структура(относительно 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 или его перехватывает другой плагин.