2012-07-23 3 views
0

왼쪽 사이드 바 Magento 사용자 지정 내비게이션

안녕하세요, 카테고리 페이지에서 볼 수있는 Magento 탐색을 만들고 싶습니다. 조금 혼란 스럽네요.

1. 부모 카테고리 Designer3이 있습니다.
2. CAT1, CAT2 및 CAT3의 세 가지 하위 범주가 있습니다.
3. 이제 CAT1에는 subcat1, sucat2 및 subcat3의 세 가지 하위 집합이 있습니다.

이제 CAT1 페이지로 이동하면 CAT1 CAT2와 CAT3이 탐색 메뉴의 하위 세트와 함께 모두 표시되기를 바랍니다.

선택한 현재 범주 (CAT1, CAT2 또는 CAT3)에 따라 :

-> 현재 범주가 CAT1 인 경우 하위 표가있는 CAT1이 먼저 표시됩니다.
-> 현재 cat이 CAT2 인 경우 탐색은 다음과 같이됩니다.

하위 고양이가있는 CAT2, 하위 고양이가있는 CAT1 및 하위 고양이가있는 CAT3.

또한 CAT1 내의 하위 카테고리를 선택하면 Nav의 위치는 CAT1 - 서브 캣과 CAT2, 서브 캣과 CAT3 및 서브 캣과 현재 카테고리 인 CAT1 서브 캣이 강조되어야합니다.

희망적이라고 생각합니다. 그래서

이 내가 ..이 나에게 현재 범주와 하위 고양이하지만 때를주는 피곤 것입니다 ...

나는 여러 가지 시도 ...하지만 코딩에 올 때 메신저는 매우 도전 하위 고양이

<p><a href="<?php $currentCategory = Mage::registry('current_category'); 
    //Display current category url 
    echo $this->getCurrentCategory()->getUrl();?>" class="ctActiveTitle"> 
    <?php 
    $currentCategory = Mage::registry('current_category'); 
    //Display current category 
    echo $this->getCurrentCategory()->getName();?></a> 
    <!--SHOWING SUB CATEGORIES OF CURRENT CATEGORY--> 
    <?php 
    $obj = new Mage_Catalog_Block_Navigation();// create obj 
    $cat = Mage::getModel('catalog/category')->load($obj->getCurrentCategory()- >getId()); //get current cat 
    $subcats = $cat->getChildren(); // find them kids 
    // loop on it 
    foreach(explode(',',$subcats) as $subCatid){ // split up the mage data for use 
    $_category = Mage::getModel('catalog/category')->load($subCatid); 
    $caturl = $_category->getURL(); 
    $catname = $_category->getName(); 
    // echo a link 
    echo '<a href="'.$caturl.'" class="ctBrownLink"> '.$catname.'</a>'; 

    }?> </p> <p>Tnaks Moody</p> 

답변

1

당신은 정말 작성할 필요가 없습니다 ... 그것은 젠토에 올 때 도전 조금 메신저 ... 어떤 도움과 제안 aprrecited됩니다 .... 모두가 토스에 간다 클릭 이에 대한 사용자 정의 코드. 블록 Mage_Catalog_Block_Navigation에는 이미이 모든 논리가 포함되어있어 대부분의 문제를 해결할 것입니다. 적어도 하위 하위 카테고리로 선택하면 문제가됩니다. 자세한 내용은 renderCategoriesMenuHtml()을 참조하십시오.

/** 
* Render categories menu in HTML 
* 
* @param int Level number for list item class to start from 
* @param string Extra class of outermost list items 
* @param string If specified wraps children list in div with this class 
* @return string 
*/ 
public function renderCategoriesMenuHtml($level = 0, $outermostItemClass = '', $childrenWrapClass = '') 
{ 
    $activeCategories = array(); 
    foreach ($this->getStoreCategories() as $child) { 
     if ($child->getIsActive()) { 
      $activeCategories[] = $child; 
     } 
    } 
    $activeCategoriesCount = count($activeCategories); 
    $hasActiveCategoriesCount = ($activeCategoriesCount > 0); 

    if (!$hasActiveCategoriesCount) { 
     return ''; 
    } 

    $html = ''; 
    $j = 0; 
    foreach ($activeCategories as $category) { 
     $html .= $this->_renderCategoryMenuItemHtml(
      $category, 
      $level, 
      ($j == $activeCategoriesCount - 1), 
      ($j == 0), 
      true, 
      $outermostItemClass, 
      $childrenWrapClass, 
      true 
     ); 
     $j++; 
    } 

    return $html; 
} 

은 또한이 방법은 자동으로 카테고리가 표시 여부할지 여부를 고려처럼 평평하지 않은 평면 부문과 사물 사이에 교환 할 때 발생합니다 차이점을 처리합니다.

네비게이션 순서에 관한 정보. 사용성의 관점에서 카테고리를 선택하면 주문을 그대로 유지할 수 있습니다. 사람들은 특정 장소에서 내비게이션 또는 그 일부를 기대할 수 있습니다. 주변을 둘러싼 저글링은 최적이 아니므로 예상 위치가 다를 수 있기 때문에 사람들이 사물을 검색하게됩니다.

+0

thanx Tim .. 채우려면 more..i이 코드는 catalog.xml의 "left"에서 호출되는 별도 phtml 파일에서 사용했습니다. 나는 메인 영역 네비게이션 left.phtml을 사용하지 않고 콘텐츠 영역에 특정 속성을 표시하려고합니다. 지금,이 배경으로 내가이 기능을 약간의 도전 과제로 사용할 수있는 방법을 조언 해 주시겠습니까? 더 나아가 네비게이션 위치 지정 부분이 필요합니다. 다시 ~ thanxs ... – Moody

+0

글쎄,이 함수를 확장하여 반환 된 모든 데이터를 $ html에 저장하는 대신 $ activeCategories 루프 내의 각 반복을 배열의 다른 키에 저장하십시오 $ category-> getId()에 키 입력. 그렇게하면 각 카테고리에 별도의 html 스 니펫이 생기므로 템플릿에서 인쇄 할 때 순서대로 이동할 수 있습니다. 또한, 나는 어떤 종류의 속성을 표시하고 싶은지 모르지만,이 기능은 귀하가 보여준 스 니펫 대신에 작업에 대한 모든 존중, 계속할 수있는 더 나은 기반으로 여전히 여겨집니다. –

+0

그래서 같은 끝낼 : UR 대답없는 –