Zum Inhalt springen

split erzeugt einen leeren ersten Eintrag

Erstellt am 13. Dezember 2012 · 2 Antworten · letzte Antwort am 14. Dezember 2012

Tags: Frage

plaas ·

Hallo Liebe Leute,
Ich erzeuge eine Ausgabe mit split. Die Ausgabe funktioniert wie erwartet, allerdings habe immer ich ein leeres Element zuviel.

lib.meinmarker ist via Templavoila gemappt.

lib.meinmarker = CONTENT
lib.meinmarker {
  table = tt_content
  select {
    pidInList = this
    orderBy = sorting
    languageField = sys_language_uid
    andWhere = hidden=0
    andWhere = deleted=0
  }
  renderObj < tt_content 
  renderObj = COA
  renderObj {

    wrap=___SPLITTER___|
    
    10 = TEXT
    10 {
      field = header
      required = 1
      wrap = <h2>|</h2>
    }
  }
  
  stdWrap.split {
    token=___SPLITTER___
    cObjNum =|*| 1| || 2| || 3| |*| 
    1.current = 1 
    1.wrap = <span style="color:blue;">(1) |</span><br />
    2.current = 1 
    2.wrap = <span style="color:red;">(2) |</span><br />
    3.current = 1 
    3.wrap = <span style="color:yellow;">(3) |</span><br />
  }
}

erzeugt auf einer Seite mit einem Inhalt:

(1)
(2) [Der tt_content Inhalt]

erzeugt auf einer Seite mit vier Inhalten:

(1)
(2) [Der tt_content Inhalt]
(3) [Der tt_content Inhalt]
(1) [Der tt_content Inhalt]
(2) [Der tt_content Inhalt]

Woher kommt der leere erste Eintrag?

Danke Euch!

Chrissli ·

Hallo plaas,

split teil deine Ausgabe anhand deines token, d.h. wenn du mit

 wrap=___SPLITTER___|

das token VOR den jeweiligen Teil setzt, wird das erste Element immer leer sein ( evtl. kennst du ja den PHP-Befehl "explode" der funktioniert analog dazu XD )

versuchs doch mal so:

renderObj {
    # da rumdrehen
    wrap=|___SPLITTER___
 
    10 = TEXT
    10 {
      field = header
      required = 1
      wrap = <h2>|</h2>
    }
  }
 
  stdWrap.split {
    token=___SPLITTER___
    # da jetzt der letzte Teil leer ist behandeln wir diesen Fall auch:
    cObjNum =|*| 1| || 2| || 3| |*| 4
    1.current = 1 
    1.wrap = <span style="color:blue;">(1) |</span>
    2.current = 1 
    2.wrap = <span style="color:red;">(2) |</span>
    3.current = 1 
    3.wrap = <span style="color:yellow;">(3) |</span>
    # einfach den letzten teil nicht wrappen
    4.current = 1
  }