Wenn ich zB 20 Seiten angelegt habe, und zwei davon benutzen Module, die wiederum Bilder einbetten, die ne Lightboxfunktion bekommen sollen, habe ich früher immer im Haupttemplate die Javascriptbefehle eingetippt. Nachteil: Dieser Code erscheint auf jeder Seite. Auch dort, wo er garnicht benötigt wird. Man könnte den Code natürlich in einem udt oder global content block auslagern und im Zieltemplate abrufen aber dann würde der Code im BODY erscheinen was für mich ein NO-GO ist.
Was habe ich also gemacht: ein Template im Gallery Modul angelegt und es "helper" genannt.
1. Das Template ist leer.
2. bei CSS stehen nur die Formatierungen für die Lightbox
3. das Javascript für die Lightbox
Und im Modul (bspw. Products oder Availibilty) kann man dann im Summary oder Detailtemplate einfach {Gallery template="helper"} in die erste Zeile schreiben.
Nun wird mein Javascriptcode nur dann geladen, wenn es auch nur wirklich gebraucht wird. Und an der richtigen Stelle (HEAD).
Ein kleiner aber feiner Trick für mich. Vielleicht nutzt es jemanden was. Danke auch nochmal an Jos für sein tolles Modul
EDIT, hier ein Beispiel für Products Detailtemplate:
{* this is a sample product detail template *}
{Gallery template="helper"}
Code: Select all
{Gallery template="helper"}
<div class="product-item">
<h3>{$entry->product_name}</h3>
{foreach from=$entry->fields key='name' item='field'}
{if isset($field->value)}
{capture assign=imagethumbnail}{$entry->file_location}/{$field->value}{/capture}
<a href="{$entry->file_location}/{$field->value}" rel="lightbox">{supersizer path=$imagethumbnail width=100}</a>
{/if}
{/foreach}
<div class="product-desc">
{$entry->details}
</div>
</div>