Важно держать компонент на верхнем уровне. Если ваш блок вложенный, например .otherblock .myblock, $this из .myblock вернет полное значение, включая родителя, таким образом этот подход не будет работать правильно
Проблема актуальна для многих. Тут есть несколько вариантов решения этой проблемы:
1) Показывать вёрстку через удалённый рабочий стол (TeamViewer, к примеру)
2) Шифровать весь код разными способами. Ещё можно подключать шифрованный код через iframe
3) Отправлять скриншоты. По желанию можно добавить водяной знак
Если заказчика не устраивает такой вариант, шли его на*уй.
Лучше используй для таких задач JavaScript.
Если лень писать, то используй, к примеру, angry-cart.js. Там всё это можно реализовать. Для обращения к БД можешь использовать потом product_id объекта корзины.