If you want to show product listing in a given order by its category in the Catalog Product List Widget? Then follow the below steps.
Step 1: Create a file like ProductOrder/CatalogProList/etc/frontend/di.xml
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="MagentoCatalogWidgetBlockProductProductsList"> <plugin name="custom_widgets_product_list" type="ProductOrderCatalogProListPluginBlockProductProductsOrderList"/> </type> </config>
Step 2: Create another file like ProductOrder/CatalogProList/Plugin/Block/Product/ProductsOrderList.php
<?php namespace ProductOrderCatalogProListPluginBlockProduct; use MagentoCatalogModelResourceModelProductCollection; use MagentoCatalogWidgetBlockProductProductsList; /** * Class ProductsOrderList */ class ProductsOrderList { /** * @param ProductsList $subject * @param Collection $result * @return Collection * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function afterCreateCollection(ProductsList $subject, Collection $result) { $result->getSelect()->order('cat_index_position asc'); return $result; } }
That’s it…
Now, you can check your widget’s products. It will be displayed as per the given order.