Zum Inhalt springen

zufälliges Select

Erstellt am 18. Januar 2009 · 6 Antworten · letzte Antwort am 15. Juli 2009

Tags: Frage

FrankT ·

Hallo,

in der rechten Spalte möchte ich eine zufällige Auswahl von Glossareinträgen zeigen.

Leider kann ich immer nur einen Eintrag dort anzeigen, den ich vorher auch noch bestimmen muss.

seite.10.marks.RIGHT.20 {
	ltext = {DB : tx_a21glossary_main : 2 : short}
	insertData = 1
	ltext.substring = 0,1
	value < .ltext
	typolink {
		parameter = 20
		additionalParams = &tx_a21glossaryadvancedoutput_pi1[char]={DB : tx_a21glossary_main : 2 : short}
		section = glossar{DB : tx_a21glossary_main : 2 : uid}
		additionalParams.insertData = 1
	}
}

Hier wird immer nur der Eintrag mit der uid 2 angezeigt.
Wie kann ich es ändern, dass zufällig immer etwa 7 Begriffe angezeigt werden, die natürlich auch nicht doppelt vorkommen sollten?

Gruß
FrankT

freshman17 ·

Am besten mit einer eigenen Funktion. Zufällige Inhalte kannst aber auch mit der PHP-Funktion rand() erzeugen, vielleicht reicht diese deinen Anforderungen?

Beispiel:

#547394

FrankT ·

Danke freshman17,

so einfach kann es sein:

seite.10.marks.RIGHT.20 = CONTENT
seite.10.marks.RIGHT.20 {
  table = tx_a21glossary_main
  select {
     pidInList = 58
     orderBy = RAND()
     where = deleted=0
     selectFields=uid,short
     max=7
  }
  renderObj = COA_INT
  renderObj {
    10 = TEXT
    10 {
      field = short
      wrap=|<br>
      typolink.parameter=20
      typolink.additionalParams.field = short
      typolink.additionalParams.wrap = &tx_a21glossaryadvancedoutput_pi1[char]=|
      typolink.additionalParams.crop = 1
      typolink.useCacheHash = 1
      typolink.section.field = uid
      typolink.section.wrap = glossar|
    }
  }
}
FrankT ·

Oje,

es gibt doch noch ein Problem.

Ich nutze im Glossar den Pagebrowser.
Wird nun ein Eintrag angeklickt, der nicht auf der ersten Seite ist, dann funktioniert es nicht, weil automatisch nur die erste Seite angezeigt wird.

Hat da noch jemand eine Idee?

Zudem sind die zufälligen Einträge nicht mehr sortiert.
Kann man das renderObj irgendwie sortieren?

Gruß
Frank

Michaelh74 ·

Also ich würde das Ganze über ne eigene kleine Extension. Ist sicher kein großer Akt und wesentlich flexibler als die TS Geschichte.

Gruß
Michael

FrankT ·

Hallo Michael,

für das Pagebrowser-Problem hatte ich die Extension schon angepasst.

Für das Sortier-Problem dachte ich auch schon an eine neue Extension, wollte aber diese Nuss mit TypoScript lösen, falls es geht.

Vielleicht kennt ja noch jemand eine Lösung.

Danke
Frank

FrankT ·

Hallo,

mir ist noch eine Idee gekommen.
Um die zufälligen Einträge zu sortieren, dachte ich mir, dass ich eine ID-Liste aus dem gezeigten SELECT erzeuge.
Beispiel: 0,3,45,6,12,23,9

Damit kann ich einen zweiten SELECT erzeugen, bei dem nur die IDs abgerufen werden mit orderBy = short

Wie kann ich also eine Variable erzeugen und immer wieder ein Komma mit einer Zahl anhängen?

Gruß
FrankT