2013-08-05 25 views
5

tôi đã sử dụng mã sau đây nhưng không làm việc cho trường hợp này:làm thế nào để có được tên chủng loại sản phẩm hiện tại (trên trang chi tiết sản phẩm) trong Magento

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

Fatal error: Gọi đến một chức năng thành viên getName() trên một tổ chức phi-đối tượng trong /app/design/frontend/base/default/template/catalog/product/view.phtml

chúng ta thực hiện một số bộ lọc và sử dụng mã dưới đây đề cập đến trong 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 = ""; } 

} 

Nhưng điều này chỉ hoạt động nếu bạn đi từ một loại cho một sản phẩm. Nếu bạn truy cập vào trang sản phẩm trực tiếp, không có gì được hiển thị

Trả lời

19

Đó là vì các sản phẩm có thể được gắn vào nhiều danh mục. Trong trường hợp của bạn, khi bạn truy cập vào trang sản phẩm được giới thiệu từ trang danh mục, phiên của bạn có thông tin danh mục. Nhưng nếu bạn truy cập trang sản phẩm trực tiếp, Magento không thể biết bạn thuộc loại nào, vì vậy nó không thể hiển thị cho bạn một danh mục cụ thể, bởi vì sản phẩm của bạn có thể có nhiều danh mục.

Nhưng trong trường hợp của bạn, nếu sản phẩm của bạn chỉ được đính kèm một danh mục, bạn có thể sử dụng mã này, nó sẽ hiển thị tên danh mục sản phẩm đầu tiên;

 $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

Trong khi điều này có thể trả lời các câu hỏi, nó tốt hơn để cung cấp một số giải thích về cách mã trợ giúp này. – vard

+2

Tôi không muốn bị xoài nhưng, đây thực sự là câu hỏi, không phải là câu trả lời. Người dùng đã đề cập rằng mã ở trên không hoạt động cho tình huống của họ. Tôi đồng ý với @vard, chúng tôi đã từng copy các pasters từ SO trước đây nhưng copy paste cho SO mà không đọc câu hỏi là mới đối với tôi. – muhammedv

Các vấn đề liên quan