Zum Inhalt springen
Marketing Factory Digital GmbH
Kontakt
Logo Marketing Factory Digital GmbH
  • Agentur
    • Aktuelles
    • Über uns
    • Geschichte
  • Leistungen
    • Beratung, Analyse und Strategie
    • Programmierung und Entwicklung
      • Schnittstellen
      • PIM-/ERP-Anbindungen
      • Individualentwicklungen
      • Seamless CMS Integration
    • Hosting und Betreuung
      • Betrieb auf unserer Colocation-Hardware
      • Cloud-Strategien
    • Leistungen mit Dritten
  • Technologie
    • TYPO3
      • Aktuelle TYPO3-Versionen
    • Shopware
    • IT-Sicherheit
      • DDoS-Protection
      • Continuous Upgrading
      • Privacy First
    • Tech Stack
      • Bekenntnis zu Open Source
      • Technologieauswahl
      • PHP-Ökosystem
      • Containerisierung & Clustering
      • Content Delivery Networks
      • Suchtechnologien
  • Referenzen
    • Projekte
    • Kunden
      • Kundenliste
    • Screenshot der Homepage der neuen Maxion Wheels WebsiteNEU: Relaunch der Corporate Website von Maxion Wheels
  • Community
    • Community-Initiativen
  • Blog
  • Kontakt
  • Deutsch
  • English

Sie sind here:

  1. Blog
  2. Fehler der Vergangenheit: Wie wir Gridelements systematisch ersetzen
  • Development
  • TYPO3
28.02.2022

Fehler der Vergangenheit: Wie wir Gridelements systematisch ersetzen


Dies ist der erste Teil einer kleinen Blogreihe, in der wir Euch unseren Wechsel von Gridelements zu Containern und passgenauen Inhalts­elementen näherbringen möchten.

Es geht uns ausdrücklich nicht darum, eine lang bewährte Extension schlechtzureden, sondern darum, aus vergangenen Fehlern bei deren Verwendung zu lernen.

Zu Beginn schauen wir daher selbstkritisch auf vergangene Arbeitsweisen zurück, bevor wir unser aktuelles Konzept vorstellen.

Einleitung

Eine Website besteht bekannter­maßen aus verschiedensten Inhalten: Texten, Bildern, interaktiven Elementen. Der TYPO3-Core stellt dazu einige Inhalts­elemente bereit, etwa das variabel einsetzbare Element “Text & Medien”.

Für oft angefragte Module wie ein Accordion oder ein Slider/Carousel kann man eigene Inhalts­elemente erstellen.

Wie haben wir es früher gemacht …

Einige TYPO3-Projekte existieren schon weit länger als das heute liebgewonnene Fluid-Templating. Zu Zeiten von css_styled_content wurde das Frontend-Rendering noch per TypoScript konfiguriert.

Für einige Inhalte haben wir schon immer eigene CTypes definiert, die auf den speziellen Einsatzzweck zugeschnitten wurden. Andere Elemente haben wir mit Layouts oder Frame-Klassen erweitert.

Auch die Gridelements-Extension hat uns viele Jahre treue Dienste geleistet. Dessen Feature-Liste ist lang; neben der Erstellung mehrspaltiger Container haben wir Gridelements aber auch zur Konfiguration spezieller Inhaltselemente verwendet. Und da begannen die Probleme.

Zeige größere Version von: Illustration
Illustration: Ein Gridelement-Accordion. Links die Pflege im TYPO3-Backend, rechts die Ausgabe im Frontend

… und was lief dabei nicht optimal

Über TypoScript lässt sich definieren, dass Inhaltselemente innerhalb eines Gridelements im Frontend ein abweichendes Rendering erhalten. Aus einer Gruppe von “Text & Bild”-Elementen wurde dann – je nach Eltern-Gridelement – ein Accordion oder aber eine Gruppe von Tabs (Registerkarten).

Die gewünschte Gestaltung kann auf diese Weise erzielt werden. Aber es bedeutet auch: dasselbe Inhalts­element sorgt je nach Position im Layout für eine komplett andere Ausgabe. Dieses Verhalten ist für Redakteure nicht gerade intuitiv.

