Hier mal eine Lösung mit welcher jedem Standard-Bild in den Mail-Templates aus dem Shop die Filemtime angehängt wird.
Dadurch wird der Cache nicht so belastet wie mit der Lösung
?t={$smarty.now} und auch deshalb nicht, weil man die Bilder wohl eher selten ändert .
Ein PHP-File in dem Pfad der im Kopf des Codes angegeben ist mit diesem Inhalt anlegen:
<?php/*******************************************
* file: function.append_filemtime.php
* path: /templates/YOUR_TEMPLATE/smarty/
*
* © copyright, noRiddle, 02-2023
____
| | | | |
__ ___ |____/ ° ___| ___| | ___
|/ | | | | \ | | | | | | |___|
| n |___o | R i |___d |__ d l |__e
*******************************************/function smarty_function_append_filemtime
($params, $smarty) { $filemtime_str = ''; $path = isset($params['path']) && is_file($params['path']) ?
$params['path'] : ''; if($path != '') { $filemtime_str .= '?t='.filemtime($path); } return $filemtime_str;}?> In den Mail-Templates im Template (
/mail/SPRACHE/ und
/admin/mail/SPRACHE/ kann das so verwendet werden:
(am Beispiel
/templates/YOUR_TEMPLATE/mail/german/contact_us.html)
An
{$logo_path}logo.gif das anhängen
{append_filemtime path="`$smarty.const.DIR_FS_CATALOG`templates/`$smarty.const.CURRENT_TEMPLATE`/img/logo.gif"}
sieht also dann für den gesamten img-tag so aus:
<img src="{$logo_path}logo.gif{append_filemtime path="`$smarty.const.DIR_FS_CATALOG`templates/`$smarty.const.CURRENT_TEMPLATE`/img/logo.gif"}" />
Dabei aufpassen, daß das Bild korrekt benannt ist.
In z.B.
~/downloads.html sähe es dann so aus
{if $dl_data.allowed}
<a href="{$dl_data.pic_link}"><img src="{$tpl_path}img/img_download.png{append_filemtime path="`$smarty.const.DIR_FS_CATALOG`templates/`$smarty.const.CURRENT_TEMPLATE`/img/img_download.png"}" alt="" border="0" /></a>
{else}
<a href="{$dl_data.pic_link}"><img src="{$tpl_path}img/img_download_locked.png{append_filemtime path="`$smarty.const.DIR_FS_CATALOG`templates/`$smarty.const.CURRENT_TEMPLATE`/img/img_download_locked.png"}" alt="" border="0" /></a>
{/if}
Damit dürfte in den Mails immer das aktuellste Bild angezeigt werden.
Für frei in die Mail-Templates eingebaute Bilder funktioniert das nur dann wenn diese ebenfalls im Standard-Pfad abgelegt und auch so in der Datei aufgerufen werden.
D.h. Bilder liegen in
/templates/YOUR_TEMPLATE/img/ und werden eingebunden mittels
{$tpl_path}img/DEIN_BILD.jpg
oder
{$logo_path}DEIN_BILD.jpg
Die Dateiendungen sind natürlich besipielhaft.
Man kann das Verfahren auch auf das Logo in der
index.html des Templates anwenden.
Gruß,
noRiddle
[
EDIT Tomcraft 08.03.2023: Fehler in Anleitung
korrigiert.]
Linkback: https://www.modified-shop.org/forum/index.php?topic=42790.0