Das $galerie hier ...:
{php}
global $galerie;
echo '<pre>';
var_dump($galerie);
echo '</pre>';
{/php}
kommt wieder ganz viel. Irgenwo hab ich ["galerie_liste"]=> array(56) { [0]=> array(25) { ["gal_id"]=> string(2) "66" gefunden.
... entpspricht anscheinend nicht diesem galerie hier:
{foreach item=galerie from=$galerie_liste}
Du hast den {php} Block schon innerhalb der foreach Schleife platziert?
Vermutlich führt Smarty als erstes den PHP-Code im {php} Block aus, unabhängig von irgendwelchen Schleifen und Bedingungen im Template. An das jeweilige gal_id kommst du so wohl nicht ran, weil bei PHP-Code schon vor dem Schleifendurchlauf ausgeführt wurde
Die einzige Möglichkeit, die ich dann noch sehe:
Falls in der Schleife nur dein PHP-Code ausgeführt werden soll, d.h. keine sonstigen Template-Ausgabe, könntest du die Schleife vielleicht in den {php} Block verlegen, d.h. anstelle der Template-Schleife außerhalb des {php} Blocks eine PHP-Schleife innerhalb des {php} Blocks verwenden.