Note
Are you using Studio + Tile Editor? Our no-code tile editor supports this out of the box. You can create a specific component for the Suggestions plugin that contains any field you want.
In Tweakwise JS, Suggestions have limited customization options.
Customizing the display of product suggestions, can be achieved through event hooks:
<script>
window.addEventListener("DOMContentLoaded", function () {
window.tweakwiseSuggestions({
// ...
on: {
'twn.request.products.success': function () {
console.log('request for fetching product suggestions succeeded');
},
},
});
});
</script>
Example
Adding a product_number
to the product suggestions:
<script>
function updateTwProductSuggestion(item) {
// Find value to add to the suggestion
const productNumber = item.attributes.find((a) => a.name === 'product_number').values[0];
// Target Product Suggestion
const el = document.body.querySelector(
`a.twn-product-suggestion[data-item-id="${item.itemno}"]`
);
// Get the details container
const container = el?.querySelector('.twn-product-suggestion__details');
// create html string with necessary data to add
const details = 'Productnumber: <em>' + productNumber + '</em>';
// Check whether this element already exists so we don't duplicate them on further search
let existingElement = container?.querySelector('.tw-product-number');
if (!existingElement) {
existingElement = document.createElement('div');
existingElement.className = 'tw-product-number';
container?.append(existingElement);
}
existingElement.innerHTML = details;
}
window.addEventListener("DOMContentLoaded", function () {
window.tweakwiseSuggestions({
// ...
"twn.request.products.success": function (event) {
var hasItems = event && Array.isArray(event.items) && event.items.length > 0;
if (!hasItems) {
return;
}
// use setTimeout to delay execution, because request can be
// finished before the container is opened and search elements
// may not be rendered yet
setTimeout(() => {
event.items.forEach((item) => {
updateTwProductSuggestion(item);
})
}, 0)
}
});
});
</script>
Need more control?
Consider integrating Suggestions using API.