Oto mój obserwator:
public function execute(\Magento\Framework\Event\Observer $observer)
{
$orderIds = $observer->getEvent()->getOrderIds();
$order = $this->_orderRepositoryInterface->get($orderIds[0]);
$items =$order->getAllVisibleItems();
$productQuantity = array();
$productPrice = array();
$productName = array();
$productIds = array();
foreach($items as $item) {
$productIds[]= $item->getProductId();
$productName[]= $item->getSku();
$productPrice[] = $item->getPrice();
$productQuantity[]= floor($item->getQtyOrdered());
}
}
Jak mogę uzyskać obraz produktu i adres URL produktu z produktu?
magento2
product
event-observer
product-images
Ramkishan Suthar
źródło
źródło
Odpowiedzi:
Ten sposób może nie być najlepszym sposobem na uzyskanie obrazu produktu.
Wstaw
\Magento\Catalog\Api\ProductRepositoryInterfaceFactory
do naszego konstruktora.Możemy uzyskać obraz:
źródło
pub/media/catalog/product
Jeśli chcesz opublikowanego / pamięci podręcznej adresu URL obrazu dla określonego widoku sklepu (tak jak ja), to działa dla mnie:
Następnie, gdziekolwiek potrzebujesz uzyskać adres URL frontonu obrazu:
Możesz wybrać inne typy obrazów oprócz
product_thumbnail_image
: sprawdźmagento/theme-frontend-luma/etc/view.xml
listę dostępnych zdjęć produktów lub utwórz własne wview.xml
pliku.źródło
Jeśli musisz zwrócić adres URL produktu, powinien on wyglądać następująco:
źródło
Tak właśnie zrobiłem. jest dość wydajny i czysty:
1) Najpierw musisz wstrzyknąć następujące klasy:
2) Następnie utwórz metodę getImageUrl z poniższym kodem:
Uwaga: Kod „appEmulation” jest konieczny tylko podczas wykonywania tego połączenia od administratora lub interfejsu API . W przeciwnym razie pojawi się błąd poniżej (lub podobny):
3) Wywołaj getImageUrl przekazując obiekt produktu i żądany typ obrazu (na podstawie pliku view.xml )
źródło
Aby uzyskać niestandardowy adres URL obrazu, użyłem tego kodu. Więc jeśli obraz nie wychodzi, załaduje domyślny obraz motywu.
źródło