문제

다음과 같이 하기 전에:

$_categories = Mage::helper('catalog/category')->getStoreCategories();
foreach($_categories as $_category): 
    echo $_category->getName(); 
endforeach;

단순하고 간단합니다. 카테고리를 나열하기 위해 phtml 파일에 넣으면 됩니다.Magento 2에서는 간단하지 않습니다.

가능한 모든 솔루션에 대해 Google 검색의 4페이지를 스크롤하는 것 옆에 을 시도했습니다.어느 것도 작동하지 않습니다.새로운 CMS에 대한 내 추론에 문제가 있다고 생각합니다.아마도 이 코드의 구조에서 논리를 볼 필요가 있을 것입니다.

위의 예와 같이 phtml 파일에 모든 상점 카테고리를 나열하는 방법을 알려주실 수 있습니까?

도움이 되었습니까?

해결책

몇 가지 중요한 사용자 지정 규칙을 중단하여 결과를 얻으려면 Magento 1에서와 거의 동일하게 수행할 수 있습니다.

$_categories = $this->helper('Magento\Catalog\Helper\Category')
                    ->getStoreCategories();
foreach($_categories as $_category): 
    echo $_category->getName(); 
endforeach;

이것은 M2의 모든 PHTML 템플릿이 \\Magento\\Framework\\View emplateEngine\\Php 클래스/객체(그래서 $this는 이 객체를 가리키고 있음)의 컨텍스트에서 렌더링되고 범주 도우미는 아직M2에서 사용할 수 있습니다.

그러나 올바르게 수행하려면 고유한 블록 클래스를 만들고 블록 클래스에 대한 적절한 종속성을 정의하는 것이 좋습니다(이 경우 동일한 도우미이거나 카탈로그 모듈 API를 대신 사용하는 것이 더 나을 수 있습니다. 예: Magento\\Catalog\\Api\\CategoryManagementInterface::getTree)

그리고 확실히 여러 클래스를 다시 작성하거나 여러 모듈을 작성하거나 시스템을 완전히 다시 작성할 필요가 없습니다.

다른 팁

V Korotun의 답변 덕분에 이 부분이 작동하게 되었습니다.

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();       
$categoryFactory = $objectManager->create('Magento\Catalog\Model\ResourceModel\Category\CollectionFactory');
$categories = $categoryFactory->create()
                ->addAttributeToSelect('*')
                ->addAttributeToFilter('is_active',1)
                ->setOrder('position', 'ASC');

foreach ($categories as $category) :
    echo $category->getName();
endforeach;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top