So rufen mit TypoScript in TYPO3 zufällige Datensätze ab

Die Anzeige von zufälligen Datensätzen in TYPO3 kann das Engagement der Nutzer erheblich steigern, indem bei jedem Laden einer Seite neue, dynamische Inhalte angeboten werden. Egal, ob es sich um rotierende Testimonials, aktuelle Nachrichten oder Blogbeiträge handelt, das Abrufen von zufälligen Datensätzen sorgt dafür, dass Ihre Website nicht statisch oder repetitiv wirkt.

TYPO3s leistungsstarke TypoScript-Konfigurationssprache ermöglicht es Entwicklern, diese zufälligen Inhaltselemente mit minimalem Aufwand abzurufen und darzustellen - ohne auf umfangreiche Backend-Logik oder Erweiterungen angewiesen zu sein.

In diesem Tutorial lernen Sie, wie man mit TypoScript in TYPO3 Datensätze abruft und zufällig anordnet - eine leistungsstarke Methode, um dynamische und ansprechende Inhaltsdarstellungen zu erstellen.

3 einfache Möglichkeiten, zufällige TYPO3-Datensätze mit TypoScript abzurufen

Grundlagen des Abrufs von Datensätzen mit TypoScript 
Lernen Sie, wie TypoScript Daten direkt aus Ihrer TYPO3-Datenbank abruft und wie Sie es so konfigurieren, dass es bestimmte Arten von Datensätzen abruft (z.B. aus tt_content, Seiten, benutzerdefinierten Tabellen usw.).

Randomisierung von Datensätzen in TYPO3 
Entdecken Sie die Techniken zur Anzeige von zufälligen Datensätzen bei jedem Seitenaufruf mit Hilfe von TypoScripts eingebauten Fähigkeiten, einschließlich Sortiermethoden und orderBy-Klauseln.

Reale Anwendungen und Beispiele 
Entdecken Sie gängige Szenarien, in denen zufällige Inhalte einen Mehrwert bieten, wie z.B. das Anzeigen von Testimonials, das Rotieren von Blog-Beiträgen, das Hervorheben von Produkten oder das Anzeigen von Zitaten - und das auf eine visuell ansprechende und performancefreundliche Weise.

Schritt-für-Schritt-Anleitung: Zufällige Datensätze in TYPO3 mit TypoScript abrufen

Schritt 1: Grundlegende Struktur von TypoScript

TYPO3 verwendet TypoScript zunächst als Konfigurationssprache, um die Darstellung von Inhalten auf dem Frontend zu steuern. Eines der mächtigsten Werkzeuge in TypoScript ist das CONTENT-Objekt, mit dem Sie Datensätze aus beliebigen Datenbanktabellen abrufen und anzeigen können.

Was ist das CONTENT-Objekt?

Das CONTENT-Objekt in TypoScript fungiert als Datenabrufer. Es holt Datensätze aus einer bestimmten Tabelle und stellt sie mithilfe eines definierten renderObj dar. Dies ist besonders nützlich, wenn Sie Inhalte wie News-Artikel, Produkte oder Blog-Posts dynamisch anzeigen möchten.

Schritt 2: TypoScript-Codebeispiel

lib.randomRecords = CONTENT
lib.randomRecords {
   table = tt_content
   select {
        selectFields = uid, header, bodytext, RAND() as random_value
        orderBy = random_value
        max = 3 # Limit the number of random records
   }
   renderObj = FLUIDTEMPLATE
   renderObj {
       file = fileadmin/RandomRecords.html
       dataProcessing {
           10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
           10 {
               references.fieldName = bodytext
           }
       }
   }
}

Schlüsseln Sie jeden Teil des obigen TypoScripts klar auf:

  • CONTENT-Objekt
  • Auswahl der Datenbanktabelle(tt_content)
  • Zufallsgenerierung von Datensätzen(RAND() als random_value)
  • Begrenzung der Datensätze(max = 3)
  • Rendering mit FLUIDTEMPLATE

Schritt 3: Fluid Template erstellen (RandomRecords.html)

Nachdem Sie TypoScript so konfiguriert haben, dass es zufällige Datensätze abruft, besteht der nächste Schritt darin, diese Datensätze mit einem Fluid-Template anzuzeigen. Fluid ist die Template-Engine von TYPO3, die es Ihnen ermöglicht, Logik und Präsentation sauber und effizient zu trennen.

 10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
           10 {
               references.fieldName = bodytext
           }
       }
   }
}

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers">
  <f:for each="{data}" as="record">
    <div class="random-record">
      <h3>{record.header}</h3>
      <div>{record.bodytext}</div>
    </div>
  </f:for>
</html>

