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

Заметили ошибку, можете подсказать еще что-то? - Обращаемся сюда

Примеры работ

Информация