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

 

This post was last modified on 09/10/2018 21:13

Share
Підтримай проект
Пригости мене кавою

Buy Me A Coffee ☕😊💕

 

 

Останні пости

Джордж Орвелл

Уся пропаганда війни, усі крики, брехня і ненависть, йдуть завжди від людей, які на цю…

14/06/2024

Фітосвічки Вагіфлорин для підтримки здоров’я жіночої флори від Рослина Карпат

    Фітосвічки Вагіфлорин: Підтримка Здоров’я Жіночої Флори Фітосвічки Вагіфлорин від компанії Рослина Карпат є ефективним засобом…

11/06/2024

Тренування грудей з гантелями та лавкою від Youtube канала Workout Guru

Вітаю вас, друзі! Ви коли-небудь замислювалися, як покращити тренування грудей, використовуючи гантелі та лавку? Це…

05/06/2024

Що таке порт (комп’ютерний) і навіщо він потрібен?

Оскільки різні комп’ютерні програми можуть використовувати різні процеси та/або служби, для їх розрізнення операційна система…

01/06/2024

Уроки PHP — Обробка помилок (можливі типи помилок)

В сьогоднішньому теоретичному уроці ми розглянемо складне та важливе питання в PHP — виявлення та…

30/05/2024

Як створити розумні торгові кампанії через Merchant Center?

Інтеграція Merchant Center з Google Рекламою відкриває доступ до такого ефективного типу кампаній, як Smart…

29/05/2024