Sample File Path: app/code/YourCompanyName/YourModuleName/Block/YourCustomBlock.php
<?php
namespace
YourCompanyName\YourModuleName\Block;
class
YourCustomBlock
extends
\Magento\Framework\View\Element\Template
{
protected
$_categoryCollectionFactory
;
protected
$_categoryHelper
;
public
function
__construct(
\Magento\Framework\View\Element\Template\Context
$context
,
\Magento\Catalog\Model\ResourceModel\Category\CollectionFactory
$categoryCollectionFactory
,
\Magento\Catalog\Helper\Category
$categoryHelper
,
array
$data
= []
) {
$this
->_categoryCollectionFactory =
$categoryCollectionFactory
;
$this
->_categoryHelper =
$categoryHelper
;
parent::__construct(
$context
,
$data
);
}
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
);
}
// set pagination
if
(
$pageSize
) {
$collection
->setPageSize(
$pageSize
);
}
return
$collection
;
}
public
function
getStoreCategories(
$sorted
= false,
$asCollection
= false,
$toLoad
= true) {
return
$this
->_categoryHelper->getStoreCategories(
$sorted
= false,
$asCollection
= false,
$toLoad
= true);
}
}
////////////////////////////////////////////////////////////////////
view (.phtml) file as follows.
// get the list of all categories
$categories
=
$block
->getCategoryCollection();
foreach
(
$categories
as
$category
) {
echo
$category
->getId() .
'<br />'
;
echo
$category
->getName() .
'<br />'
;
}
// get categories sorted by category name
$categories
=
$block
->getCategoryCollection(true, false,
'name'
, false);
foreach
(
$categories
as
$category
) {
echo
$category
->getId() .
'<br />'
;
echo
$category
->getName() .
'<br />'
;
}
// get current store’s categories
$categories
=
$block
->getStoreCategories();
foreach
(
$categories
as
$category
) {
echo
$category
->getId() .
'<br />'
;
echo
$category
->getName() .
'<br />'
;
}
////////////////////////////////////////////////////////////////////
Using Object Manager
$objectManager
= \Magento\Framework\App\ObjectManager::getInstance();
// get the list of all categories
$categoryCollection
=
$objectManager
->get(
'\Magento\Catalog\Model\ResourceModel\Category\CollectionFactory'
);
$categories
=
$categoryCollection
->create();
$categories
->addAttributeToSelect(
'*'
);
foreach
(
$categories
as
$category
) {
echo
$category
->getId() .
'<br />'
;
echo
$category
->getName() .
'<br />'
;
echo
$category
->getUrl() .
'<br />'
;
}
// get current store’s categories
$categoryHelper
=
$objectManager
->get(
'\Magento\Catalog\Helper\Category'
);
$categories
=
$categoryHelper
->getStoreCategories();
foreach
(
$categories
as
$category
) {
echo
$category
->getId() .
'<br />'
;
echo
$category
->getName() .
'<br />'
;
}
Comments
Post a Comment