Jamás he usado Smarty pero apuesto a que (2) lo estás usando mal.
Lo digo por una cosa muy básica: tu sintaxis.
Código PHP:
Ver original// MAL
$smarty -> assign("$menu_sesion_si", $menu_sesion_si);
// BIEN
$smarty -> assign("menu_sesion_si", $menu_sesion_si);
En tu código usas "$menu_sesion_si" como si ese fuera el nombre de la variable pero jamás funcionará, porque las comillas dobles
¡evalúan el contenido de la variable!
Eso ya lo deberías dominar, es manejo simple de variables y comillas, etc.