Virtuemart 2. Убираем seo суффикс из url для карточки товара.
Задача:
После обновлнения магазина virtuemart, сохранить ссылки.
Условия:
Не использовать sef модули.
На старом магазине был модуль sef. Соответственно ссылки получаемые при его использования идут без таких костылей в url, как seo суффикс карточки товара.
Самое конечно же простое это попытаться сделать поле суффикса пустым в настройках магазина, но тогда перестает открываться карточка товара.
За формирование sef ссылок в компонентах отвечает файл router.php, расположенный в папке components/com_virtuemart.
Теперь наша задача поправить его таким образом, чтобы была возможность использовать пустой seo суффикс.
Изем строки (около 633):
vars['virtuemart_category_id'] = $helper->getCategoryId (end($segments) ,$helper->activeMenu->virtuemart_category_id);
$vars['view'] = 'category' ;
Меняем на:
$product = $helper->getProductId($segments ,$helper->activeMenu->virtuemart_category_id);
$vars['virtuemart_product_id'] = $product['virtuemart_product_id'];
$vars['virtuemart_category_id'] = $product['virtuemart_category_id'];
//codepyro - removed suffix from router
//check if the last segment is a product.
//if so then load the product details page instead of category
if(isset($vars['virtuemart_product_id']))
{
$vars['view'] = 'productdetails';
}
else
{
$vars['virtuemart_category_id'] = $helper->getCategoryId (end($segments) ,$helper->activeMenu->virtuemart_category_id);
$vars['view'] = 'category' ;
}
Около 943 строки:
//codepyro hack to remove suffix
if($this->seo_sufix_size >0)
$productName = substr($productName, 0, -(int)$this->seo_sufix_size );
Все выше перечисленное было тестировано на версии Virtuemart 2.0.26d
Вы можете скачать готовый файл:
Скачать router.php без seo суффикса
Загрузить и заменить файл:
/components/com_virtuemart/router.php
Источник blog.codepyro.com
Заметили ошибку, можете подсказать еще что-то? - Обращаемся сюда