如果产品属于某个属性集,我希望在产品页面上显示一个静态块。
这个想法是,如果页面具有"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