Frage

Ich habe ein Produktlisten-Widget in den Inhaltsbereich einer Magento 2 Store-Startseite eingefügt.Das Widget wird mit dem folgenden Code eingefügt:

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

Beim Wechsel der Site in den Produktionsmodus werden die Produktpreise beim Wechsel der Währungen nicht neu geladen.Price Reload funktioniert im Entwicklermodus und auch auf den regulären Kategorieseiten.Die Preise werden nach dem Aktualisieren des BLOCK_HTML-Caches im Backend neu geladen, aber dann wird die beim ersten Seitenaufruf gewählte Währung zwischengespeichert.das Setzen der Widget-Cache-TTL auf null hat keine Auswirkung.

Ich habe auch versucht, das Widget mit diesem Code über Layout-XML hinzuzufügen:

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

Ich habe auch versucht hinzuzufügen $this->_isScopePrivate = true; zu Magento\CatalogWidget\Block\Product\ProductsList::__construct() was das Laden von Ajax erzwingen soll, aber kein Erfolg.

Vorschläge, wie man das umgehen kann, irgendjemand?

War es hilfreich?

Lösung

Habe es herausgefunden:Das Hinzufügen eines Arguments cache_lifetime von xsi:type null hat den Trick gemacht.Also, wenn Sie jemals ein Widget über Layout hinzufügen möchten.xml und Sie möchten, dass es Cache-unabhängig ist, tun Sie dies:

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

Andere Tipps

Ich bin mir nicht sicher, ob es sich um eine Funktion handelt, die hinzugefügt wurde, seit diese Frage gestellt wurde, aber die Parameter enthalten eine "Cache-Lebensdauer (Sekunden)", wenn Sie das Widget als Administrator erstellen.

Wenn Sie mehrere Währungen haben, muss dies anscheinend auf 0 gesetzt werden, da es standardmäßig einen Tag dauert.

Scheint dumm zu sein, dass das Widget nicht den Code enthält, um zu entscheiden, ob ein Tagescache oder kein Cache die sinnvolle Standardeinstellung wäre - es müsste nur die verwendeten Währungen gezählt werden, um dies herauszufinden.

Sie können auch cache_lifetime= "1" in Ihrem Block ausprobieren, in dem das Widget aufgerufen wird.So etwas wie unten,

{{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"}}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top