smarty-php / smarty

Smarty is a template engine for PHP, facilitating the separation of presentation (HTML/CSS) from application logic.
Other
2.22k stars 701 forks source link

Smarty v5 $smarty.template behavior doesn't match v5 documentation (it now includes a type and directory part) #1010

Open cmanley opened 2 months ago

cmanley commented 2 months ago

Since version Smarty v5, the $smarty.template variable returns the type.path/file name of the current template, despite the documentation claiming that it "Returns the name of the current template being processed (without the directory)". https://smarty-php.github.io/smarty/stable/designers/language-variables/language-variables-smarty/#smartytemplate

For a given template name e.g. components/topmenubar.html This is what I got with v3 and v4: topmenubar.html and this is what I get in 5.10.0: file:components/topmenubar.html

So the behavior doesn't match the documentation.

Background info: I use the full template path and file name to pass to a translation modifier by placing this at the top of each template (|basename is added for v5): [% $template = "`$smarty.current_dir`/`$smarty.template|basename`" scope="root" %] and then translating all template strings for the current template this way: [% 'Log off'|xlat:$template|escape %] If there were an easier way to get the current template path + file from which a modifier is being called, then I'd use that.