Zum Inhalt springen

Erstes Inhaltselement einer Seite ausgeben

Erstellt am 4. November 2011 · 5 Antworten · letzte Antwort am 8. November 2011

Tags: Inhaltselemente, Frage

isn_typo3 ·

Hallo.

Ich bitte um Eure Hilfe.
Anforderung:Es soll ein Zitat auf allen Seiten agezeigt werden. Dazu habe ich mehrere Inhaltselemente mit Zitaten auf der Seite mit PID 24, von denen immer nur eines freigeschalten ist. Mit folgendem Code will ich das erste Inhaltselement der Seite ausgeben, was nicht funktioniert, es wird nix angezeigt.

  quote = CONTENT
  quote {
    table = tt_content
    select {
      pidInList = 24
      max = 1
    }
    renderObj = COA
    renderObj.10 = TEXT
    renderObj.10.wrap = |
    }
  }

lg, Dietmar

isn_typo3 ·

Den Ansatz mit den Id's der Contentelemente habe ich zur Zeit eingesetzt. Der ist aber nicht dynamisch, ich müßte ja jetzt schon alle ID's der Inhaltselemente, die die User in Zukunft erfassen, kennen.

Ich möchte also schon den Ansatz verfolgen, mir über die SeitenID (die ja ich über den Seitenbaum vorgebe) das erste (freigeschaltene) Contentelement zu holen.

lg, Dietmar

igorshmigor ·

Dein Ansatz war eigentlich schon richtig.
Was noch zu fehlen scheint, ist die Angabe des Feldes, welches im RenderObj für den Text verwendet werden soll.
Z.B.:

renderObj.10.field=bodytext
Chrissli ·

Du könnstest auch das tt_content-Objekt in das renderObj kopieren.
Dann kannst du via Select-Statement die betreffende Spalte selektieren
und bist so nicht auf ein einzelnes Datenbankfeld beschränkt, sondern
kannst alle sichtbaren Container der Spalte anzeigen und sparst dir
die Zeit alle benötigten Felder selbst zu rendern. Ausser das
wäre für deine Formatierung erforderlich

quote = CONTENT
quote {
  table = tt_content
  select {
    #evtl felder beschraenken
    selectFields = bodytext,title,nav_title 
    pidInList = 24
    #zu benutzende Spalte definieren
    where = colPos = 0
    # mehrsprachigkeit beruecksichtigen
    languageField = sys_language_uid
    max = 1
  }
  renderObj < tt_content  
  renderObj.wrap = <div class="theQuote"></div>
}
isn_typo3 ·

Vielen Dank, das haut hin!

Jetzt werd ich unverschämt ;-)
Ist das zu schaffen, dass aus einer Liste von Contentelementen in der Seite mit PID=24, die alle freigeschalten sind, per rand() eins genommen wird (das macht ja der Code unten), das Ergebnis aber 24h gecached wird, also ein 'Spruch des Tages'?

lg, Dietmar

  quote = CONTENT
  quote {
  table = tt_content
    select {
      pidInList = 24
      # mehrsprachigkeit beruecksichtigen
      languageField = sys_language_uid
      orderBy = rand()
      max = 1
    }
  renderObj < tt_content  
  #renderObj.wrap = <div class="theQuote"></div>
  }