Zum Inhalt springen

renderObj von verschiedenen Inhalten "tt_content" und "Shortcut"

Erstellt am 16. September 2010 · 7 Antworten · letzte Antwort am 22. September 2012

Tags: Frage

frabovmeier ·

Hallo,

ich möchte an den Subparts-Marker INFOBOXES den Inhalt der Randspalte ausgeben.

  subparts.INFOBOXES = COA
  subparts.INFOBOXES.10 = CONTENT
  subparts.INFOBOXES.10 {
    table = tt_content
    slide = -1
    slide {
        collect = -1
        collectReverse = 0
    }
    select {
      pidInList = this
      orderBy = sorting
      where = colPos = 3
      languageField = sys_language_uid      
    }
  }

Da ich aber dringend auch die Inhalte von referenzierten Inhalten, also vom Inhaltstyp "Shortcut" brauche, wende ich zusätzlich einmal renderObj.CASE an:

  subparts.INFOBOXES = COA
  subparts.INFOBOXES.10 = CONTENT
  subparts.INFOBOXES.10 {
    table = tt_content
    slide = -1
    slide {
        collect = -1
        collectReverse = 0
    }
    select {
      pidInList = this
      orderBy = sorting
      where = colPos = 3
      languageField = sys_language_uid      
    }
    renderObj = CASE    
    // Wenn Typ "Shortcut"
    renderObj.key.field = CType
    renderObj.shortcut = COA
    renderObj.shortcut {
      10 = RECORDS
      10 {
        source.field = records
        tables = tt_content,tt_news          
      }
    }
  }

Jetzt bekomm ich alle Inhalte aus der Randspalte, auch von Inhalten die über Shortcut referenziert werden, angezeigt.

Jetzt möchte ich aber die Inhalte und die Inhalte aus den Shortcuts mit renderObj.CASE sauber formatiert ausgeben.

In etwas so:

    renderObj.key.field = CType   
    renderObj.text < tt_content.text
    renderObj.text {
      stdWrap.required = 1
      stdWrap.wrap = <div class="box">|</div>
      // Überschrift
      10 = TEXT
      10 {
        field = header
        wrap = <h1>|</h1>
      }    
      // Text
      20 = COA
      20 {
        wrap = <div class="news-list-item">|</div>
        10 = TEXT
        10 {
          field = bodytext
          parseFunc =< lib.parseFunc_RTE                
          required = 1
          wrap = <div class="news-list-content">|</div>
        }
      }
    }

Das funktioniert für die normalen Inhalte auch super, nur auf die Inhalte vom Typ "Shortcut" kann ich das nicht anwenden.

Wie kann ich das sauber lösen???

Kann man nicht die Inhalte und die Inhalte der Shortcuts in eine temp.variable abspeichern, und dann sauber mit renderObj ausgeben???

Versteht ihr mich?

Um es auf den Punkt zu bringen. Ich möchte die Inhalte von tt_contents und der Shortcuts in einer Variable quasi verschmelzen, und aus dieser die Inhalte sauber rendern!

Bitte um Hilfe, Danke!

