У меня была похожая проблема: код
onmouseover="action({$keyid},'{$label}');"
вызывало ошибки JavaScript, когда $ label содержал кавычки. Я решил использовать команду Smarty escape: 'quotes'. Обратите внимание, что в этом случае | один только escape не решился бы, потому что вместо замены 'на \' он бы заменил 'на & # 039;
Поэтому я отредактировал свой код так:
onmouseover="action({$keyid},'{$label|escape:'quotes'}');"
и это работает!
Надеюсь, это кому-нибудь пригодится ...