2013-08-05 2 views
5

Я использовал следующие коды, но не работает в этом случае:как получить категорию имя текущего продукта (на странице детали продукта) в Magento

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

получил Фатальная ошибка: вызов функции-члена GetName() на не-объект в /app/design/frontend/base/default/template/catalog/product/view.phtml

мы делаем некоторые фильтры и использовать ниже упоминанием код в head.phtml:

$is_product = Mage::registry('product'); 

if($is_product){ 

    if(is_object(Mage::registry('current_category'))){ 
    $category_name = Mage::registry('current_category')->getName(); 
    } 
    else{ $category_name = ""; } 

} 

Но это работает только в том случае, если вы переходите из категории в продукт. Если вы посетили страницу продукта, ничего не отображается.

ответ

19

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

Но в вашей ситуации, если ваши продукты прикреплены только к одной категории, вы можете использовать этот код, он показывает название продукта первой категории;

 $categoryIds = $_product->getCategoryIds(); 

     if(count($categoryIds)){ 
      $firstCategoryId = $categoryIds[0]; 
      $_category = Mage::getModel('catalog/category')->load($firstCategoryId); 

      echo $_category->getName(); 
     } 
3
<?php 
    $_category_detail=Mage::registry('current_category'); 
    echo $_category_detail->getName(); //gives current category name 
    echo $_category_detail->getId(); //gives current category id 
?> 
+0

Хотя это может ответить на вопрос, что лучше дать некоторые пояснения о том, как это код помощи. – vard

+2

Я не хочу быть хрупким, но на самом деле это вопрос, а не ответ. Пользователь упомянул, что приведенный выше код не работал для его/ее ситуации. Я согласен с @vard, мы раньше копировали патчи из SO, но копирование вставки в SO без чтения вопроса для меня нова. – muhammedv

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