Если вы ищете решение для красивых и коротких ссылок, без всяких цифр, а так же с возможностью вписывания алиасов вручную, причем без нагрузки на сервер, то предлагаю заглянуть в эту темуВобщем поглядел на роутер от E-fusion, обалдел от количества создаваемых им запросов (по 2 на КАЖДУЮ ссылку категории, плюс по запросу на каждую ссылку содержащую алиас товара (даже если товар один и тот же), огорчился отсутсвию обработки производителей и тд.. Поковырявшись несколько дней написал свой вариант роутера, решил поделиться с народом.
Ссылка на категорию:
/category/8-mediapleriСсылка на категорию и фильтрация по производителю:
/category/manufacturer/9-proektori/4-sonyСсылка на карточку товара:
/category/product/8-mediapleri/17-digisКак видно, сначала идет схема пути, затем сам путь из алиасов, с добавлением id впереди.
На остальных страницах, кроме shop.browse и shop.product_details вначало еще добавляется тип страницы, например:
/ask/category/product/8-mediapleri/17-digisПреимущества:
1) Минимум запросов (при 50 ссылках на категории и 10 на товары соотношение запросов этого роутера и E-fusion - 11:120, тоесть в 12 (!) раз меньше запросов)
2) Создает алиасы производителей, прикрепленных файлов и тд.
Недостатки:
1) Не отображает иерархию категорий
2) Попрежнему на каждый товар свой запрос в бд (однако повторные запросы не производятся)
В 1.1.5 есть глюк с пагинацией. Чтоб его исправить надо закомментить строчку
search_string=$sess->url($search_string) в файле
administrator\components\com_virtuemart\html\shop.browse.php----------------------------------------------------------------------------------------------------------------------
from Beagler
Глюк с пагинацией из-за того, что пагинатор добавляет пустую category_id
Достаточно в роутер после
if (isset($query['page'])) {
$page = $query['page'];
unset($query['page']);
}
добавить
if (isset($query['category_id'])) {
if ($query['category_id']=='') {
unset($query['category_id']);
}
}
[вложение удалено Администратором]