Як отримати колекцію товарів в Magento 2
У сьогоднішній практичної статті ми розглянемо 2 способи, які вирішують проблему отримання колекції товарів в Magento 2. Перший метод передбачає використання ін’єкції залежностей (DI), а другий – використання менеджера об’єктів (Object Manager). А тепер перейдемо до практики.
Метод №1: Використовуємо ін’єкцію залежностей (DI)
Ви можете отримати доступ до списку товарів свого інтернет-магазину на Magento 2 використовуючи ін’єкцію залежностей (Dependency Injection – DI). Як її використовувати ми розглядали в попередній статті.
По-перше, потрібно зробити ін’єкцію об’єкта класу \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory
в конструктор класу Блоку вашого модуля, а потім отримати до нього доступ з файлу .phtml
теми.
Приблизний шлях до файлу, в якому ви будете його використовувати, приблизно такий:
app/code/VendorName/ModuleName/Block/YourBlock.php
Код в цьому файлі буде приблизно таким:
<?php namespace VendorName\ModuleName\Block; class YourBlock extends \Magento\Framework\View\Element\Template { protected $_productCollectionFactory; protected $_productVisibility; public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory, \Magento\Catalog\Model\Product\Visibility $productVisibility, array $data = [] ) { $this->_productCollectionFactory = $productCollectionFactory; $this->_productVisibility = $productVisibility; parent::__construct($context, $data); } public function getProductCollection() { $collection = $this->_productCollectionFactory->create(); $collection->addAttributeToSelect('*'); // вибираємо всі атрибути товару $collection->addWebsiteFilter(); // фільтруємо товари поточного сайту $collection->addStoreFilter(); // фільтруємо товари поточного магазину $collection->setVisibility($this->productVisibility->getVisibleInSiteIds()); // встановлюємо фільтр видимості товарів $collection->setPageSize(10); // робимо вибірку лише 10 товарів return $collection; } }
Після цього ви можете використовувати даний метод в файлі-шаблоні .phtml
теми наступним чином:
$productCollection = $block->getProductCollection(); foreach ($productCollection as $product) { echo "<p>Product name: " . $product->getName() . " (Product ID: " . $product->getId() . ")</p>"; }
Метод №2: Використовуємо менеджер об’єктів (Object Manager)
У цьому методі, щоб отримати колекцію товарів в Magento 2, ви можете використовувати наступний код:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $productCollectionFactory = $objectManager->get('\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory'); $collection = $productCollectionFactory->create(); $collection->addAttributeToSelect('*'); // вибираємо всі атрибути товару $collection->addWebsiteFilter(); // фільтруємо товари поточного сайту $collection->addStoreFilter(); // фільтруємо товари поточного магазину $collection->setVisibility($objectManager->get('\Magento\Catalog\Model\Product\Visibility')->getVisibleInSiteIds()); // встановлюємо фільтр видимості товарів // робимо вибірку лише 10 товарів $collection->setPageSize(10); foreach ($productCollection as $product) { echo "<p>Product name: " . $product->getName() . " (Product ID: " . $product->getId() . ")</p>"; }
Другий метод є менш рекомендованим, але для цілей розробки його можна використовувати прямо з файлів-шаблонів .phtml
поточної теми інтернет-магазину.
От і все! З даної статті ви дізналися, як можна легко на практиці отримати колекцію товарів в Magento 2. Сподіваємося, що даний код не викликав у вас нерозуміння. Якщо у вас є зауваження/пропозиції по даній темі, напишіть про це в формі коментарів нижче. Дякуємо!
This post was last modified on 09/10/2018 21:13
Останні пости
Уроки SQL — як знайти повторювані записи (дублі) в базі даних
По-перше, щоб не допустити подібних ситуацій, вам заздалегідь потрібно надавати унікальні значення у таблицях. Так…
Ремонт чи купівля нової шини? Варіанти ремонту гуми
Заплатка на шині, як правило, є простим і дешевим варіантом порівняно з покупкою нового колеса,…
Гігієна кота: основні правила та рекомендації ветеринарів
Коти належать до охайних тварин — приблизно половину свого життя вони витрачають на «гігієнічні процедури».…
Збірні швидкомонтовані будинки — основне, що потрібно знати
Щось готове до вживання, як от піца чи локшина, вже давно зайняло почесне місце в…
Популярність, переваги та сфери застосування металосайдингу
Сьогодні акцент на екологічному дизайні та матеріалах має високі показники та популярність. Дизайнери обирають екологічно…