根据产品属性集显示 html 元素?



如果产品属于某个属性集,我希望在产品页面上显示一个静态块。

这个想法是,如果页面具有"Rc"的属性集,则在产品页面上显示块,否则不显示块。我有一个自定义主题,并且已经制作了一个块并显示在所有产品页面上。我只需要在产品页面上显示属性集为"Rc"的块。我不知道文件夹结构和/或以下代码是否适用于 magento 2.3。我在哪里复制模板文件和从哪里复制模板文件...基本上整个九码如何实现设置和代码。

我找到的代码如下(附有我的评论(:

"将此方法添加到产品视图块" 从我正在阅读的内容来看,视图块不再称为文件夹结构为 catalog_product_view.xml

应用/设计/前端/供应商/主题/Magento_Catalog/布局/catalog_product_view.xml

public function checkAttributeSet($product = null, $attributeSetName = null)
{
if(is_null($product) || is_null($attributeSetName)) 
return false;
$attributeSetModel = Mage::getModel("eav/entity_attribute_set");
$attributeSetModel->load($product->getAttributeSetId());
if($attributeSetModel->getAttributeSetName() == $attributeSetName) {
return true;
} else {
return false;
}
}

"然后在应用程序/设计/前端/包/主题/模板/目录/产品/视图.phtml:"中,视图/phtml文件是否不再使用,这是什么正确的文件夹结构。

if($this->checkAttributeSet($_product, 'Rc')):
echo $this->getLayout()->createBlock('cms/block')->setBlockId('Rc')->toHtml();
elseif($this->checkAttributeSet($_product, 'ORC')):
echo $this->getLayout()->createBlock('cms/block')->setBlockId('ORC')->toHtml();
endif;

我设置的是(默认.xml(

	
<referenceBlock name="product.info.main">
<block class="MagentoCatalogBlockProductView" name="product-rc" template="Magento_Theme::product-rc.phtml" after="product.info.price">
</block>
</referenceBlock> -->

product-rc.phtml 正在所有产品中工作并显示。

(测试块(文本字符串位于 PHTML 文件中。

我明白了。下面的代码对我有用。

将代码添加到

模块目录/视图/

前端/模板/产品/视图

<?php    
$objectManager = MagentoFrameworkAppObjectManager::getInstance();
$attributeSet  = $objectManager->create('MagentoEavApiAttributeSetRepositoryInterface');
$product = $objectManager->create('MagentoCatalogModelProduct')->load($_product->getId());        
$attributeSetRepository   = $attributeSet->get($product->getAttributeSetId());
$attribute_set_name       = $attributeSetRepository->getAttributeSetName();

//$attribute_set_name_arr[] = $attribute_set_name; 
//echo '<pre>'; print_r($attribute_set_name);
if( !empty($attribute_set_name) && $attribute_set_name == 'Rc' ) {
		// echo $this->getLayout()
		->createBlock('MagentoCmsBlockBlock')
		->setBlockId('rcitems')
		->toHtml();
}     
?>

setBlockId = The Identifier of the block in admin.
Rc = is the attribute set
no need to add to default.xml

相关内容

  • 没有找到相关文章

最新更新