Solución:
Por favor, haga que su código sea el mismo que el siguiente.
En este ejemplo tengo pantalla_garantía código de atributo para Pantalla de garantía y garantía_info código de atributo para Información de garantía.
Tu catalog_product_view.xml
el código debe ser
<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="product.info.details">
<block class="MagentoCatalogBlockProductView"
name="warrantyInfo.tab"
template="Product_CustomTab::custom_tab.phtml"
group="detailed_info">
<!--ifconfig="product/is_warranty_display"-->
<arguments>
<argument name="sort_order" xsi:type="string">40</argument>
<argument translate="true" name="title" xsi:type="string">Warranty Info</argument>
</arguments>
</block>
</referenceBlock>
</body>
</page>
tu custom_tab.phtml
el código de archivo debe ser
<?php if($this->getProduct()->getWarrantyDisplay()): ?>
<?php echo $this->getProduct()->getWarrantyInfo(); ?>
<?php endif; ?>
Cuando atributo activado:
Cuando atributo discapacitado:
Asegúrese de poder obtener su código de atributo en custom_tab.phtml
expediente.
¡Espero que esto te ayudará!
Siga el paso a continuación para mostrar o eliminar la pestaña en la página de detalles del producto.
Cree una pestaña personalizada a través del módulo utilizando el enlace de referencia a continuación
https://www.cloudways.com/blog/add-custom-tab-product-page-magento-2/
Luego, cree el archivo app / code / Cloudways / Mymodule / view / frontend / layout / catalog_product_view.xml y pase el código a continuación.
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="product.info.details">
<block class="MagentoCatalogBlockProductView" name="test.tab" template="Cloudways_Mymodule::custom_tab.phtml" group="detailed_info" >
<arguments>
<argument name="sort_order" xsi:type="string">40</argument>
<argument translate="true" name="title" xsi:type="string">Warranty Info</argument>
</arguments>
</block>
</referenceBlock>
</body>
</page>
Luego actualice el archivo app / code / Cloudways / Mymodule / view / frontend / templates / custom_tab.phtml y pase el código a continuación.
<?php
$product = $block->getProduct();
$data = $this->getProduct()->getAttributeText('warranty_display');
?>
<?php if($data == 'Yes'): ?>
<h1 style="color: #1979c3">
<?php echo $product->getData('sku'); ?>
</h1>
<?php endif; ?>
- Luego ejecute el comando de actualización de instalación y borre el caché.
- Luego, consulte la página de detalles del producto y verifique con el valor del atributo “garantía_display”.
- si el valor de Warranty_display es sí, entonces se muestra la pestaña personalizada como se muestra a continuación
- si el valor de Warranty_display es no, se eliminará la pestaña personalizada.
- si el valor de Warranty_display es sí, entonces se muestra la pestaña personalizada como se muestra a continuación
Estoy probado con magento 2.3, por favor verifique y avíseme si tiene alguna consulta.
Crea estos archivos en tu módulo
Proveedor / Módulo / vista / frontend / layout / catalog_product_view.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="product.info.details">
<block class="VendorModuleBlockMyBlock" template="Vendor_Module::index.phtml" group="detailed_info">
<arguments>
<argument translate="true" name="title" xsi:type="string">Custom Tab</argument>
<argument name="sort_order" xsi:type="string">25</argument>
</arguments>
</block>
</referenceBlock>
</body>
</page>
Proveedor Módulo Block MyBlock.php
<?php
namespace VendorModuleBlock;
class MyBlock extends MagentoCatalogBlockProductViewAttributes
{
public function isCustomAttrAvailable()
{
/** @var MagentoCatalogModelProduct $product */
$product = $this->getProduct();
// Find your attribute from $product variable and return true or false
}
}
Proveedor / Módulo / vista / frontend / templates / index.phtml
<?php if($block->isCustomAttrAvailable()): ?>
<div class="additional-attributes-wrapper table-wrapper">
<table class="data table additional-attributes" id="custom-tab">
<caption class="table-caption"><?= $block->escapeHtml(__('Custom Tab')) ?></caption>
<tbody>
<tr>
<th>Hello</th>
<td>Custom Tab</td>
</tr>
</tbody>
</table>
</div>
<?php endif; ?>