<div style='display:{if $smarty.post.xxx}block{else}none{/if};'></div> <input type="hidden" name="xxx" value="0">(где "за скобками" осталась JS-обвязка, меняющая состояние input-а)
позволяет используя $smarty.post не заморачиваться в PHP-коде с приемом и передачей обратно POST-переменных
Т.е. если div был показан, то и при перезагрузке страницы он будет показан. Ну и наоборот.
Но вот если таких xxx надо несколько, да еще и с привязкой к каким-нибудь смарти-переменным типа $optionID, то начинаются непонятки.
На сервер оно передается практически точно так же:
<input type="hidden" name="xxx[{$optionID}]" value="0">а вот как выловить его обратно через $smarty.post я так и не понял.
Т.е. если $optionID, скажем, равно пяти, то $smarty.post.xxx[5] дает правильное значение.
Но если попытаться получить $smarty.post.xxx[$optionID], то облом.
Аналогично и с $smarty.post.xxx[optionID].