Pregunta

Tengo un widget de la lista de productos insertado en el área de contenido de un FrontPage de Magento 2 Store.El widget se inserta utilizando el siguiente código:

{{widget type="Magento\CatalogWidget\Block\Product\ProductsList" products_count="12" template="product/widget/content/grid.phtml" conditions_encoded="a:2:[i:1;a:4:[s:4:`type`;s:50:`Magento|CatalogWidget|Model|Rule|Condition|Combine`;s:10:`aggregator`;s:3:`all`;s:5:`value`;s:1:`1`;s:9:`new_child`;s:0:``;]s:4:`1--1`;a:4:[s:4:`type`;s:50:`Magento|CatalogWidget|Model|Rule|Condition|Product`;s:9:`attribute`;s:12:`category_ids`;s:8:`operator`;s:2:`==`;s:5:`value`;s:2:`19`;]]"}}

Cuando cambie el sitio al modo de producción, los precios del producto no se vuelven a cargar al cambiar las monedas.La recarga de precios funciona en modo de desarrollador y también en las páginas de categoría regular. Los precios se recargan después de actualizar el caché de bloque_html en backend, pero luego cambiarán la moneda elegida en la vista de la primera página.Configuración del caché de los widgets TTL a NULL no tiene efecto.

También intenté agregar el widget a través de Discout XML usando este código:

<referenceContainer name="content.bottom">
    <block class="Magento\CatalogWidget\Block\Product\ProductsList" template="product/widget/content/grid2.phtml" cacheable="false"><!--   -->
        <arguments>
             <argument name="products_count" xsi:type="number">12</argument>
             <argument name="conditions_encoded" xsi:type="string">a:2:[i:1;a:4:[s:4:`type`;s:50:`Magento|CatalogWidget|Model|Rule|Condition|Combine`;s:10:`aggregator`;s:3:`all`;s:5:`value`;s:1:`1`;s:9:`new_child`;s:0:``;]s:4:`1--1`;a:4:[s:4:`type`;s:50:`Magento|CatalogWidget|Model|Rule|Condition|Product`;s:9:`attribute`;s:12:`category_ids`;s:8:`operator`;s:2:`==`;s:5:`value`;s:2:`19`;]]</argument>
        </arguments>
    </block>
</referenceContainer>

También intenté agregar $this->_isScopePrivate = true; a Magento\CatalogWidget\Block\Product\ProductsList::__construct(), que se supone que obligue a forzar la carga de Ajax, pero sin éxito.

Sugerencias ¿Cómo moverte esto, alguien?

¿Fue útil?

Solución

Destaca: Agregar un argumento cache_lifetime de XSI: Type Null hizo el truco.Entonces, si alguna vez desea agregar un widget a través de Layout.xml y desea que sea independiente de caché, haga esto:

<referenceContainer name="content.bottom">
    <block class="Magento\CatalogWidget\Block\Product\ProductsList" template="product/widget/content/grid2.phtml">
        <arguments>
            <argument name="products_count" xsi:type="number">12</argument>
            <argument name="conditions_encoded" xsi:type="string">a:2:[i:1;a:4:[s:4:`type`;s:50:`Magento|CatalogWidget|Model|Rule|Condition|Combine`;s:10:`aggregator`;s:3:`all`;s:5:`value`;s:1:`1`;s:9:`new_child`;s:0:``;]s:4:`1--1`;a:4:[s:4:`type`;s:50:`Magento|CatalogWidget|Model|Rule|Condition|Product`;s:9:`attribute`;s:12:`category_ids`;s:8:`operator`;s:2:`==`;s:5:`value`;s:2:`19`;]]</argument>
            <argument name="cache_lifetime" xsi:nil="true" xsi:type="null">null</argument>
        </arguments>
    </block>
</referenceContainer>

Otros consejos

No estoy seguro de si es una característica que se ha agregado desde que se hizo esta pregunta, pero hay una "vida útil de la caché (segundos)" en los parámetros cuando crea el widget como administrador.

Si tiene varias monedas, esto parece requerir la configuración en 0, ya que dura un día de forma predeterminada.

Parece Daft que el widget no contiene el código para decidir si un día caché de día o ningún caché sería la configuración predeterminada sensible, solo tendría que contar las monedas que se están utilizando para averiguarlo.

También puede probar cache_lifetime="1" en su bloque, donde se llama Widget. Algo así como abajo,

{{widget type="Magento\Catalog\Block\Product\Widget\NewWidget" cache_lifetime="1" display_type="all_products" products_count="8" template="Magento_Catalog::product/widget/new/content/new_grid.phtml"}}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top