Categories: Мадженто 2

Як отримати колекцію товарів в 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. Сподіваємося, що даний код не викликав у вас нерозуміння. Якщо у вас є зауваження/пропозиції по даній темі, напишіть про це в формі коментарів нижче. Дякуємо!

 

Share
Published by
SebWeo

Recent Posts

Воррен Баффет

Навіть якщо ви дуже талановиті і докладаєте великих зусиль, для деяких результатів просто потрібен час:…

1 день ago

Покрокова інструкція Імпорту даних з Excel в MySQL через phpMyAdmin

Цей практичний урок допоможе вам перенести дані з вашого Excel-файлу (з деякими конкретними стовпцями) до…

3 дні ago

Поширені міфи та помилки про пиво: відновлюємо справедливість

Пиво – один із найпопулярніших напоїв, який поряд з чаєм та кавою відомий у всіх…

4 дні ago

Уроки JavaScript — Короткі функції на заміну великому об’ємному коду

Досить часто у програмістів виникає спокуса написати якусь велику функцію, що повинна вирішувати певну задачу.…

1 тиждень ago

Навіщо та як прокидатися раніше

Дискусії навколо цієї теми вас, певно, вже втомили. Але я в даній статті постараюсь показати…

1 тиждень ago

Уроки JavaScript — Шпаргалка для розробників по роботі з консоллю у браузері

Консоль браузера (також відома як консоль JavaScript або веб-консоль), — це потужний інструмент для розробників,…

2 тижні ago