Magento 2 - Get Categories by Custom Category Attribute
-
22-02-2021 - |
Frage
In Magento2 - I've created a yes/no toggle category attribute named is_featured
, its shown as "Homepage Category" in the screenshot below.
I'd like to be able to display (on the homepage cms page) all categories with this category attribute set to yes, I'd need to grab the category title, url, thumbnail etc, does anyone have any recommended steps on how to achieve this?
Lösung
Hi Below is the standard way to achieve it.
namespace NameSpace\Module\Block;
class FeaturedCategories extends \Magento\Framework\View\Element\Template
{
protected $categoryCollectionFactory;
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Catalog\Model\ResourceModel\Category\CollectionFactory $categoryCollectionFactory,
array $data = []
) {
$this->categoryCollectionFactory = $categoryCollectionFactory;
parent::__construct($context, $data);
}
public function getFeaturedCategories()
{
$collection = $this->categoryCollectionFactory->create();
$collection->addAttributeToSelect('*')
->addAttributeToFilter('is_featured_category', '1')
->addAttributeToFilter('is_active', '1')
->setPageSize(10)
->setCurPage(1);
return $collection;
}
}
Andere Tipps
Please try with below code to filter with is_featured
is yes
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$category = $objectManager->create('Magento\Catalog\Model\ResourceModel\Category\Collection');
$category->addAttributeToSelect('*')
->setPageSize(1)
->addAttributeToFilter('is_featured',['eq'=>1])
->setOrder('updated_at', 'desc');
try its work for me
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange