Коварная война россии против Украины. Ориентировочные потери врага
(по состоянию на 20.11.2024)
725740
солдат
369
самолетов
329
вертолетов
9390
танков
19119
ББМ
20681
артиллерия
1001
ПВО
1252
РСЗО
29648
машин
28
корабли и катера
Как получить коллекцию товаров в Magento 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. Надеемся, что данный код не вызвал у вас непонимания. Если у вас есть замечания/предложения по данной теме, напишите об этом в форме комментариев ниже. Спасибо!

 

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Быстрый доступ по сайту SebWeo
Угости меня кофе