Uns Entwicklern beschert das Templating per TypoScript auch nicht gerade ein Hochgefühl. Möchte ich noch auf mehrfach verschachtelte Elemente und Flexform-Settings eingehen? Hm, lieber nicht.

Der Schritt weg von Gridelements

An unserer damaligen Interpretation von Gridelements trifft die Extension natürlich keine Schuld. Es scheint damals allerdings gängige Praxis gewesen zu sein; davon zeugen zumindest Projekte, die wir übernommen haben.
Mit neuen technischen Möglichkeiten haben wir immer auch unsere Arbeitsweise angepasst. Und inzwischen ist für uns der Zeitpunkt gekommen, Gridelements (aus verschiedenen Gründen) durch andere Lösungen zu ersetzen.

Eine dieser Lösungen ist die Verwendung der Container-Extension. Aber sie ist für uns nur ein kleines Puzzleteil.

Wie entwickeln wir Inhaltselemente heute?

Kundenspezifische Elemente erstellen wir so nah am TYPO3-Core wie möglich. Das erleichtert spätere Upgrades; außerdem sind die Arbeitsschritte so schon jedem Entwickler vertraut.

a) Inhaltselemente

  • Frame-Klassen oder eigene TCA-Felder nutzen wir für Einstellungen mit geringen Auswirkungen auf das Layout, z. B. eine Hintergrundfarbe.
  • Zur Umsetzung eines speziellen Renderings definieren wir Custom Content Elements, etwa für ein Keyvisual.
  • Wenn mehrere strukturell ähnliche Elemente gruppiert ausgegeben werden, greifen wir auf Inline-Elemente (IRRE) zurück. Typische Beispiele dafür sind Cards oder das mehrfach erwähnte Accordion.
  • Sofern sich das Bootstrap Package für das Projekt eignet, erhalten wir dadurch bereits einige gängige Inhaltselemente.

b) Seitenstruktur

  • Mit Backend-Layouts definieren wir ein- und mehrspaltige Seitenlayouts.
  • Falls wir variable mehrspaltige Layouts benötigen, greifen wir auf EXT:container zurück.
  • Mit EXT:content_defender beschränken wir die Nutzung von Inhaltselementen sowohl in Backend-Layouts als auch in Container-Elementen.
Zeige größere Version von: Screenshot
Ein zweispaltiger Container mit zwei Kind-Elementen: links ein Text-Element, rechts ein Accordion.
Zeige größere Version von: Screenshot einer Card Group
Card Group aus dem Bootstrap Package, Umsetzung als Inline-Elemente.

Was sind Container für uns?

Bei der Verwendung von Container-Elementen ziehen wir klare Grenzen:

  1. Primär ermöglichen sie ein mehrspaltige Aufteilung von Inhaltselementen verschiedenen Typs.
  2. Bei Bedarf können sie auch verwendet werden, um mehrere Inhaltselemente zu gruppieren und z. B. mit einer Hintergrund­farbe zu versehen.
    Falls die Inhalts­struktur dieser Gruppe aber in der Praxis immer ähnlich ist, empfiehlt sich auch hier eher ein Custom Content Element.

Ein Card-Layout wird mit Containern nicht umgesetzt – dafür eignen sich IRRE-Elemente besser. Container sollten auch nie das Rendering ihrer Kindelemente (grundlegend) beeinflussen.

Zeige größere Version von: TYPO3-Backendfelder
Das Tropfen-Symbol zeigt die gewählte Hintergrundfarbe.
Zeige größere Version von: TYPO3-Backendfelder
Die große Icon-Liste verdeutlicht die Bildausrichtung innerhalb eines Rahmens fester Größe.

Zusammengefasst

Jedes neue Inhalts­element besitzt einen klaren Einsatz­zweck und nur die Auswahl­felder, die wirklich benötigt werden. Details im TCA können die Pflege benutzer­freundlicher gestalten, etwa durch die Ergänzung von Icons.

