Come mostrare il blocco prodotti in homepage – Magento 2

Il widget relativo ai prodotti ha il limite di non comprendere la toolbar, e di conseguenza non comprende il menu a tendina per l’ordinamento dei prodotti. In questo articolo quindi, vedremo come inserire il blocco prodotti, come se fossimo all’interno di una categoria.

Supponiamo di avere un nostro modulo MyVendor/Module già pronto, per i nostri esperimenti.  Il primo passo è quello di creare il file cms_index_index.xml nella cartella MyVendor/Module/view/frontend/layout.

La parte fondamentale dell’operazione consiste nello specificare che nel container “content” vogliamo inserire il blocco prodotti, tramite il codice:

<referenceContainer name="content">
  <block class="\Magento\Catalog\Block\Product\ListProduct" name="product_list"
    template="Magento_Catalog::product/list.phtml">
  </block>
</referenceContainer>

ma questo non è sufficiente, perchè dobbiamo tenere conto della presenza di eventuali prodotti configurabili. E infatti in quel caso, il risultato visivo non sarà dei migliori.

Il codice completo è il seguente

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" layout="1column">
<head>
  <css src="Magento_Swatches::css/swatches.css"/>
</head>
<body>
<attribute name="class" value="page-with-filter"/>
<referenceContainer name="content">
  <block class="\Magento\Catalog\Block\Product\ListProduct" name="product_list"
    template="Magento_Catalog::product/list.phtml">
<container name="category.product.list.additional" as="additional" />
  <block class="Magento\Framework\View\Element\RendererList" name="category.product.type.details.renderers" as="details.renderers">
    <block class="Magento\Framework\View\Element\Template" as="default"/>
    </block>
  </block>
</referenceContainer>
<referenceBlock name="category.product.type.details.renderers">
  <block class="Magento\Swatches\Block\Product\Renderer\Listing\Configurable" as="configurable" template="Magento_Swatches::product/listing/renderer.phtml" ifconfig="catalog/frontend/show_swatches_in_product_list" />
</referenceBlock>
</body>
</page>

Se voleste fare una prova per vedere come cambia il risultato finale, potreste commentare la sezione <referenceBlock> che trovate subito dopo la chiusura del tag referenceContainer.

Lascia un commento