Сегодня занялся этой проблемой, возникает она тогда, когда категории VM привязаны к пунктам меню, и только в этом случае.
По стандарту ссылка на категорию в VM генерируется из этого:
index.php?option=com_virtuemart&view=category&virtuemart_category_id=4
В свою очередь в пунктах меню ссылка генерируется такая:
index.php?option=com_virtuemart&view=category&virtuemart_category_id=4&virtuemart_manufacturer_id=0&categorylayout=0&showcategory=1&showproducts=1&productsublayout=0&Itemid=133
И хлебные крошки генерируемые пунктами меню перебивают те что генерируются в VM, причем даже у модели категории отпадает информация о родительских категориях.
Потратив пару часов решил, что лучше сейчас сделаю небольшую заплатку, а в последующем быть может проблема решится, ну или сам найду более красивое решение.
В VM не стал лезть по причине того что при обновлениях придётся долго переносить все изменениях файлов.
Cама заплатка:
В файле : \modules\mod_breadcrumbs\helper.php
Вот это:
for ($i = 0; $i < $count; $i ++)
{
$crumbs[$i] = new stdClass;
$crumbs[$i]->name = stripslashes(htmlspecialchars($items[$i]->name, ENT_COMPAT, 'UTF-8'));
$crumbs[$i]->link = JRoute::_($items[$i]->link);
}
Заменить на вот это:
for ($i = 0; $i < $count; $i ++)
{
$crumbs[$i] = new stdClass;
$crumbs[$i]->name = stripslashes(htmlspecialchars($items[$i]->name, ENT_COMPAT, 'UTF-8'));
// It's fix for repair bag VirtueMart 3 and menu Joomla 3.4
if (JRequest::getVar('option') == 'com_virtuemart')
{
if ($items[$i]->link and (JRequest::getVar('view') == 'category' or JRequest::getVar('view') == 'productdetails') )
{
preg_match("/\?(?:.*&)*virtuemart_category_id=([^&]+)/i", $items[$i]->link, $found);
$virtuemart_category_id = $found[1]+0;
$items[$i]->link = 'index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$virtuemart_category_id;
}
}
// /end fix
$crumbs[$i]->link = JRoute::_($items[$i]->link);
}