Joomla 1.5 Дублируется навигация, как победить?

Тема в разделе "Магазины, электронная коммерция", создана пользователем fronix, 16.02.2010.

  1. Offline

    fronix Недавно здесь

    Регистрация:
    12.03.2007
    Сообщения:
    27
    Симпатии:
    1
    Пол:
    Мужской
    Очередной вопрос:
    Есть вот такое меню:

    # Кондиционеры
    * Бытовые
    * Напольно-потолочные
    * Кассетные
    * Канальные
    * Колонные
    * Мобильные
    * Оконные

    при нажатии на "Кондиционеры" навигация отображает все правильно и как положено (Главная | Кондиционеры) а вот при нажатии на "Бытовые" происходит вот такая лапша (Главная | Кондиционеры | Бытовые | Кондиционеры | Бытовые) и все нижеследующие категории так же дублируются...

    Не нашел ничего на форуме не в гугле, подскажите как это дело победить, больше чем уверен, что я не первый с такой проблемой...
     
  2.  
  3. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 311
    Симпатии:
    375
    Пол:
    Мужской
    Плохо искал
    Код (PHP):
    1. function vmAppendPathway( $pathway ) {
    2.  
    3.     global $mainframe;
    4.  
    5.  
    6.  
    7.     // Remove the link on the last pathway item
    8.  
    9.     $pathway[ count($pathway) - 1 ]->link = '';
    10.  
    11.  
    12.  
    13.     if( vmIsJoomla('1.5') ) {
    14.  
    15.       $cmsPathway =& $mainframe->getPathway();
    16. /***** YZEDESIGN HACK ******/
    17.       $whatinpath=',';
    18.       foreach( $cmsPathway->_pathway as $tabpath ) {
    19.         $whatinpath.=','.$tabpath->name.',';
    20.       }
    21. /***** YZEDESIGN HACK ******/
    22.  
    23.       foreach( $pathway AS $item) {
    24.         if (!stripos($whatinpath,','.$item->name.',')){ //********* YZEDESIGN HACK
    25.  
    26.         $cmsPathway->addItem( $item->name, str_replace('&', '&', $item->link) );
    27.  
    28.       }
    29.   }//********* YZEDESIGN HACK
    30.  
    31.     } else {
     
  4. Offline

    fronix Недавно здесь

    Регистрация:
    12.03.2007
    Сообщения:
    27
    Симпатии:
    1
    Пол:
    Мужской
    Спасибо, помогло!
     
  5. Offline

    Swimmer Недавно здесь

    Регистрация:
    24.03.2010
    Сообщения:
    18
    Симпатии:
    0
    Пол:
    Мужской
    Большое спасибо!!
     
  6. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 311
    Симпатии:
    375
    Пол:
    Мужской
    Одно НО - названия категорий должны совпадать с названиями пунктов меню, иначе хак работать не будет!!!

    Собственно, он так и работает - в pathway ищутся названия категорий и если они не найдены, то элемент к pathway не добавляется.
     
  7. Offline

    Perla Недавно здесь

    Регистрация:
    07.05.2010
    Сообщения:
    2
    Симпатии:
    1
    Пол:
    Женский
    Спасибо за помощь.
    Но есть один недостаток, который возникает, если использовать этот хак:
    при выборе товара, путь к flypage в pathway не указывается, а обрывается на категории. Поясню на примере, до использования хака у меня был путь к карточке товара такой: Ручной инструмент -> лопаты -> лопаты -> товар №1 (дублировались лопаты), тепеть выводится только Ручной инструмент -> лопаты, а товар №1 теперь не появляется. Как можно это исправить? Мне нужно чтобы при открытии странички конкретного товара в breadcrumbs указывался поный pathway - Ручной инструмент -> лопаты -> товар №1

    Кто знает выход, помогите, пожалуйста.
     
  8. Offline

    Perla Недавно здесь

    Регистрация:
    07.05.2010
    Сообщения:
    2
    Симпатии:
    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!
     
    daredevil89 нравится это.
  9. Offline

    daredevil89 Недавно здесь

    Регистрация:
    16.08.2008
    Сообщения:
    23
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо, дорога Perla!
    Отлично всё теперь работает.
     
  10. Offline

    Domovenok Недавно здесь

    Регистрация:
    22.04.2010
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    воспользовался двумя вариантами, но устроил этот http://forum.virtuemart.net/index.php?topic=49585.msg168938#msg168938
    edit ps_product_category.php
    Код (PHP):
    1. function getPathway( $category_list ) {
    2.         global $sess;
    3.         $pathway_items = array();
    4.        
    5.         foreach( $category_list as $category ) {
    6.             $item = new stdClass();
    7.             $item->name = vmHtmlEntityDecode( $category['category_name'] );
    8.             $item->link = $sess->url( $_SERVER['PHP_SELF'] . "?page=shop.browse&category_id=$category[category_id]", true, false );
    9.             $pathway_items[] = $item;
    10.         }
    11.        
    12.         return $pathway_items;
    13.     }

    исправленный вариант
    Код (PHP):
    1. function getPathway( $category_list ) {
    2.         global $sess;
    3.                 $Itemid = $sess->getShopItemid();
    4.         $pathway_items = array();
    5.         if($Itemid == vmGet( $_REQUEST, 'Itemid', null )) {
    6.         foreach( $category_list as $category ) {
    7.             $item = new stdClass();
    8.             $item->name = vmHtmlEntityDecode( $category['category_name'] );
    9.             $item->link = $sess->url( $_SERVER['PHP_SELF'] . "?page=shop.browse&category_id=$category[category_id]", true, false );
    10.             $pathway_items[] = $item;
    11.         }
    12.         }
    13.         return $pathway_items;
    14.     }

    устранение проблемы с id
     

Поделиться этой страницей

Загрузка...