Як отримати колекцію товарів в 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
Останні пости
Генрі Форд
Людина має два мотиви поведінки — один справжній та інший, що гарно звучить Генрі Форд…
Фрідріх Ніцше
Не треба додумувати надто багато. Так ви створюєте проблеми, яких не існувало Фрідріх Ніцше
Такий різний інвертор! Вибираємо між кондиціонерами Inverter, Inverter DC та Full DC
Літо в розпалі, а значить якраз час задуматися про покупку кондиціонера. Але як не загубитися…
Корисні поради щодо вибору розсувних дверей
Варто знати, що функціональність і дизайн працюють рука об руку, коли ви використовуєте розсувні двері.…