I have just started using Amasty's Promo Items extension to add free items to the cart when certain products are purchased.
The label I wrote telling the shopper why a free item was added appears above the cart listing when the rule is first applied (I have store views available in 2 languages, and it works fine for both).
However, if the user continues to shop and adds more items, next time they see their cart the label isn't displayed. If they missed it the first time, they sometimes get confused about why stuff is appearing in their cart they didn't place there.
I asked Amasty about it, and they told me it is default Magento behavior for Shopping Cart Price Rules (only to display the label when the rule is first applied).
Is there a way to override this behavior and have the label always display above the cart?
Best Answer
I just ran into this with a client recently. I wound up writing a module that creates a new quote item attribute, sets it from an observer, and displays it below the product details in the cart, on the checkout page, in the new order e-mail, and in the admin order/invoice view.
In order to display the custom quote item where I wanted to show it, I call a helper method from whatever template I need to modify. I might turn this into an actual generic module some day, and when I do I'll figure out a better way to display that attribute rather hacking a bunch of templates. Due to time constraints, I had to use the "quick and dirty" method.
Following is the code I used to create, set, and get the attribute, plus a list of the templates I modified:
config.xml
Model/Resource/Setup.php
data-install-1.0.0.php
Observer.php
Helper/Data.php
Modified templates:
Screenshot of the promo item in the cart:
Note: The name of the extension and the screenshot have been redacted to protect the privacy of the client.
I hope the code I provided gets you on your way. Enjoy!