Ergebnis 1 bis 20 von 20

Thema: File Attribut in MetaModels auslesen

  1. #1
    Gesperrt
    Registriert seit
    02.11.2012.
    Beiträge
    52

    Standard File Attribut in MetaModels auslesen

    Hallo Community,

    ich versuche momentan mit MetaModels (Stand 12.02) eine Art "passende Produkte"-Liste auf der Detailseite zu erzeugen.
    Über die "Tags" kann man ja Produkte untereinander Verknüpfen. Soweit so gut.
    Auf der Detailseite wird dann die Relation auch ausgegeben. Die Felder die mir dort zur Verfügung stehen sind alle aus der entsprechenden mm_Tabelle. Also ID, nicht mehrsprachige Felder usw.
    Unter anderen auch ein File-Attribut. Wenn ich das aber auslese kommt nur kauderwelsch wie z.B.ð’*Å’Uã¦='ߥ
    Das Feld ist in der Datenbank als BLOB deklariert.

    Jetzt meine eigentlich Frage; wie schaffe ich es daraus eine Bild zu bekommen?

    Oder kennt jemand eine andere Methode auf der Produktdetailseite so etwas wie passende Produkte anzuzeigen?

    Danke schon einmal für alle Antworten!

  2. #2
    Alter Contao-Hase Avatar von Messa
    Registriert seit
    19.01.2011.
    Ort
    Vorarlberg, Österreich
    Beiträge
    1.423

    Standard

    Das gleiche Problem hatte ich gestern auch.
    Zauberwort bintoUuid.

    deinarray ersetzen durch das richtige array

    PHP-Code:
    <?php $bild $arrItem['deinarray']['bild'];  
    $bildpfad Contao\String::binToUuid($bild); ?> 
     
    <img src="{{file::<?php echo $bildpfad?>}}" alt=" " title=" ">

    Oder du lässt statt dem bin code gleich nur den Pfad über MM ausgeben.
    Wenn du beim FE Render bei Ausgabeformat keines wählst solltest du dann über

    PHP-Code:
    <?php echo $arrItem['text']['bild']; ?>
    zugreifen können


    lg Matthias
    Geändert von Messa (17.02.2014 um 20:08 Uhr)
    Full Service Agentur - Grafikdesign, Screendesign, Webdesign, Webentwicklung, SEO, Weiterbildung, persönliches Coaching
    http://www.matthiasgmeiner.com

  3. #3
    Gesperrt
    Registriert seit
    02.11.2012.
    Beiträge
    52

    Standard THEMA ERLEDIGT

    Gelesen, getestet und für gut befunden

    Kleine Ergänzung noch:
    HTML-Code:
    <img src="{{file::<?php echo $bildpfad; ?>}} alt=" " title=" ">
    sollte heißen:
    HTML-Code:
    <img src="{{file::<?php echo $bildpfad; ?>}}" alt=" " title=" ">
    Super, dass die Antwort so schnell kam!!!

    Grüße

  4. #4
    Gesperrt
    Registriert seit
    02.11.2012.
    Beiträge
    52

    Standard

    Eine Frage scheint momentan aber noch ungelöst.
    Wenn ich versuche ein generateImage aus dem Bildpfad zu erzeugen erscheint einfach ein default-Bild.

    ergänzend zum obrigen Code lautet mein Testcode wie folgt
    PHP-Code:
        $bildpfad Contao\String::binToUuid($data['files_attribut_zum_einzelbild']);
        
    $pfad $this->replaceInsertTags('{{file::'.$bildpfad.'}}');
        echo 
    $pfad;
        echo 
    $this->generateImage($this->getImage($pfad,300,300,'center center'),'test'); 

    Die Ausgabe zeigt dann folgendes im Code:
    HTML-Code:
    files/pfad/zum/bild.jpg
    <img src="system/themes/default/images/" alt="test">
    Greift dort eine Funktion irgendwie zu spät oder weshalb kann generateImage das Bild nicht verarbeiten?
    Die Bildgröße hatte ich auch schon variiert, daran kann es also schon einmal nicht liegen.

    Grüße!

  5. #5
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Zitat Zitat von qf_rigo Beitrag anzeigen
    PHP-Code:
    $pfad $this->replaceInsertTags('{{file::'.$bildpfad.'}}'); 
    Die Zeile rauswerfen, dann müsste es auch mit generateImage gehen.

  6. #6
    Gesperrt
    Registriert seit
    02.11.2012.
    Beiträge
    52

    Standard

    Guten Morgen andreasisaak,

    die zwei Zeilen habe ich nachträglich zum Testen eingefügt um zu sehen ob überhaupt ein Pfad ausgegeben wird.
    Wenn ich $bildpfad direkt in das Generate eintrage kommt einfach genau das selbe -> ein default

    $bildpfad gibt mir einen Buchstaben-Zahlen-String aus. In etwa so: f3fbc421-9255-11e3-a63d-080027dfa50e
    Deswegen brauche ich das replaceInsertTags file::
    Denn daraus wird dann der korrekte Pfad erzeugt. Das ganze spielt sich momentan direkt im Template ab falls das weiterhilft.

    Mein Code nach deinem Vorschlag:
    PHP-Code:
    $bildpfad Contao\String::binToUuid($data['files_attribut_zum_einzelbild']);
    echo 
    $this->generateImage($this->getImage($bildpfad,300,300,'center center'),'test'); 
    Erzeugt:
    HTML-Code:
    <img src="system/themes/default/images/" alt="test">

  7. #7
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Wieso musst du generell generateImage nehmen? Kommt das Bild aus einem MetaModel direkt oder via Select/Tag?

  8. #8
    Alter Contao-Hase Avatar von Messa
    Registriert seit
    19.01.2011.
    Ort
    Vorarlberg, Österreich
    Beiträge
    1.423

    Standard

    Was kommt raus wenn du $bildpfad ausgibst in einem echo?

    lg Matthias
    Full Service Agentur - Grafikdesign, Screendesign, Webdesign, Webentwicklung, SEO, Weiterbildung, persönliches Coaching
    http://www.matthiasgmeiner.com

  9. #9
    Gesperrt
    Registriert seit
    02.11.2012.
    Beiträge
    52

    Standard

    @andreasisaak
    Ich möchte das Thema nicht verkomplizieren. Es geht um das attr_tags Template.
    Es sollen also verwandte Produkte in der Detailansicht erscheinen und die sollen wiederrum auf ihre Detailansicht verlinken.
    Dazu brauche ich "Link zum jeweiligen Produkt", "Produktbild", "Produkttitel"
    Und das alles natürlich mehrsprachig. Alles was mir das Standard attr_tags Template ausgibt sind die Namen der Relationen.

    @Messa
    Zitat Zitat von qf_rigo Beitrag anzeigen
    $bildpfad gibt mir einen Buchstaben-Zahlen-String aus. In etwa so: f3fbc421-9255-11e3-a63d-080027dfa50e

  10. #10
    Alter Contao-Hase Avatar von Messa
    Registriert seit
    19.01.2011.
    Ort
    Vorarlberg, Österreich
    Beiträge
    1.423

    Standard

    Du hast ja.

    PHP-Code:
    echo $this->generateImage($this->getImage($bildpfad,300,300,'center center'),'test'); 
    Wenn $bildpfad = f3fbc421-9255-11e3-a63d-080027dfa50e ist das falsch.
    Du brauchst einen Pfad.

    PHP-Code:
    $strReturn $this->generateImage($this->getImage('tl_files/images/foobar.jpg'300250'proportional'), 'my first image'); 
    http://de.contaowiki.org/Arbeiten_mit_Bildern

    Eventuell geht's so. Wenn du "file::" hinzufügst. (ungetestet!)
    PHP-Code:
    echo $this->generateImage($this->getImage({{file::$bildpfad}},300,300,'center center'),'test'); 

    lg
    Full Service Agentur - Grafikdesign, Screendesign, Webdesign, Webentwicklung, SEO, Weiterbildung, persönliches Coaching
    http://www.matthiasgmeiner.com

  11. #11
    Gesperrt
    Registriert seit
    02.11.2012.
    Beiträge
    52

    Standard

    Ja genau deswegen hatte ich auch weiter oben meinen Anfangscode gepostet

    PHP-Code:
        $bildpfad Contao\String::binToUuid($data['files_attribut_zum_einzelbild']); 
        
    $pfad $this->replaceInsertTags('{{file::'.$bildpfad.'}}'); 
        echo 
    $pfad
        echo 
    $this->generateImage($this->getImage($pfad,300,300,'center center'),'test'); 
    durch das $this->replaceInsertTags wird aus dem String ($bildpfad) ein brauchbarer Bildpfad ($pfad). Aber anscheinend klappt das innerhalb der Funktionen nicht. Obwohl $pfad genau das ausgibt was die Funktion braucht files/pfad/zum/bild.jpg

    auch abgekürzt wird keine Bild erzeugt:
    PHP-Code:
        echo $this->generateImage($this->getImage($this->replaceInsertTags('{{file::'.$bildpfad.'}}'),300,300,'center center'),'test'); 
    Geändert von qf_rigo (18.02.2014 um 09:52 Uhr)

  12. #12
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Du kannst auch das {{image::}} Inserttag nutzen. Dort kannst Du auch alle möglichen Parameter mitgeben. Machst bissel kürzer:

    http://de.contaowiki.org/Insert-Tags
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  13. #13
    Alter Contao-Hase Avatar von Messa
    Registriert seit
    19.01.2011.
    Ort
    Vorarlberg, Österreich
    Beiträge
    1.423

    Standard

    Wieso brauchst du $this->replaceInsertTags habe ohne das auch den Pfad ausgeben.

    PHP-Code:
       $bildpfad = Contao\String::binToUuid($data['files_attribut_zum_einzelbild']);  
        $pfad = {{file::<?php echo $bildpfad?>}};  
        echo $pfad;  
        echo $this->generateImage($this->getImage($pfad,300,300,'center center'),'test');
    Full Service Agentur - Grafikdesign, Screendesign, Webdesign, Webentwicklung, SEO, Weiterbildung, persönliches Coaching
    http://www.matthiasgmeiner.com

  14. #14
    Gesperrt
    Registriert seit
    02.11.2012.
    Beiträge
    52

    Standard

    Immernoch liefert auch
    PHP-Code:
        echo $this->generateImage($this->getImage($this->replaceInsertTags('{{image::'.$bildpfad.'?width=200&height=150}}'),300,300,'center center'),'test'); 
    ein leeres Bild
    HTML-Code:
    <img src="system/themes/default/images/" alt="test">

  15. #15
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    So sieht der inserttag aus:

    PHP-Code:
    echo $this->replaceInsertTags('{{image::'.$bildpfad.'?width=300&height=300&crop=center_center}}'); 
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  16. #16
    Gesperrt
    Registriert seit
    02.11.2012.
    Beiträge
    52

    Standard

    Zitat Zitat von Messa Beitrag anzeigen
    Wieso brauchst du $this->replaceInsertTags habe ohne das auch den Pfad ausgeben.

    PHP-Code:
       $bildpfad = Contao\String::binToUuid($data['files_attribut_zum_einzelbild']);  
        $pfad = {{file::<?php echo $bildpfad?>}};  
        echo $pfad;  
        echo $this->generateImage($this->getImage($pfad,300,300,'center center'),'test');

    Das funktioniert innerhalb von PHP nicht mit den InsertTags ohne das replace.
    {{file:: ist ja keine PHP-Funktion und führt zu Fehlern.

    Wenn man es außerhalb von PHP so schreibt klappt es natürlich weil Contao den Code erkennt aber so beißen sich Contao und PHP. Das Replace ist also ein MUSS in dem Fall.

  17. #17
    Gesperrt
    Registriert seit
    02.11.2012.
    Beiträge
    52

    Standard

    Langsam fühl ich mich schon als Spamer aber hier kurz die Zusammenfassung

    HTML-Code:
    <img src="{{file::<?php echo $bildpfad; ?>}}" alt=" " title=" ">
    Funktioniert ohne Frage perfekt.

    Nur innerhalb von generateImage, also direkt im PHP-Skript leider nicht.
    Keine Ahnung ob es an dem Contao\String::binToUuid liegen kann.
    Geändert von qf_rigo (18.02.2014 um 10:07 Uhr)

  18. #18
    Gesperrt
    Registriert seit
    02.11.2012.
    Beiträge
    52

    Standard

    Zitat Zitat von Tim G Beitrag anzeigen
    So sieht der inserttag aus:

    PHP-Code:
    echo $this->replaceInsertTags('{{image::'.$bildpfad.'?width=300&height=300&crop=center_center}}'); 

    Ach ja klar, stimmt!
    So gehts!

    DANKE!!!!

    Hier der komplette Code:
    PHP-Code:
    $bildpfad Contao\String::binToUuid($data['file_attribut_vom_einzelbild']);
    echo 
    $this->replaceInsertTags('{{image::'.$bildpfad.'?width=200&height=150}}'); 
    Geändert von qf_rigo (18.02.2014 um 10:08 Uhr)

  19. #19
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Dein $bildpfad sollte schon, wie erwähnt vorher durch Contao\String::binToUuid aufgelöst werden. (wenn die Contao Version > 3.2 ist)
    Damit hilfst du dem image Insertag.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  20. #20
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Ich verstehe immer noch nicht ganz wieso ihr überhaupt ein Inserttag nutzt. Die generateImage Methode ist doch 1:1 dasselbe und spart dir zusätzlich den doppelten Parser.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •