Magento 2 Produkteigenschaften in Price-Block abrufen

Aufgabenstellung bei der Programmierung eines Onlineshops in unserer Webagentur: Wir möchten den Preis eines Produkts auf der Basis einer Option eines ausgewählten Attributes ausblenden, sowohl in der Listansicht (Kategorien, Suche, etc.) als auch in der Produktdetailansicht.

 

 Fündig werden wir hier in der Datei (hier gleich der Overwrite)

 

/app/design/frontend/PACKAGE_NAME/TEMPLATE_NAME/Magento_Catalog/templates/product/price/amount/default.phtml

 

Wie können wir hier also ein Produkt laden, unabhängig von List- oder Detailansicht? Methoden sind hier nur rar gesät, aber es gibt zumindest in der Blockklasse \Magento\Framework\Pricing\Render\Amount eine Funktion getSaleableItem(), mit der wir zumindest eine "abgespeckte" Produktklasse erhalten und hieraus mit getId() die betreffende Produkt-ID auslesen können.

 

Somit können wir dann über den ObjectManager das vollständige Produkt nachladen

 

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

saleableItemId = $block->getSaleableItem()->getId();

$product = $objectManager->get('Magento\Catalog\Model\Product')->load($saleableItemId);

 

und die Attributwerte auslesen, beispielsweise:

 

$ext_stat_id = $product->getResource()->getAttribute('ext_stat')->getSource()->getOptionId($product->getAttributeText('ext_stat'));

 

um dann später mit einer If-Schleife den Preis auszublenden, wenn gewünscht, z.B.:

 

if($ext_stat_id!=132) {

 

Das war's! Gesehen in unserer Internetagentur in einem Webshop mit Magento 2.3.5.