2013-08-05 16 views
5

użyłem następujące kody ale nie działa w tym przypadku:jak uzyskać nazwę bieżącej kategorii produktu (na stronie szczegółami produktu) w Magento

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

dostał Fatal error: wywołanie funkcji składowej getName() na brak obiektu w /app/design/frontend/base/default/template/catalog/product/view.phtml

wykonujemy jakieś filtry i skorzystać z poniższego kodu wzmianka w 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 = ""; } 

} 

Ale działa to tylko w przypadku przejścia z kategorii do produktu. Jeśli odwiedzisz stronę produktu, nic nie będzie wyświetlane. Nie można wyświetlić żadnej informacji.

Odpowiedz

19

Dzieje się tak dlatego, że produkty można dołączać do wielu kategorii. W Twojej sytuacji, gdy odwiedzasz stronę produktu odesłaną ze strony kategorii, twoja sesja zawiera informacje o kategorii. Ale jeśli odwiedzasz bezpośrednio stronę produktu, Magento nie wie, z której kategorii pochodzisz, więc nie może pokazać Ci konkretnej kategorii, ponieważ Twój produkt może mieć wiele kategorii.

Ale w Twojej sytuacji, jeśli twoje produkty są dołączone tylko do jednej kategorii, możesz użyć tego kodu, wyświetla pierwszą nazwę kategorii produktu;

 $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

Choć może odpowiedzieć na pytanie, lepiej podać kilka wyjaśnień o tym, jak ten kod pomoc. – vard

+2

Nie chcę być maniakiem, ale to było właściwie pytanie, a nie odpowiedź. Użytkownik wspomniał, że powyższy kod nie zadziałał w jego/jej sytuacji. Zgadzam się z @vard, kiedyś kopiowaliśmy pastery z SO, ale kopiowanie wklejania do SO bez czytania tego pytania jest dla mnie nowe. – muhammedv

Powiązane problemy