Очередной вопрос: Есть вот такое меню: # Кондиционеры * Бытовые * Напольно-потолочные * Кассетные * Канальные * Колонные * Мобильные * Оконные при нажатии на "Кондиционеры" навигация отображает все правильно и как положено (Главная | Кондиционеры) а вот при нажатии на "Бытовые" происходит вот такая лапша (Главная | Кондиционеры | Бытовые | Кондиционеры | Бытовые) и все нижеследующие категории так же дублируются... Не нашел ничего на форуме не в гугле, подскажите как это дело победить, больше чем уверен, что я не первый с такой проблемой...
Плохо искал Код (PHP): function vmAppendPathway( $pathway ) { global $mainframe; // Remove the link on the last pathway item $pathway[ count($pathway) - 1 ]->link = ''; if( vmIsJoomla('1.5') ) { $cmsPathway =& $mainframe->getPathway(); /***** YZEDESIGN HACK ******/ $whatinpath=','; foreach( $cmsPathway->_pathway as $tabpath ) { $whatinpath.=','.$tabpath->name.','; } /***** YZEDESIGN HACK ******/ foreach( $pathway AS $item) { if (!stripos($whatinpath,','.$item->name.',')){ //********* YZEDESIGN HACK $cmsPathway->addItem( $item->name, str_replace('&', '&', $item->link) ); } }//********* YZEDESIGN HACK } else {
Одно НО - названия категорий должны совпадать с названиями пунктов меню, иначе хак работать не будет!!! Собственно, он так и работает - в pathway ищутся названия категорий и если они не найдены, то элемент к pathway не добавляется.
Спасибо за помощь. Но есть один недостаток, который возникает, если использовать этот хак: при выборе товара, путь к flypage в pathway не указывается, а обрывается на категории. Поясню на примере, до использования хака у меня был путь к карточке товара такой: Ручной инструмент -> лопаты -> лопаты -> товар №1 (дублировались лопаты), тепеть выводится только Ручной инструмент -> лопаты, а товар №1 теперь не появляется. Как можно это исправить? Мне нужно чтобы при открытии странички конкретного товара в breadcrumbs указывался поный pathway - Ручной инструмент -> лопаты -> товар №1 Кто знает выход, помогите, пожалуйста.
Да уж, помощи от вас не дождешься, я так понимаю. Я эту проблему победила сама, если кому интересно как, то читайте ниже. У проблемы удваивания ссылок в Vurtuemart есть еще одно решение. Можно обойтись и без правки файла mainframe.class.php Достаточно заккоментировать в файлах shop.browse.php и shop.product_details.php строки подключающие pathway: // Set up the pathway // Retrieve the pathway items for this product’s category $category_list = array_reverse( $ps_product_category->get_navigation_list( $category_id ) ); $pathway = $ps_product_category->getPathway( $category_list ); и // Set up the CMS pathway $category_list = array_reverse( $ps_product_category->get_navigation_list($category_id) ); $pathway = $ps_product_category->getPathway( $category_list ); $vm_mainframe->vmAppendPathway( $pathway ); И все бужет прекрасно отображаться, без задваиваний, а также путь не будет обрываться к flypage!
воспользовался двумя вариантами, но устроил этот http://forum.virtuemart.net/index.php?topic=49585.msg168938#msg168938 edit ps_product_category.php Код (PHP): function getPathway( $category_list ) { global $sess; $pathway_items = array(); foreach( $category_list as $category ) { $item = new stdClass(); $item->name = vmHtmlEntityDecode( $category['category_name'] ); $item->link = $sess->url( $_SERVER['PHP_SELF'] . "?page=shop.browse&category_id=$category[category_id]", true, false ); $pathway_items[] = $item; } return $pathway_items; } исправленный вариант Код (PHP): function getPathway( $category_list ) { global $sess; $Itemid = $sess->getShopItemid(); $pathway_items = array(); if($Itemid == vmGet( $_REQUEST, 'Itemid', null )) { foreach( $category_list as $category ) { $item = new stdClass(); $item->name = vmHtmlEntityDecode( $category['category_name'] ); $item->link = $sess->url( $_SERVER['PHP_SELF'] . "?page=shop.browse&category_id=$category[category_id]", true, false ); $pathway_items[] = $item; } } return $pathway_items; } устранение проблемы с id