Domanda

Ho un widget Elenco prodotti inserito nell'area del contenuto di una frontpage Magento 2 Store.Il widget è inserito utilizzando il seguente codice:

{{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`;]]"}}
.

Quando si accende il sito in modalità di produzione, i prezzi dei prodotti non vengono ricaricati durante la modifica delle valute.Il prezzo ricarica funziona in modalità sviluppatore e anche sulle pagine di categoria regolare. I prezzi vengono ricaricati dopo la rinfrescante cache Block_html in back-end ma caccherà quindi la valuta scelta sulla prima pagina.Impostazione dei widget Cache TTL su NULL non ha alcun effetto.

Ho anche provato ad aggiungere il widget tramite layout XML utilizzando questo codice:

<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>
.

Ho anche provato ad aggiungere $this->_isScopePrivate = true; a Magento\CatalogWidget\Block\Product\ProductsList::__construct() che dovrebbe forzare il caricamento Ajax, ma nessun successo.

Suggerimenti Come aggirare questo, chiunque?

È stato utile?

Soluzione

ha capito: aggiungendo un argomento cache_lifetime di XSI: Digitare Null ha fatto il trucco.Quindi, se vuoi aggiungere un widget tramite layout.xml e vuoi che sia indipendente dalla cache, fai questo:

<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>
.

Altri suggerimenti

Non sono sicuro se è una funzione che è stata aggiunta poiché questa domanda è stata posta, ma c'è una "durata della cache (secondi)" nei parametri quando si crea il widget come admin.

Se si dispone di più valute, questo sembra richiedere l'impostazione a 0 come dura un giorno per impostazione predefinita.

Sembra daft che il widget non contiene il codice per decidere se una cache di un giorno o nessuna cache sarebbe l'impostazione predefinita sensibile - avrebbe solo bisogno di contare le valute utilizzate per scoprire.

Inoltre puoi provare cache_lifetime="1" nel tuo blocco, dove viene chiamato il widget. Qualcosa come sotto,

{{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"}}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top