현재 카테고리 객체에서 상위 카테고리를 얻는 방법은 무엇입니까?


14

현재 범주 개체에서 최상위 부모 범주 (기본 범주 바로 뒤)를 얻으려면 어떻게해야합니까? 해당 상위 카테고리의 카테고리 이름 및 카테고리 URL이 하위 카테고리에 표시되기를 원합니다.

  • 기본 카테고리
    • 고양이 A
      • 고양이 B
        • 고양이 C

어떻게 얻을 수 Cat A의 이름과 URL에서 Cat BCat C객체?

답변:


22

$category->getPath()트리 루트에서 슬래시 ( /)로 구분 된 현재 카테고리까지 모든 카테고리의 ID를 리턴합니다 . 예를 들면 다음과 같습니다 1/2/56/124/543.. 첫 번째는 '뿌리의 뿌리'입니다. 두 번째는 카탈로그 루트 (기본 카테고리)입니다. 나머지는 간단한 범주입니다. 이런 식으로 할 수 있습니다.

$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.
}

이제 다음과 같이 이름과 URL을 얻을 수 있습니다.

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

감사합니다 마리우스! getId()내가 수정 한 오타가 있습니다. 완벽하게 작동합니다.
MagExt 2016 년

멋있는. 오타가 유감입니다. 정정 주셔서 감사합니다.
Marius

안녕하세요, 카테고리 트리의 공식 마 젠토 문서를 참조 할 수 있습니까?
MengT

@Marius 범주의 경로를 가져 오면 범주의 모든 항목에 1 / 2 / <각 범주 ID>라고 표시됩니다. 기본 범주 ID는 2입니다. 그러면이 1은 무엇입니까?
Butterfly

1
@ invissible 당신이 맞아요.
Marius

15

이 시도

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

이 코드를 복사하여 붙여 넣기 만하면됩니다. :)


안녕하세요. 답변 주셔서 감사합니다,하지만 당신은 5 개월 늦었습니다 :)
MagExt

9
마 젠토 스택에 오신 것을 환영합니다. 아직 다루지 않은 좋은 답변이 있다면 오래된 질문에 대답 할 수 있습니다. 답변은 OP의 이익뿐만 아니라 커뮤니티의 이익을위한 것입니다. 유지하십시오! :)
McNab

이 답변은 레벨 3 이상인 경우 첫 번째 부모를 반환하므로 질문은 최상위 질문에 해당하므로 잘못된 것입니다.
gnysek

이것이 완벽한 솔루션은 아니지만 원하는 수준에 도달 할 때까지 반복 될 수 있습니다. 올바른 방향으로 나를 밀었다.
Domino

4

현재 카테고리에서 getParentCategories ()를 사용한 다음 array_pop을 호출하여 마지막 요소를 가져올 수 있습니다. 두 번째 마지막 요소를 얻으려면 두 번하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.