Làm thế nào để có Id danh mục của sản phẩm hiện tại?


7

Tôi đã nhận được id danh mục sản phẩm hiện tại trên trang chi tiết sản phẩm. Tôi đã sử dụng một số phương pháp như:

$_product = Mage::getModel('catalog/product')->load(prodId);
$ids = $_product->getCategoryId();
$cat = Mage::getModel('catalog/product')->setId($ids);

nhưng nó không hoạt động như tôi muốn.

$products = Mage::getResourceModel('reports/product_collection')
        ->addAttributeToSelect('*')     
        ->setStoreId($storeId)
        ->addStoreFilter($storeId)
        ->addViewsCount()
        ->addCategoryFilter($cat)
        ->setPageSize($productCount); 

nhưng nó trở lại một số lần lỗi này

 Fatal error: Call to a member function getId() on a non-object in /var/www/html/app/code/core/Mage/Catalog/Model/Resource/Product/Collection.php on line 719 

nhập mô tả hình ảnh ở đây


current product category id on product detailscó nghĩa là danh mục từ đâu đến trang chi tiết sản phẩm?
Amit Bera

xin lỗi đó là lỗi của tôi tôi đã đặt -> addC CategoryFilter ($ cat) nhưng không có kết quả cố định.
Ajay Patel

Hãy thử $ cat = Mage :: getModel ('catalog / category') -> load (mảng_pop ($ ids));
Siarhey Uchukhlebau

Có thể bạn cần một bộ lọc khác $ Products-> addFieldToFilter ('category_id', mảng ('in' => $ catIds));
Siarhey Uchukhlebau

ở đây Category_ids trống @SiarheyUchukhlebau.
Ajay Patel

Câu trả lời:


9

Bởi vì 1 sản phẩm có thể được lưu trữ trong nhiều danh mục, vì vậy khi gọi

$categoryIds = $_product->getCategoryIds();

nó sẽ là một mảng.

foreach($categoryIds as $id) {
  $cat = Mage::getModel('catalog/category')->load($id);
}

4

Bạn có thể sử dụng mã dưới đây:

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

    echo $_category->getName();
    echo $_category->getId();
}

Sản phẩm có thể được gắn vào nhiều loại. Trong tình huống của bạn, khi bạn truy cập 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 đến từ loại nào, vì vậy nó không thể hiển thị cho bạn một danh mục cụ thể, 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ã ở trên, nó hiển thị tên danh mục đầu tiên của sản phẩm;
Kaka

@Kaka Nó sẽ hoạt động nếu bạn truy cập trực tiếp vào trang sản phẩm. Tôi đã kiểm tra nó
Arunendra

vui lòng tham khảo câu hỏi cập nhật.
Ajay Patel

@Arunendra Nếu vậy, bạn sẽ nhận được nhiều id danh mục nếu sản phẩm này được đính kèm trong nhiều danh mục, phải không? hoặc bạn sẽ nhận được id danh mục duy nhất ??
Kaka

@Arunendra bạn có thể vui lòng giúp tôi với bài đăng của riêng tôi magento.stackexchange.com/q/284557/57334
zus

2

Nếu bạn chỉ cần lấy danh mục hiện tại trên trang sản phẩm, cách dễ nhất để làm điều đó là lấy nó từ Sổ đăng ký:

echo Mage::registry('current_category') ? Mage::registry('current_category')->getName() : 'No category';

Để lấy ID, hãy sử dụng:

$catid = Mage::registry('current_category') ? Mage::registry('current_category')->getId() : null;

2

Thử cái này:

// Điều này sẽ nhận được thông tin của sản phẩm hiện tại.

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

$prodID = $product->getId();

$_product = Mage::getModel('catalog/product')->load($prodID);

$categoryIds = $_product->getCategoryIds();

foreach($categoryIds as $categoryIds1) {

$_category = Mage::getModel('catalog/category')->load($categoryIds1);

//get all category ID in the current product.

echo $category_id = $_category->getId();

//get all the Category Name of the Current Product.

echo $category_name = $_category->getName();

}

1
$_product = Mage::getModel('catalog/product')->load(prodId);
$ids = $_product->getCategoryId();
var_dump($ids); //this is category id

Mã dưới đây là sai:

$cat = Mage::getModel('catalog/product')->setId($ids);

Bất kỳ trợ giúp với bài đăng của riêng tôi magento.stackexchange.com/q/284557/57334 @Prashant Valanda
zus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.