Ich habe eine Sammlung in eine Variable geladen $collection
und möchte eine Sammlungsvariable in meiner übergebenlist.phtml
$block = $viewBlock->getLayout()
->createBlock('Vendor\Module\Block\ProductList')
->setTemplate('Magento_Catalog::product/list.phtml')
->toHtml();
So list.phtml
erstellen Sie Produktliste entsprechend meiner Sammlung. Meine Frage ist, wie ich die Sammlungsvariable übergeben kannlist.phtml
Hinweis: Ich möchte nichts in der Listen-HTML ändern. Dazu gehört auch das Aufrufen einer benutzerdefinierten Funktion vom Blockobjekt. Meine Produktsammlung muss standardmäßig geladen sein und befindet sich bereits in der Liste phtml, dh:$_productCollection = $block->getLoadedProductCollection();
quelle
->setCollection($collection)
aber es funktionierte nicht. Was ich damit sagen will, ich muss nichts an der Liste ändern, es enthält auch den Aufruf.Ihre
$block
Variable enthält den Inhalt von,list.phtml
also haben Sie ihn hier gerade aufgerufen.Das
list.phtml
beinhaltet ,$_productCollection
dass sie es aus dem Modul bekommenblock
, in dem$block
Sie etwas in dieser Sammlung tun , weil die Sammlung bereits geladen worden ist, ist es zu spät , um es auf dieser Ebene zu aktualisieren.Sie können diesen Block neu schreiben
Magento_Catalog\Block\Product\ListProduct.php
und anschließend die Sammlung aktualisieren.quelle
Ich habe den folgenden Code verwendet, um Produktdaten mithilfe des Plugins an eine HTML-Datei zu senden. und es funktioniert gut.
Hinweis: Im obigen Code habe
->setProduct($product)
ich Produktdaten festgelegt. Ich denke, Sie können->setCollection()
damit Ihr Ziel erreichen. Sie können es auf diese Weise versuchen, es könnte helfen.quelle