Folgendes TS zeigt mein aktuellen Stand. Hier werden normale Inhalte formatiert ausgegeben, nur die Inhalte vom Typ "Shortcut" bleiben unformatiert.

  subparts.INFOBOXES = COA
  subparts.INFOBOXES.10 = CONTENT
  subparts.INFOBOXES.10 {
    table = tt_content
    slide = -1
    slide {
        collect = -1
        collectReverse = 0
    }
    select {
      pidInList = this
      orderBy = sorting
      where = colPos = 3
      languageField = sys_language_uid      
    }
    renderObj = CASE
     
    ###[ SHORTCUT ]###
    renderObj.key.field = CType
    renderObj.shortcut = COA
    renderObj.shortcut {
      10 = RECORDS
      10 {
        source.field = records
        tables = tt_content,tt_news
        stdWrap.required = 1
        stdWrap.wrap = <div class="box">|</div>
        ###################################################
        # Diese Ergebnisse sollen auch formatiert werden,
        # wie die Inhalte (unten) von tt_content
        ###################################################
      }
    }   
    
    ###[ NUR TEXT ]###
    renderObj.key.field = CType   
    renderObj.text < tt_content.text
    renderObj.text {
      stdWrap.required = 1
      stdWrap.wrap = <div class="box">|</div>
      // Überschrift
      10 = TEXT
      10 {
        field = header
        wrap = <h1>|</h1>
      }    
      // Text
      20 = COA
      20 {
        wrap = <div class="news-list-item">|</div>
        10 = TEXT
        10 {
          field = bodytext
          parseFunc =< lib.parseFunc_RTE                
          required = 1
          wrap = <div class="news-list-content">|</div>
        }
      }
    }    

    ###[ TEXT MIT BILD ]###
    renderObj.key.field = CType    
    renderObj.textpic < tt_content.textpic    
    renderObj.textpic {
      stdWrap.required = 1
      stdWrap.wrap = <div class="box">|</div>
      // Überschrift
      10 = TEXT
      10 {
        field = header
        wrap = <h1>|</h1>
      }    
      // Bild
      20 = IMAGE
      20 {
        required = 1
        wrap = <div class="news-list-image">|</div>
        file.import = uploads/pics/
        file.import.field = image  
        file.maxW = 180
        imageLinkWrap = 1
        imageLinkWrap {
          enable.field = image_link
          typolink.parameter.field = image_link
        }
      }
      // Text
      30 = COA
      30 {
        wrap = <div class="news-list-item">|</div>
        10 = TEXT
        10 {
          field = bodytext
          parseFunc =< lib.parseFunc_RTE                
          required = 1
          wrap = <div class="news-list-content">|</div>
        }
      }
    }

    ###[ NUR BILDER ]###
    renderObj.key.field = CType   
    renderObj.image < tt_content.image
    renderObj.image {
      stdWrap.required = 1
      stdWrap.wrap = <div class="box">|</div>
      // Überschrift
      10 = TEXT
      10 {
        field = header
        wrap = <h1>|</h1>
      }    
      // Bild
      20 = IMAGE
      20 {
        required = 1
        wrap = <div class="news-list-image">|</div>
        file.import = uploads/pics/
        file.import.field = image  
        #file.import.listNum = 0
        file.import.current = 1
        file.maxW = 180        
        imageLinkWrap = 1
        imageLinkWrap {
          enable.field = image_link
          typolink.parameter.field = image_link
        }        
      }
    }
       
  }
mendes ·

Hallo frabovmeier,

frabovmeier schrieb

Hat keiner eine Idee wie ich die Inhalte und deren referenzierte Inhalte rendern kann?

Wie ist die Sache denn ausgegangen? Ich stehe vor dem gleichen Problem.

Grüße
mendes

Zwirni ·

Bei mir klappt der Tipp von dem Link leider nicht. Hab folgendes Script:

10 = RECORDS
10 {
	source.field = records
	tables = tt_content
	conf.tt_content = CASE
	conf.tt_content {
		key.field = CType
		html < tt_content.html
		html.wrap = <div class="teaser">|</div>
		default = TEXT
		default.value = Text
		default.wrap = <div class="teaser">|</div>
	}
}

Es wird immer "Text" ausgegeben, statt dem Inhalt eines Content-Elements vom Inhaltstyp html.

Sieht jemand meinen Schreibfehler?

Chrissli ·

Versuch doch mal das HMTL-rendering selbst zu übernehmen ( siehe Object Browser )
Alles in allem wird ja nur das bodytext-Feld unformatiert eingebunden.
Vielleicht funktioniert das ja.

Ansonsten prüf' mal was in der DB im CType-Feld des Eintrags steht, den du abrufen willst.
Vielleicht hast du was falsch verknüpft oder es ist was anderes krumm gelaufen.

Zwirni ·

Ja, der CType-Eintrag war falsch. Ich hatte 2 Text-Inhaltstypen, dachte aber einer wäre html .. Code ist also korrekt und sollte so auch von anderen verwendet werden können 🙂