Ломают интерпретатор фигурные скобки. Синтаксис Smarty построен на них.
Есть два варианта решения:
Обновить версию Smarty до последней. Она научилась игнорировать код, который внутри тега <script>.
Обернуть код в {literal} ... {/literal}, что даст Smarty игнорировать этот кусок кода.
P.S.: А вообще, лучше перестать ковыряться в какахах. Two girls - one Smarty. Низкопроизводительный, заброшенный шаблонизатор с расплывчатыми зонами ответственности.
Есть проблема. Если хранить без расширения и без MIME-типа, то могут быть проблемы при копировании файлов с windows на linux и обратно, т.к. некоторые файловые менеджеры могут воспринимать файлы по особому и менять некоторые байты для совместимости между win/lin. И это может выйти боком и файлы станут битыми, если не копировать их бинарным методом.
С этим сталкивались на практике. На linux-сервере было все нормально (php скрипт добавлял header'ы к файлам), скопировали filezill'ой на винду, на ней запустили тот же php скрипт, а файлы (исходные, обрезанные) отличаются в несколько байт (в зависимости от типа файла).
Без реального примера ничего не скажешь. Телепаты на каникулах. Но, если подумать, возможно, обработчик добавления товара в корзину вешается не только на кнопку "Добавить в корзину", но и на другие ссылки. Возможно, тег <a> не закрыт.