is_file in smarty

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • is_file in smarty

    Hallo,

    wie kann mit Smarty überprüfen ob ein File existiert? is_file gibt es ja in Smarty nicht. Ich weiß das smarty nur für die Ausgabe zuständig ist, aber vielleicht gibt es ja ein hintertürchen.

    Möchte eine Grafik ausgeben, deren Pfad von Template zu Template wechselt. Diese Grafik muss aber nicht immer existent sein und da ich das unschöne Kreuz für die fehlende Grafik vermeiden will, wäre eine solche Abfrage in Smarty von Vorteil.

    Besten Dank!

    Gruß Björn
    » http://www.htaccess-generator.com

  • #2
    Du kannst in Smarty-Templates direkt PHP-Code einbauen:
    PHP-Code:
    {php}
       if (
    file_exists('/path/to/image.ext')) {
         echo 
    '<img src="http://..../image.ext">';
       }
    {/
    php
    Oder du vergewaltigst eine der eingebauten Funktionen:
    PHP-Code:
    {fetch file="http://...image.ext" assign="image"}
    {if 
    $image ne ""}
      <
    img src="http://...image.ext">
    {/if} 
    Alternativ zum fetch via HTTP kannst du auch den lokalen Pfad angeben und so den Webserver etwas entlasten.
    Selbes Prinzip: capture.
    Geht auch: include_php (ist aber deprecated), u.v.m.

    Kommentar


    • #3
      also die php variante wäre mir eigentlich am liebsten. allerdings muss ich ja mit variablen von smarty arbeiten und diese kann ich doch wiederum in smarty-php nicht einlesen. zumindest habe ich es eben ausprobiert und es funktionierte nicht. bleibt mir noch ne möglichkeit die php lösung zu verwenden oder muss doch die smarty funktion vergewaltigen?

      für den bildnamen in der if-schleife wird eine smarty-variable verwendet.
      » http://www.htaccess-generator.com

      Kommentar


      • #4
        Original geschrieben von onemorenerd
        Du kannst in Smarty-Templates direkt PHP-Code einbauen:
        OffTopic:
        An der Stelle würde ich mich aber doch fragen, wozu ich dann eigentlich noch eine Template Engine nutze ...
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Code:
          {if my_file_exists($image)}
          <img />
          {else}
          Kein Bild
          {/if}
          PHP-Code:
          function my_file_exists($image) {
            return 
          rand(01);

          Wobei, wenn du den Bildnamen in einer Smarty-Variable stehen hast, hast du ja in deinem Skript ein entsprechendes $smarty->assign, oder?
          Wie wär's, wenn du noch eine weitere Smarty-Variable anlegst?
          PHP-Code:
          $smarty->assign('image_Exists'file_exists($image)); 
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            danke für eure hilfe... ich habe nun alles mal ausprobiert. die eigene funktion über smarty-php aufzurufen funktionierte nicht. leider habe ich den quellcode nicht mehr, da ich danach die fetch lösung ausprobiert habe und dummerweise den alten quellcode gelöscht habe. bei der fetch lösung kann ich das array in {fetch} nicht einlesen...

            PHP-Code:
            {fetch file="http://www.bilder.testdomain.de/farben/{$variationen.farbnum[$key]}.gif" assign="image"}
            {if 
            $image ne ""}
                {
            $image}<br>
                
            yes
            {else}
                
            no
            {/if} 
            habe es bereits ohne { und jetzt mit probiert. ich weiß einfach nicht wo der fehler liegt. die datei auf dem server wird nicht gefunden, obwohl diese vorhanden ist. wenn ich das array in smarty mit {$variationen.farbnum[$key]} in der fetch-schleife ausgebe, erscheint der gewünschte dateiname. allerdings funktioniert das in dem fetch-tag für das bild nicht mehr. ich denke mal das ich das array falsch aufrufe...

            danke für eure hilfe.
            » http://www.htaccess-generator.com

            Kommentar

            Lädt...
            X