"Smarty"-Wunsch

@Shopware AG Ich hätte da einen kleinen Smarty-Wunsch: Änderung des Namens der kompilierten Template-Datei. Aus langjähriger Erfahrung weiß ich, dass man hin und wieder auch mal eine kompilierte Template-Datei debuggen muss, um zu sehen, warum das nicht so spielt, wie es soll… Ist prinzipiell kein Problem, außer dass der Name der kompilierten Template-Datei so konstruiert ist, dass man die richtige Template-Datei kaum finden kann, weil deren Name am Ende des Namens der kompilierten Template-Datei steht. Beispiel: [quote]templates_orange_de_DE^0b6b560d2581b5525438570fdd8b0ee5d6035ef8.extends.[color=#FF0000]index.tpl[/color].php[/quote] Und bei den Zillionen Template-Dateien, die da entstehen, ist das dann äußerst mühsam, eine Datei zu finden. Die Namenskonstruktion geschieht im Smarty-Plugin “smarty_internal_resource_extends.php” in "[b]public function getCompiledFilepath(\_template)[/b]" mit [code]return _compile_dir . \_filepath . '.' . _template->resource_type . ‘.’ . basename(\_files[count(_files)-1]) . \_cache . '.php';[/code] Wenn man das nun ersetzt mit [code]return _compile_dir . basename(\_files[count(_files)-1]). ‘.’ . \_template-\>resource\_type . '.' . _filepath . $_cache . ‘.php’;[/code] erhält man Namen der Form [quote][color=#FF0000]index.tpl[/color].extends.templates_orange_de_DE^6484fee794471cb46330c7abcd0d483403cc56c5.php[/quote] und findet die richtige Template-Datei auf Anhieb… [color=#FF0000]Wäre gaaanz toll, wenn ihr das so ändern könntet[/color] (Smarty ist das ja völlig egal…) :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: Die Funktion “public function getCompiledFilepath” gibt es auch noch in anderen Plugins für andere Dateien: [quote]engine\Enlight\Vendor\Smarty\libs\sysplugins\smarty_internal_config.php(130) engine\Enlight\Vendor\Smarty\libs\sysplugins\smarty_internal_resource_eval.php(83) engine\Enlight\Vendor\Smarty\libs\sysplugins\smarty_internal_resource_file.php(96) engine\Enlight\Vendor\Smarty\libs\sysplugins\smarty_internal_resource_php.php(93) engine\Enlight\Vendor\Smarty\libs\sysplugins\smarty_internal_resource_registered.php(104) engine\Enlight\Vendor\Smarty\libs\sysplugins\smarty_internal_resource_stream.php(92) engine\Enlight\Vendor\Smarty\libs\sysplugins\smarty_internal_resource_string.php(101) engine\Enlight\Vendor\Smarty\libs\sysplugins\smarty_internal_template.php(202) [/quote] Es wäre natürlich optimal, wenn man die darin konstruierten Dateinamen alle besser lesbar machen könnte, aber im erstgenannten Plugin löst das schon mal das größte Problem… Ich hatte das während der Smarty 3-Entwicklung im Smarty-Forum schon mal vorgeschlagen, und es wurde auch rückgemeldet, dass man das so machen würde, aber irgendwie kam das dann doch anders… :cry:

Hi avenger , das ist eine super Idee. Shopware hat schon einige Anpassungen an Smarty vorgenommen und viele dieser Sachen wurden auch schon in Smarty aufgenommen (siehe RC3, RC4 und 3.0). Ich denke dafür ist aber keine Anpassung notwendig. Das kann auch über eine Einstellung erledigt werden. Der Teil [quote] [color=red]templates_orange_de_DE[/color]^0b6b560d2581b5525438570fdd8b0ee5d6035ef8.extends.index.tpl.php[/quote] ist die CompileID, die je Template eingestellt werden kann. Diese kann also um den Template-Namen erweitert werden und der ganze Pfad steht dann im Namen. [quote] [color=red]templates_orange_de_DE_frontend_index_index.tpl[/color]^0b6b560d2581b5525438570fdd8b0ee5d6035ef8.extends.index.tpl.php[/quote] Mit dem nächten Patch wird vermutlich die Smarty-Version in Shopware sowieso aktualisiert. Dann kann ich diese Anpassung gleich mit vornehmen. :wink: Viele Grüße Heiner

[quote=„rocky“] Der Teil [quote] [color=red]templates_orange_de_DE[/color]^0b6b560d2581b5525438570fdd8b0ee5d6035ef8.extends.index.tpl.php[/quote] ist die CompileID, die je Template eingestellt werden kann. Diese kann also um den Template-Namen erweitert werden und der ganze Pfad steht dann im Namen. [quote] [color=red]templates_orange_de_DE_frontend_index_index.tpl[/color]^0b6b560d2581b5525438570fdd8b0ee5d6035ef8.extends.index.tpl.php[/quote][/quote] Hallo rocky, schön, dass ihr das auch so seht… Allerdings würde ich doch vorschlagen, bei meinem Namenskonzept zu bleiben. Zum einen muss man sonst wieder zu viel visuellen Müll ausblenden, um an die gewünschte Information zu gelangen. Zweitens (und wichtiger): in den Entwicklungsumgebungen hat man i.d.R. ja nur einen schmalen Bereich zur Verfügung, um Verzeichniss-Inhalte anzuzeigen, und der visuelle Müll am Anfang hat dann zur Folge, dass man da immer horizontal scrollen muss, um den Resourcen-Namen zu sehen. [color=#FF0000]Und wenn dann noch „public $allow_php_tag = true;“ standardmäßig gesetzt wird (um den „{php}“-Tag im Template verwenden zu können), dann ist mein Glück (fast) vollkommen…[/color] Hast Du mal 'nen Tipp für mich, wie ich aus Shopware die aktive „Locale“ erfahren kann (nicht die Locale-Id (die bekomme ich schon), sondern den Namen („de_DE“)), dafür habe ich noch keine Methode gefunden…

Hi, die Locale kannst du im Frontend-Template so auslesen: {$Locale} bzw. {$Locale->toString()} siehe: http://framework.zend.com/manual/de/zen … .setlocale Dein Namenskonzept ist aber auch noch nicht ganz perfekt. Es gibt in Shopware verschiedene (je Controller eine) index.tpl-Dateien. Daher sollte zumindest der Controller und vielleicht auch das Modul angegeben werden. Viele Grüße Heiner