What files need to be changed to display additional attributes in recently view products widget?
In the widget settings there is only name, price, image and learn_more available.
For the product attribute name i've spotted the file
vendor/magento/module-catalog/view/frontend/ui_component/widget_recently_viewed.xml:
<column name="name" component="Magento_Catalog/js/product/name" sortOrder="1" displayArea="details-area">
<settings>
<label translate="true">Name</label>
<bodyTmpl>Magento_Catalog/product/name</bodyTmpl>
</settings>
</column>
and vendor/magento/module-catalog/view/base/web/template/product/name.html:
<strong if="isAllowed()"
class="product-item-name">
<a attr="href: $row().url" html="$col.getLabel($row())"/>
</strong>
I'm really confused about the $col.getLabel($row())
, is there any documentation out there that covers this functionality?
What files needs to be changed for adding delivery_time
or sku
to the widget and where to put them?
Any help would appreciated
Best Answer
I managed to figure this out (albeit using reviews as a source of inspiration). This has been tested and is working on Magento 2.3.3
Namespace/Module/etc/di.xml
Namespace/Module/etc/extension_attributes.xml
Namespace/Module/etc/widget.xml
Namespace/Module/Ui/DataProvider/Product/Listing/Collector/Sku.php
Namespace/Module/view/frontend/ui_component/widget_recently_viewed.xml
Namespace/Module/view/frontend/web/js/product/sku.js
Namespace/Module/view/frontend/web/template/product/sku.html
One thing you'll need to bear in mind is that recently viewed stores data in browser storage when an item is viewed - it won't update the data that is already there with your new attributes. So when testing please remember to clear your browser storage! (Speaking from experience, this tripped me up for quite a while)
EDIT: Show how to render both label and value in the .html file