Hi there
I hope someone can point me in the right direction here.
I have a product attribute set that I select when adding certain new products.
I want to make some front end design changes to the extended product page only for the products using this attribute set.
The changes I want to make include using reference block - remove for certain elements
How do I best approach this?
I can achieve this in an xml file - if I could target the correct attribute set
Kind Regards
Brad
I have found a solution dating back to 2019 supplied by @saneer_ladani
namespace Vendor\ModuleName\Observer; use Magento\Framework\Event\ObserverInterface; class ProductViewLayout implements ObserverInterface { protected $_resultPageFactory; public function __construct(\Magento\Framework\View\Result\PageFactory $resultPageFactory) { $this->_resultPageFactory = $resultPageFactory; } public function execute(\Magento\Framework\Event\Observer $observer) { $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $_product = $objectManager->create('Magento\Catalog\Model\Product')->load($observer->getProduct()->getId()); $attributeValue = $_product->getResource()->getAttribute('type_of_product')->getFrontend()->getValue($_product); if($attributeValue=="Test 2"){ $page = $this->_resultPageFactory->create(); $page->addHandle('catalog_product_custom_layout'); } return $this; } }
However on Magento 2.3.7 I get this error
"PHP message: PHP Fatal error: Uncaught Error: Call to a member function getFrontend() on bool " referencing link 18
Any help or advice graciously accepted
- Try this
$_product->getResource()->getAttribute('attribute_code')->setStoreId(0)->getFrontend()->getValue($_product);
- Or
$_product->getData('your_attribute');