Offen Mediendatei - eigenes Attribut im Template ansprechen

rote-locke

Gut bekanntes Mitglied
9. Dezember 2011
303
8
Hallo Forum,

bei Mediendateien kann ich ja z.B. über das Attribut "tab" den individuellen Namen für den Tab festlegen.

Ich möchte nun gerne ein weiteres Attribut "pdflogo" verwenden, über das ich im Tab statt des PDF-Icons ein zum PDF-Dokument passendes Bild einstellen kann. Der Wert dieses Attributes ist einfach der Dateiname des Bildes. Das Attribut findet sich nach dem Webshopabgleich zusammen mit den tab-Beschreibungen korrekterweise in der Tabelle "tmediendateiattribut", aber wie kann ich das jetzt mit Smarty ansprechen? Die tab-Beschreibungen werden in der "artikel_inc.tpl" über "{$cMedienTyp}" ausgegen. Ich müsste das Logo jeweils in der "artikel_mediendatei.tpl" ausgeben.

Ich komme nicht drauf, wie ich die passende Variable für dieses neue Attribut erstellen oder herausfinden kann. Jemand eine Idee oder einen Link zu einer Dokumentation die mir weiterhilft?

Danke!

EDIT:
Mit {$Artikel->FunktionsAttribute.xyz} kann ich eigene Funktionsattribute (xyz) im Artikel ansprechen, das suche ich jetzt quasi für die Attribute der Mediendatei. Nur falls ich mich oben zu umständlich ausgedrückt habe.
 

rote-locke

Gut bekanntes Mitglied
9. Dezember 2011
303
8
AW: Mediendatei - eigenes Attribut im Template ansprechen

JTL hat mir mittlerweile geantwortet, dass die gesuchten Attribute im Array "oMedienDateiAttribut_arr" am MedienDatei-Object hängen und mir empfohlen mittels Smarty-Debug auszulesen was für Variablen verfügbar sind.

Ich habe mir also zunächst angeschaut was für die Funktionsattribute ausgegeben wird, denn die kann ich mir ja ausgeben lassen. Im Popup vom Smarty-Debug sehen die Funktionsattribute so aus:

->FunktionsAttribute = Array (3)
abc=> "1"
def=> "2"
ghi=> "3"

Wenn ich also {$Artikel->FunktionsAttribute.abc} einfüge wird mir 1 ausgegeben, soweit alles klar.

Jetzt habe ich mir angeschaut was ich zu den Attributen der Mediendateien finde:

->oMedienDatei_arr = Array (2)
## hier kommen einige Zeilen, die ich rausgekürzt habe ##
->oMedienDateiAttribut_arr = Array (2)
0 => stdClass Object (5)
->kMedienDateiAttribut = "38"
->kMedienDatei = "3153"
->kSprache = "1"
->cName = "pdflogo"
->cWert = "xyz.jpg"

Ich möchte nun den Wert "xyz.jpg" herausbekommen, die ersten Versuche in Richtung {$Artikel->oMedienDatei_arr.oMedienDateiAttribut_arr.pdflogo} haben keinen Erfolg gebracht. Was wäre der korrekte Ansatz hier weiter zu kommen?
Ich habe versucht mich über Smarty Arrays zu belesen, aber ich glaube ich bin vom Ansatz her schon daneben. Muss ich da nicht zuerst eine Funktion in die functions.php schreiben und ein eigenes Array nur für die Attribute der Mediendateien schreiben?
Also so, dass ich in der Liste der Variablen etwas in dieser Richtung stehen hätte:

->MediendateiAttribute = Array (x)
pdflogo => "yxz.jpg"

Ein Schubs in die richtige Richtung wäre super.
 

tom10

Sehr aktives Mitglied
2. Oktober 2012
715
107
06774 Muldestausee
AW: Mediendatei - eigenes Attribut im Template ansprechen

Ich schubse mal ein bischen
Laut deinem Codeschnipsel ist oMedienDateiAttribut_arr ein indiziertes, also durchnummeriertes, Array das Objekte enthält. Der Pfad zum Erfolg in deinem Beispiel ist ....oMedienDateiAttribut_arr.0->cWert (Ausgabe xyz.jpg). Allerdings solltest du dieses direkte Ansprechen eines indizierten Arrays vermeiden und die Werte in einer Schleife auslesen (Stichwort foreach)
 

rote-locke

Gut bekanntes Mitglied
9. Dezember 2011
303
8
AW: Mediendatei - eigenes Attribut im Template ansprechen

@tom10
Topp Tipp, hatte mir das zwischenzeitlich nochmal genauer angeschaut und bin auch darauf gestoßen, dass es wohl in diese Richtung weitergehen muss. Hatte nur noch keine Zeit mich in die Smarty Arrays einzulesen. Werde mich die Tage weiter schlau machen und diesen Ansatz verfolgen.

Gibt es im Netz eigentlich noch andere empfehlenswerte Dokumentationen zu Smarty ausser smarty.net? Hier habe ich nämlich noch etwas Nachholbedarf.
 

Ähnliche Themen