Итак, по просьбе
kind_bear и вчерашнего запроса
http://joomlaforum.ru/index.php/topic,91721.msg517865.html#msg517865 на предмет модификации SEF и модуля опишу решение, какое сделал я.
Сразу отмечу что я с компонентом Zoo не сильно знаком. Мое видение его было только лишь в направлении области по формированию SEF URL и модуля.
Адрес сайта с внедренным решением и локализацией задачи -
www.hworld.ruОпишу процесс решения:
1. По формированию SEF без
itemРазобрав
router.php компонента, где было уже внедрено решение, уважаемого
Виталика (
http://joomlaforum.ru/index.php/topic,69146.msg510767.html#msg510767), стало понятно что за формирование компонентом ссылок на элементы просмотра каталога-категории отвечает функция -
function ZooBuildRoute(&$query), тут $query - это получаемый вид URL,
а за разбор входящего URL function ZooParseRoute($segments) - это сегменты URL, проще говоря разобранный $_GET
итак.. начнем с обратного, с разбора требуемого нам вида URL:
/{category-name}/{item-name} (без /item/)
Для этого:
почти в конце функции дописываем код
function ZooParseRoute($segments) {
...
else if ($count == 2 && $segments[0] == 'item') {
$vars['view'] = 'item';
$vars['item_id'] = (int) ItemHelper::getItemIdByAlias($segments[1]);
}
// eX::
// hack! new :: хак для формирования URL SEF ссылки вида {category}/{item-name}
else if($count == 1 && preg_match('(\w+)',$segments[0]) ) {
$vars['view'] = 'item';
$vars['item_id'] = (int) ItemHelper::getItemIdByAlias($segments[0]);
}
// ::end
Что сделали?
1. проверяем на кол-во сегментов = 1
2. проверяем на тип ссылки regexp-ом сегмента[0], поскольку /item нам требуется откинуть.
3. else if ($count == 2 && $segments[0] == 'item') { --- данное условие намеренно оставил для совместимости с ранее уже вставленными ссылками (как это могло быть в статистическом контенте)
Шаг 2.
Теперь нам надо чтобы формировались ссылки требуемого вида
Заменяем старый код и пишем новый
function ZooBuildRoute(&$query) {
...
else if (@$query['view'] == 'item' && isset($query['item_id'])) {
// eX::
// @ old code::
//$segments[] = 'item';
//<<predeleted $segments[] = CategoryHelper::translateAlias((int) $query['category_id']);
//$segments[] = ItemHelper::translateAlias((int) $query['item_id']);
//unset($query['view']);
//unset($query['category_id']);
//unset($query['item_id']);
// ::end
// eX::
// @ new code ::
$segments[] = ItemHelper::translateAlias((int) $query['item_id']);
unset($query['view']);
unset($query['category_id']);
unset($query['item_id']);
// ::end
}
Посмотреть в действии:
http://www.hworld.ru/ru/im-nuzhna-pomosch