[Old UI] How to use Cross Sell with Back In Stock app for sold out/out-of-stock notifications
Want to use email notifications for when cross sells are out-of-stock? Then this article is for you (NOTE: if you're not familiar with html & javascript, get in touch or pass this on to your development team).
Requirements:
- installation of the BackInStock app: https://apps.shopify.com/back-in-stock
Steps:
1) Create a custom override file for Cross Sell. You can use this one (it has the code already): https://raw.githubusercontent.com/cross-sell/diy-themes/master/extras/backInStock-integration.liquid but be aware that it uses our Slick theme CSS styling.
2) We will now follow some similar steps from BackInStock's integration article but with some minor variations: https://help.backinstock.org/article/103-add-a-back-in-stock-button-to-the-collection-page
Add the following code before our output variable xsellLib.xselloutput:
<span style="font-size: 18px;"> function escapeHtml(unsafe) { return unsafe .replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } var xs_atc =' <form method="post" action="/cart/add"> <input type="hidden" name="id" value="'+xsproductdata.variants[0].id +'"> <input type="submit" value="Add to Cart" class="btn"> </form>'; var parsed = escapeHtml(JSON.stringify(xsproductdata)); if(!xsproductdata.available){ xs_atc = '<button class="BIS_trigger ProductItem__BISButton Button Button--secondary" data-product-data="'+parsed+'">SOLD OUT</button>'; }</span>
Instead of using this liquid tag: {{ product | json | escape }} we are using some custom JS to stringify our cross sell product object, and then using a custom escape function to avoid errors with special characters.
3) Add this line of code for the Add To Cart button
+ xs_atc
AFTER this line of code (our price output variable):
+ xspriceoutput
Your file should now look something like this:
4) Test. Test. Test. We suggest working on a duplicate theme and NOT YOUR LIVE THEME.