Làm thế nào để có được danh mục cha mẹ hàng đầu từ đối tượng thể loại hiện tại?


14

Làm cách nào tôi có thể nhận được danh mục cha mẹ cấp cao nhất (ngay sau Danh mục mặc định) từ đối tượng danh mục hiện tại? Tôi muốn Tên Danh mục và URL Danh mục của danh mục chính đó hiển thị trong các danh mục phụ.

  • Danh mục Mặc định
    • Cát A
      • Cát B
        • Cát C

Làm cách nào tôi có thể nhận được Cat ATên và URL trong Cat BCat Ccác đối tượng?

Câu trả lời:


22

$category->getPath()sẽ trả về id của tất cả các danh mục từ gốc cây đến hiện tại được phân tách bằng dấu gạch chéo ( /). Đây là một ví dụ : 1/2/56/124/543. Cái đầu tiên là "gốc rễ". Cái thứ hai là thư mục gốc (danh mục mặc định). Phần còn lại của chúng là các thể loại đơn giản. Vì vậy, bạn có thể làm một cái gì đó như thế này.

$path = $category->getPath();
$ids = explode('/', $path);
if (isset($ids[2])){
    $topParent = Mage::getModel('catalog/category')->setStoreId(Mage::app()->getStore()->getId())->load($ids[2]);
}
else{
    $topParent = null;//it means you are in one catalog root.
}

Bây giờ bạn có thể nhận được tên và url như thế này:

if ($topParent){
    $name = $topParent->getName();
    $url = $topParent->getUrl();
}

Cảm ơn Marius! Có một lỗi đánh máy trong getId()tôi đã sửa nó. Nó hoạt động hoàn hảo.
MagExt

mát mẻ. xin lỗi về lỗi đánh máy và cảm ơn đã sửa chữa.
Marius

Xin chào, có ai có thể giới thiệu tôi đến tài liệu magento chính thức cho cây danh mục không?
MạnhT

@Marius khi tôi nhận được đường dẫn của danh mục, tất cả các danh mục đều nói 1/2 / <ID danh mục tương ứng> Id danh mục mặc định của tôi là 2. Sau đó, đây là gì 1?
Bướm

1
@invissible bạn nói đúng.
Marius

15

Thử đi

$level = $this->getCurrentCategory()->getParentCategory()->getLevel();
if($level > 1){                 
    echo $this->getCurrentCategory()->getParentCategory()->getName();
    }
    else{
    echo $this->escapeHtml($_category->getName());
    }

Đơn giản chỉ cần sao chép và dán mã này :)


Chào. Cảm ơn câu trả lời của bạn, nhưng bạn trễ 5 tháng :)
MagExt

9
Chào mừng đến với ngăn xếp Magento. Bạn hoàn toàn đúng khi trả lời một câu hỏi cũ nếu bạn có một câu trả lời hay chưa được đề cập. Câu trả lời là vì lợi ích của cộng đồng chứ không chỉ vì lợi ích của OP. Giữ nó lên! :)
McNab

Câu trả lời này sẽ sai nếu bạn ở cấp 3 trở lên, vì nó trả về Phụ huynh đầu tiên, trong khi câu hỏi là về câu hỏi hàng đầu.
gnysek

Mặc dù đây không phải là một giải pháp hoàn chỉnh, người ta có thể lặp cho đến khi đạt được mức mong muốn. Đẩy tôi đi đúng hướng.
Domino

4

Bạn có thể sử dụng getParentC chuyên mục () trên danh mục hiện tại và sau đó gọi mảng_pop để lấy phần tử cuối cùng. Làm điều đó hai lần để có được yếu tố cuối cùng thứ hai.

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.