Tutorials

Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.

Zurück zur Übersicht

TYPO3 Fluid: Viewhelper für Überschriften mit H-Tag in Gridelements

#Tutorials#TYPO3

Ich beschäftige mich gerade mit Fluid und Gridelements und der neuen TYPO 6.2 Version und wollte das Überschriften-Feld benutzen, aber inklusive dem Styling. Da ich nichts finden konnte, ob das von sich aus geht, habe ich kurzerhand einen Viewhelper geschrieben.


<?php
class Testviewhelper_ViewHelpers_HeadlineViewHelper  extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper{	
	public function initializeArguments(){
		$this->registerArgument( 'header', 'mixed', '');
		$this->registerArgument( 'layout', 'mixed', '');
	}
	
	public function render() {
		$header = $this->arguments['header'];
		$layout = $this->arguments['layout'];
		if(!$layout || $layout == 0) $layout = 1;
		
		$headline = ($layout != 100 && $header != '') ? '<h'.$layout.'>'.$header.'</h'.$layout.'>' : '';
		
		return $headline;
	}
}

Um das Ganze nun in eurem Template zu verwenden einfach folgendes machen:


{namespace ak=Tx_Testviewhelper_ViewHelpers}
<ak:Headline header="{data.header}" layout="{data.header_layout}" />

Ich hoffe ich konnte helfen!

Nachtrag

Dank an Philipp Hanebrink, der eine elegante und einfachere Lösung für das Problem parat hatte. Man kann sich den Viewhelper sparen und stattdessen im Fluid-Template einfach Folgendes benutzen:


<f:cObject data="{data}" typoscriptObjectPath="lib.stdheader" />

Kommentare

  • Sebastian
    Vielen Dank euch Beiden für die coole und immer noch (TYPO3 7.6.6) funktionierende Lösung.

    Kleiner Hinweis: In deinem Nachtrag im cObject fehlt ein Slash am Ende. Ohne den kriegt man sonst Fehler im Frontend.

    So müsste es korrekt heißen:
    <f:cObject data=“{data}“ typoscriptObjectPath=“lib.stdheader“/>
    Antworten
    • Andre Knieriem
      Hallo Sebastian,

      vielen Dank für deinen Kommentar. Habe es repariert.

      Grüße
      André
      Antworten
  • Philipp Hanebrink
    Ich stand gerade vor der selben Baustelle.

    Man kann entweder den Header automatisch über jedem Gridelement anzeigen lassen:
    tt_content.gridelements_pi1.10 = <lib.stdheader

    oder für mehr Kontrolle über die Position im Fluid-Template:
    Antworten
    • Philipp Hanebrink
      f:cObject data="{data}" typoscriptObjectPath="lib.stdheader"
      Antworten
    • admin
      Hey Philipp, danke das probiere ich gleich mal aus und ergänze es oben im Text.

      Grüße
      Antworten

Hinterlasse einen Kommentar

Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Kommentar wird gespeichert
Danke für deinen Kommentar! Sobald er freigegeben wurde erscheint er hier.