Saltar al contenido

Magento 2: ¿Cómo mostrar / ocultar la pestaña personalizada en la página de detalles del producto según el atributo del producto?

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:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Cuando atributo discapacitado:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

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
      ingrese la descripción de la imagen aquí
    • si el valor de Warranty_display es no, se eliminará la pestaña personalizada.
      ingrese la descripción de la imagen aquí

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; ?>
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *