Как я могу получить Категории и подкатегории рекурсивно, используя Magento 2?Я смог отобразить все категории, но проблема в том, что мне нужно отобразить его древовидным способом, например ниже
- Категория по умолчанию
- Домой
- О нас
- Продукты
- P-one
- P-two
- Карта сайта
- SC-One
Но то, что я получаю, это отображение всей этой категории.Есть ли способ достичь вышеупомянутого образца?Прямо сейчас мой код выглядит следующим образом
class Index extends \Magento\Framework\View\Element\Template
{
protected $_categoryCollectionFactory;
protected $_categoryHelper;
protected $_categoryRepository;
protected $_storeManager;
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Catalog\Model\ResourceModel\Category\CollectionFactory $categoryCollectionFactory,
array $data = []
)
{
$this->_categoryCollectionFactory = $categoryCollectionFactory;
$this->_categoryHelper = $categoryHelper;
$this->_categoryCategoryRepository = $categoryRepository;
$this->_storeManager = $storeManager;
$this->layerResolver = $layerResolver;
parent::__construct($context, $data);
}
/**
* Get category collection
*
* @param bool $isActive
* @param bool|int $level
* @param bool|string $sortBy
* @param bool|int $pageSize
* @return \Magento\Catalog\Model\ResourceModel\Category\Collection or array
*/
public function getCategoryCollection($isActive = true, $level = false, $sortBy = false, $pageSize = false)
{
$collection = $this->_categoryCollectionFactory->create();
$collection->addAttributeToSelect('*');
// Select only active categories
if ($isActive) {
$collection->addIsActiveFilter();
}
// select categories of certain level
if ($level) {
$collection->addLevelFilter($level);
}
// sort categories by some value
if ($sortBy) {
$collection->addOrderField($sortBy);
}
// select certain number of categories
if ($pageSize) {
$collection->setPageSize($pageSize);
}
return $collection;
}
, и в моем файле phtml у меня есть это
$categories = $this->getCategoryCollection();
foreach ($categories as $category) {
echo $category->getName() . '<br />';
}
Я не уверен, как это сделать, и было бы здорово, если бы яТакже можно получить справочную информацию о любой документации по Magento 2, в которой рассказывается, как получить другую часть сайта, например, продукты и другие материалы.Прямо сейчас у меня нет нулевых знаний по Magento, и я не знаю никакой документации / учебника, которым бы я мог следовать.
Буду признателен за вашу помощь в этом.