Zum Inhalt springen

Bilder Komma getrennt in Marker per OptionSplit und oder Join anzeigen

Erstellt am 30. Juni 2010 · 1 Antwort · letzte Antwort am 4. Juli 2010

Tags: Bilder, Frage

Robman ·

Hallo liebe Typo3 Gemeinde!

Hier eine kurze Schilderung der bestehenden Struktur für den "tt_products" Shop:

1. Zusätzliche Tabelle "tt_products_distributor" wurde installiert (Basis von Roland aka DJ.Picasso). Dort kann man zu jedem Produkt MEHRERE Hersteller eintragen.

2. Die neue Tabelle (tt_products_distributor) habe ich erweitert um die Spalte "image_distributor", in der nun zu jedem Hersteller MEHRERE Bilder gespeichert werden können.

3. Dann habe ich dem "Produkt 1" (Tabelle "tt_products", neue Spalte "distributor" ) zwei Hersteller zugeodnet, die jeweils zwei Bilder haben.

4. Gespeichert werden die Hersteller im Feld "distributor", Tabelle "tt_products" in Form von "1,2". Also mittels "uid" der Hersteller durch KOMMA getrennt / separiert.

5. Danach babe ich einen Marker angelegt "plugin.tt_products.marks.herstellerinfo" der nun zum "Produkt 1" alle Bilder der zugeordneten Hersteller ausgeben soll.

5.1. Die Ausgabe der Bilder funktioniert nur bedingt / komisch ...

Hier mein Ansatz für die Lösung des Problems mittels "outerWrap / split" (optionSplit):
Quelle: http://www.typo3wizard.com/de/artikel/das-content-objekt.html

I. Tabelle "tt_products" und "tt_products_distributor" im "join" zusammenlegen, um die Daten für die Zuordnung zu erhalen.

# CONTENT Objekt erstellen
temp.contentToSplit >
temp.contentToSplit = CONTENT
temp.contentToSplit {
	table = tt_products_distributor
	select {
		pidInList = 10
		join = tt_products ON (tt_products.distributor = tt_products_distributor.uid)
		andWhere {
			data = GPvar:tt_products|product
      wrap = tt_products.uid = |
    }
		selectFields = tt_products_distributor.image_distributor, tt_products_distributor.uid, tt_products.distributor
	}
  renderObj = COA
  renderObj {
    # An jedes ausgelesene Elemen am Ende ###SPLITTER### anhängen
    stdWrap.outerWrap = |,
		10 = TEXT
    10.field = distributor
    10.wrap = |
		20 = TEXT
    20.field = image_distributor
    20.wrap = |
  }
}

temp.content = COA
temp.content {
  # Den ausgelesenen Inhalt hierhin kopieren
	10 < temp.contentToSplit
  stdWrap.split {
    # mit hilfe der split funktion ###SPLITTER### ersetzen.
    token = ,
    # die Reihenfolge im gewohnen optionSplit Stiel festlegen
    cObjNum = 1 || 2 || 3 |*| 4 || 5 |*| 6 || 7
    # Definieren wie genau an welcher position "gewrapt" wird
    1.current = 1
    1.wrap = <div style="clear:both;width:100px;">#1 |</div>
    2.current = 1
    2.wrap = <div style="clear:both;width:100px;">#2 |</div>
    3.current = 1
    3.wrap = <div style="clear:both;width:100px;">#3 |</div>
    4.current = 1
    4.wrap = <div style="clear:both;width:100px;">#4 |</div>
    5.current = 1
    5.wrap = <div style="clear:both;width:100px;">#5 |</div>
		6.current = 1
    6.wrap = <div style="clear:both;width:100px;">#6 |</div>
        # letzten splitter leer lassen, da ist ja dann nichtsmehr
    7.current = 1
  }
}

plugin.tt_products.marks.herstellerinfo < temp.content

II. Bei dieser Variante erhalte ich folgende Ausgabe:

Zeile 1: 2
Zeile 2: 1Hersteller_2_Bild_1.jpg
Zeile 3: Hersteller_2_Bild_2.jpg

III. Erläuterung.

Zeile 1: hat Wert aus "tt_products" -> Spalte "distributor". (2 = Hersteller uid)

Zeile 2: hat Wert aus "tt_products" -> Spalte "distributor" und "tt_products_distributor" -> Spalte "distributor_image". (1 = Hersteller uid + Bild 1 zur Hersteller uid 2)

Zeile 3: hat Wert aus "tt_products_distributor" -> Spalte "distributor_image". (Bild 2 zur Hersteller uid 2)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Wie anfangs erwähnt, würde ich gerne zu jedem Produkt (mit einem oder mehreren Herstellern), die Bilder (eines oder mehrere) der Hersteller in diesem Marker ausgeben lassen.
Ich weis nicht, ob die Variante mittels optionSplit so elegant ist, evtl. gibt es bessere Möglichkeiten, aber mir fällt im Moment nix besseres ein. Ich bin für alle Vorschläge offen.

Mit freundlichem Gruß,
Robman

Robman ·

Ich habe hier mal einen "Sonstigen" thread aufgemacht, da ich denke das es an der Syntax der select where oder andWhere liegt:

#99749

Gruß, Robman