Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: ANLEITUNG: filemtime an Bilder in Mail-Templates anhängen

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    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:
    Code: PHP  [Auswählen]
    <?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

    Code: XML  [Auswählen]
    {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:

    Code: XML  [Auswählen]
    <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

    Code: XML  [Auswählen]
            {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

    Code: XML  [Auswählen]
    {$tpl_path}img/DEIN_BILD.jpg

    oder

    Code: XML  [Auswählen]
    {$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

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    Re: ANLEITUNG: filemtime an Bilder in Mail-Templates anhängen
    Antwort #1 am: 08. März 2023, 11:52:26
    Es gibt einen Fehler in meiner Anleitung.
    Für das Logo in der index.html des Templates geht es wie beschrieben:

    Code: XML  [Auswählen]
    <img src="{$tpl_path}img/logo_head.png{append_filemtime path="templates/`$smarty.const.CURRENT_TEMPLATE`/img/logo_head.png"}" alt="{$store_name}" />

    (wobei es auch hier nicht schaden kann den Pfad zu bilden wie unten beschrieben.)

    In den Mail-Templates wird der Pfad für das Lesen der Filemtime jedoch nicht erkannt und da muß es so aussehen:

    Code: XML  [Auswählen]
    <img src="{$logo_path}logo.gif{append_filemtime path="`$smarty.const.DIR_FS_CATALOG`templates/`$smarty.const.CURRENT_TEMPLATE`/img/logo.gif"}" />

    D.h. es muß noch DIR_FS_CATALOG vor templates gesetzt werden.
    Ich hatte die Funktion dummerweise lediglich an der index.html überprüft, nicht jedoch an den Mail-Templates.

    Sorry for that.

    Gruß,
    noRiddle

    [EDIT Tomcraft 08.03.2023: Korrektur in Anleitung aus Beitrag 1 übernommen.]
    5 Antworten
    8311 Aufrufe
    18. März 2010, 12:59:04 von Elmar
    7 Antworten
    5119 Aufrufe
    19. Januar 2011, 13:49:04 von DJ-Ready
    28 Antworten
    14246 Aufrufe
    03. Juli 2009, 15:28:38 von mo66
    5 Antworten
    3886 Aufrufe
    21. September 2009, 18:32:00 von Tomcraft