2013-07-17 2 views
2

На домашней странице моего Magento сайта, я использовал следующий код, чтобы добавить Последний блокMagento категория продукта отсутствует в навигационной цепочке

{{block type="catalog/product_list" category_id="2" template="catalog/product/random.phtml"}} 

При нажатии на последние продукты, некоторые будет работать (те, работал, показал полный хлеб), а другие приведут к ошибке: Неустранимая ошибка: вызовите функцию-член getName() на не-объект в /var/www/vhosts/riderseyewear.net/httpdocs/app/design/frontend /fortium/default/template/page/1column-product.phtml в строке 80

Ошибка описана здесь http://i.imgur.com/RrG3ixU.png

В этом 1column-product.phtml файл, я пошел на линию 80 и изменил

$currentcat = Mage::registry('current_category')->getName(); 

в

$currentcat = Mage::registry('current_product')->getName(); 

Изменение этой линии убрали ошибку. Однако теперь имя категории не будет отображаться в панировочных сухарях при нажатии на продукт. Панели показывают HOME/PRODUCT_NAME вместо HOME/CATEGORY_NAME/PRODUCT_NAME

Как я могу получить полную пачку, чтобы отображать ее, а также не получать фатальную ошибку?

ответ

3

Следуйте по ссылке http://dltr.org/blog/magento/381/Magento-Force-Display-Full-Breadcrumb-Path. Прекрасно работает для меня. дайте мне знать, могу ли я помочь вам больше.

+0

Спасибо, но я добавил бит кода в файл breadcrumbs.php, и он по-прежнему имеет те же результаты. При нажатии на последний продукт с домашней страницы в палитре «home/product_name» показывается «home/product_name» вместо «home/category_name/product_name» – user2220474

+0

необходимо изменить только функцию _prepareLayout на странице breadcrumb.copy весь код внутри функции _prepareLayout() из вышеупомянутый ссылочный url.Also убедитесь, что хлебная крошка отлично работает из списка товаров категории/сетки. – monojit

+0

Вот ссылка на сайт http://riderseyewear.net/index.php Попробуйте нажать на один из последних продуктов, чтобы увидеть ошибку, которую я получаю относительно строки 80 в 1column-product.phtml, это текущая строка 80 $ currentcat = Mage :: registry ('current_category') -> getName(); – user2220474

0

Я знаю, что это довольно старый, но я хотел бы поделиться своим решением в любом случае, так как он не отменяет/не клонирует любые файлы ядра.

  1. В пользовательских модуле добавить следующие строки в config.xml:

    <config> 
        ... 
        <frontend> 
         <events> 
          <catalog_controller_product_init> 
           <observers> 
            <breadcrumb_categorypath_product_init> 
             <type>singleton</type> 
             <class><Your Namespace>_<Your Module>_Model_Observer</class> 
             <method>fullBreadcrumbCategoryPath</method> 
            </breadcrumb_categorypath_product_init> 
           </observers> 
          </catalog_controller_product_init> 
         </events> 
        </frontend> 
    </config> 
    
  2. Создать Observer.php в /app/code/local/<Your Namespace>/<Your Module>/Model/

  3. Добавьте следующие строки в Observer.php:

    class <Your Namespace>_<Your Module>_Model_Observer { 
        public function fullBreadcrumbCategoryPath(Varien_Event_Observer $observer) { 
         $currentProduct = Mage::registry('current_product'); 
         $storeRootCatId  = Mage::app()->getStore()->getRootCategoryId(); 
    
         if($currentProduct) { 
          $categories = $currentProduct->getCategoryCollection()->addAttributeToSelect('name'); 
          foreach($categories as $_category) { 
           $catIdPath = '1/' . $storeRootCatId . '/'; 
           if(0 === strpos($_category->getData('path'), $catIdPath)) { 
            Mage::unregister('current_category'); 
            Mage::register('current_category', $_category); 
           } 
          } 
         } 
        } 
    } 
    
  4. Вам должно быть хорошо.

+0

Настройка большего аргумента setPageSize (1) позволяет отображать полный путь к категории, а не только первую часть – mati

Смежные вопросы