Strukturen werden über Backend-Layouts definiert und ggf. mittels Container-Elementen variabler gestaltet.

Alle Elemente behalten immer ein nachvollziehbares Verhalten für den Redakteur: ein Text-Element wird nicht plötzlich zum Teaser, nur weil es an anderer Stelle positioniert wurde.

Im nächsten Teil geht es um eine Bestands­aufnahme des Projekts und notwendige Planungen.

Sebastian Klein

Steht irgendwo zwischen Front- und Backend. Mit einem Faible für Usability und Dokumentation. Immer auf der Suche nach Good Practices.

Weitere Beiträge dieses Autors

Blog als RSS-Feed abonnieren

Alle Teile der Blogreihe

  1. Fehler der Vergangenheit: Wie wir Gridelements systematisch ersetzen
  2. Planung ist die halbe Migration: Was beim Gridelements-Wechsel zu beachten ist
  3. Container-Elemente sinnvoll erweitern
  4. Hilf mir, TYPO3 Upgrade Wizard! Gridelements-Datensätze sauber migrieren.

Wir freuen uns, wenn Ihr diesen Beitrag teilt.


Kommentare

waldo

20.10.2023, 13:37 Uhr

Dass es mit Gridelements in der Entwicklung nicht immer optimal war ist klar.
Aber sich jetzt statt auf eine, auf zwei Extensions zu stützen ist m.E. auch nicht optimal, oder ?

Antworten

Sebastian Klein

20.10.2023, 13:58 Uhr

Hallo Waldo. Aus unserer Sicht sind "container" und "content_defender" zwei schlanke Extensions, die jeweils genau eine Aufgabe erfüllen – und dies zuverlässig sowie nah an der Arbeitsweise des aktuellen TYPO3-Core umsetzen. Neue, kompatible Versionen sind meist zeitnah nach Release der neuen LTS-Version verfügbar. Und falls irgendwann der schlimmste Fall eintreten sollte – eine der Extensions wird nicht mehr vom bisherigen Entwickler weiterbetreut –, erleichtert uns eben dieser schlanke Ansatz es uns, diese Extension selbständig an die nächste TYPO3-Version anzupassen.

Antworten

Miloni salot

05.09.2023, 14:06 Uhr

The depth of your explanations and the practical examples made it so much easier to understand.

Your attention to detail is impressive, and I'm excited to check out your other TYPO3-related articles. we've also written a detailed guide on this topic. you can find blog at https://t3planet.com/blog/migrate-typo3-gridelement-to-container/ .

Antworten

Kommentar verfassen.

Ich bin darauf hingewiesen worden, dass die Verarbeitung meiner Daten auf freiwilliger Basis erfolgt und dass ich mein Einverständnis ohne für mich nachteilige Folgen verweigern bzw. jederzeit gegenüber der Marketing Factory Digital GmbH per Post (Marienstraße 14, D-40212 Düsseldorf) oder E-Mail (info@marketing-factory.de) widerrufen kann.

Mir ist bekannt, dass die oben angegebenen Daten so lange gespeichert werden, wie ich die Kontaktaufnahme durch Marketing Factory wünsche. Nach meinem Widerruf werden meine Daten gelöscht. Eine weitergehende Speicherung kann im Einzelfall erfolgen, wenn dies gesetzlich vorgeschrieben ist.

  • Datenschutzerklärung
  • Impressum

© Marketing Factory Digital GmbH

Bildnachweise
  1. "Illustration Gridelement-Accordion": © Sebastian Klein / Marketing Factory Digital GmbH
  2. "Screenshot Zweispaltiger Container": © Sebastian Klein / Marketing Factory Digital GmbH
  3. "Bootstrap Card Group": www.bootstrap-package.com
  4. "Backend: Tropfen-Symbol": © Sebastian Klein / Marketing Factory Digital GmbH
  5. "Backend: Icon-Liste": © Sebastian Klein / Marketing Factory Digital GmbH
  6. "Beitragsbild Gridelements-Fehler": © Sebastian Klein / Marketing Factory Digital GmbH