Erläuterung

  • <f:for each="{data}" as="record">
    DieserViewHelper durchläuft das Array von Datensätzen, die an das Template übergeben wurden (normalerweise von TypoScript oder einem Controller), und ordnet jeden einzelnen der Variablen record zu.
  • {record.header} und {record.bodytext}
    Diessind Platzhalter für Fluid-Variablen. Sie zeigen die Werte der Felder "header" und "bodytext" aus jedem Datenbankdatensatz an.
  • <div class="random-record">...</div>
    EinWrapper, den Sie mit CSS für Layout und Design gestalten können.

Bonusschritte!

Caching sinnvoll nutzen! Um sicherzustellen, dass neue zufällige Inhalte häufig angezeigt werden, passen Sie die TYPO3-Cache-Einstellungen für Seiten, die zufällige Datensätze anzeigen, entsprechend an.

Best Practices für den Abruf zufälliger Datensätze in TYPO3

Wenn Sie TypoScript verwenden, um zufällige Datensätze anzuzeigen, können Sie die folgenden Best Practices befolgen, um die Performance, Lesbarkeit und Skalierbarkeit Ihrer TYPO3-Website zu erhalten.

1. Datenbanklast begrenzen

Vermeiden Sie es, zu viele Datensätze nach dem Zufallsprinzip abzurufen, insbesondere auf Seiten mit hohem Besucheraufkommen.

Verwenden Sie die Eigenschaft max in TypoScript, um die Anzahl der Ergebnisse zu begrenzen:

select {
  max = 3
}

2. Sparsam mit orderBy = RAND() optimieren 
RAND() ist leistungsstark, kann aber bei großen Datensätzen ressourcenintensiv werden.

Verwenden Sie es nur bei Bedarf und vorzugsweise bei indizierten oder kleinen Datenbeständen.

Bei größeren Tabellen sollten Sie die Daten vorsortieren oder eine Erweiterung verwenden, um die Randomisierungslogik über PHP oder einen Scheduler zu handhaben.

3. verwenden Sie Datenprozessoren für fortgeschrittene Anwendungsfälle

Wenn Sie mit Bildern, Links oder benutzerdefinierten Feldern arbeiten, nutzen Sie das dataProcessing von TYPO3 im FLUIDTEMPLATE:

dataProcessing {
  10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
  10 {
    table = tx_yourextension_domain_model_item
    pidInList = 123
    orderBy = rand()
    as = randomItems
  }
}

Häufige Fehler und Tipps zur Fehlerbehebung

1. Vergessen von orderBy = rand() 
Ein sehr häufiger Fehler beim Versuch, zufällige Datensätze abzurufen, ist das Weglassen dieser Schlüsselzeile. Ohne diese Zeile werden die Datensätze in der Standardreihenfolge abgerufen (z. B. Sortierung oder UID).

Korrektur:
  Stellen Sie sicher, dass Sie:
orderBy = rand()

2. Falsche Tabellen oder Feldauswahl
Die Verwendung eines falschen Tabellennamens (z. B. fehlendes Präfix wie tx_) oder der Zugriff auf nicht vorhandene Felder führt zu einer leeren oder fehlerhaften Ausgabe.

Abhilfe:

  • Überprüfen Sie den Tabellennamen(tt_content, 
    tx_news_domain_model_news, etc.).

  • Verwenden Sie die TYPO3Backend oder ExtensionDokumentation, um die verfügbaren Felder zu überprüfen.

3. Falsche PID Einstellung
Wenn pidInList nicht korrekt definiert ist oder auf die falsche Seiten-ID verweist, werden keine Datensätze gefunden.

So beheben Sie das Problem:

  • Stellen Sie sicher, dass die Inhaltselemente tatsächlich auf der angegebenen Seite vorhanden sind, und setzen Sie:

select.pidInList = [Seiten-UID]

4. Fehlende Debugging Tools
TypoScript ohne geeignete Werkzeuge zu debuggen, kann sehr viel Zeit kosten.

So beheben Sie das Problem:

  • Nutzen Sie das Admin Panel > TypoScript Object Browser, um die Renderlogik zu überprüfen.

  • Aktivieren Sie im Admin Panel den Debug-Modus, um Details zur Laufzeitdarstellung zu sehen.

  • Verwenden Sie <f:debug>{data}</f:debug> in Fluid, um Ausgabewerte zu überprüfen.

Schlussfolgerung

Das Abrufen von zufälligen Datensätzen mit TypoScript in TYPO3 ist eine leistungsstarke und dennoch leichtgewichtige Lösung, um dynamische, ansprechende Inhalte zu liefern, ohne dass benutzerdefinierte Erweiterungen oder komplexe Logik erforderlich sind. Egal, ob Sie rotierende Testimonials präsentieren, besondere Nachrichten hervorheben oder eine Mischung aus zufälligen Blogbeiträgen anzeigen, dieser Ansatz verbessert sowohl die UX als auch die SEO, indem er Ihre Inhalte frisch und abwechslungsreich hält.

Post a Comment

×

    Got answer to the question you were looking for?