webdesign-bamberg.net

webdesign und medien blog aus Bamberg

  • Home
  • SEO
  • Social Media
  • Empfehlungen
  • Über den Blog

10 Minuten… tt_news um neue Marker erweitern

comment  Florian Köhler   

comment 11.08.2010    comment 2 Kommentare

Allgemein, Programmierung, Typo3

Was man in 10 Minuten alles erreichen kann, das hat schon Ede Stoiber in seiner legendären Transrapid-Rede verweifelt versucht, dem Zuhörer verständlich zu machen. In 10 Minuten kann man im Gegensatz dazu aber auch etwas sehr produktives anstellen…

Das Problem

Vielleicht kommt Euch die folgende Situation, zumindest in ähnlicher Form, bekannt vor: Ihr sitzt gerade an einem Typo3-Projekt, habt die Nachrichtenerweiterung tt_news installiert und konfiguriert und bei der Erstellung des Templates fällt Euch auf, dass nicht ausreichend Marker zur Verfügung stehen bzw. die vorhanden Funktionen einfach nicht genügen, um die Vorlage nach Euren individuellen Vorstellungen anzupassen.

Dieser Artikel soll demonstrieren, wie Ihr in rund 10 min einen zusätzlichen Marker (in diesem Fall für einen Ansprechpartner einer Nachricht) inkl. des passenden Eingabefeldes im Typo3 Backend erstellen und somit für mehr Flexibilität in der Arbeit mit tt_news sorgen könnt. Wer Typo3, mit seinen auf den ersten Blick verworrenen Strukturen, als programmiertechnisches Hexenwerk betrachtet, dem sei gesagt: Neue Marker für tt_news anzulegen ist halb so wild.

An dieser Stelle sei noch erwähnt, dass es auch mit Hilfe von hooks und einer eigenen Erweiterung für tt_news möglich ist, neue Marker anzulegen. Viele Wege führen eben nach Rom… diese Beschreibung soll jedoch ein möglichst effizientes Vorgehen aufzeigen und richtet sich v.a. an Typo3- Anwender und User, die sich nicht täglich mit der Programmierung rund um Typo3 befassen.

Die Lösung

0. Sicherung der Quelldateien

Bevor Ihr Euch voller Tatendrang in die Erweiterung stürzt, sichert Euch zunächst bitte die folgenden Orginaldateien, die sich in der Verzeichnisstruktur von tt_news (typo3conf/ext/tt_news/…) befinden:

  • tca.php
  • pi/class.tx_ttnews.php
  • res/tt_news_v3_template.php
  • falls benötigt locallang_tca.xml

1. Datenbanktabelle erweitern

Um die im Backend eingegebenen Ansprechpartner zu speichern, benötigen wir zunächst ein zusätzliches Feld in der Datenbanktabelle tt_news. Mit Hilfe des Datenbankadministrationstool phpMyAdmin fügen wir an das Ende der Tabelle ein neues Feld mit dem Namen ‘Ansprechpartner’.

Wichtig ist bei diesem Schritt die korrekte Deklaration des Feldes. Da es sich bei einem Ansprechpartners zweifelsohne um Wörter, also eine Zeichenkette, handeln wird, wählen wir für das Feld den Datentypen VARCHAR aus. MySQL setzt dabei die Angabe der maximalen Länge des Strings voraus. 128 Zeichen sollten für den Vor- und Zunamen hierbei ausreichen.

Falls Ihr mehr Infos zu den  MySQL-Datentypen benötigt oder nicht schlüssig seid, welcher für Euer Feld der Passende ist, dem empfehle ich einen Blick ins übersichtliche Manual von MySQL.

2. Anpassung des Backends (ext/tt_news/tca.php)

Nachdem wir mit dem Anlegen des Datenbankfeldes die notwendige Infrastruktur geschaffen haben, geht es in diesem Schritt nun darum, das Eingabefeld im Backend von Typo3 zu erzeugen und dafür zu sorgen, dass die Daten auch im dafür vorgesehenen Feld der Datenbank gespeichert werden.

Die Datei tca.php (Table Configuration Array) ist für die Anzeige der Formularelemente im Backend sowie für das korrekte Ablegen der Eingaben in der Datenbanktabelle verantwortlich. Drei kleine Ergänzungen im Code sind hier nötig:

PHP-Code (Zeile 25):

$TCA['tt_news'] = Array (
	'ctrl' => $TCA['tt_news']['ctrl'],
	'interface' => Array (
		'showRecordFieldList' => 'title,hidden,datetime,starttime,
                archivedate,category,author,author_email,short,image,
                imagecaption,links,related,news_files,Ansprechpartner'
	),


Das Array $TCA['tt_news'], das für die komplette Konfiguration der Backendanzeige verantwortlich ist, beinhaltet eine Reihe von weiteren Unterarrays. Eines davon (<em>'interface' =&gt; Array...</em>) hält für Typo3 die Informationen bereit, welche Eingabefelder auf der Oberfläche geladen werden.  In der Liste (<em>'showRecordFieldList' =&gt; '...'</em>) fügen wir das Feld <em>Ansprechpartner</em> hinzu, welches wir im folgenden Schritt genauer spezifizieren:

PHP-Code (Zeile 150):

'no_auto_pb' => Array (
			'l10n_mode' => 'mergeIfNotBlank',
			'exclude' => 1,
			'label' => 'LLL:EXT:tt_news/locallang_tca.xml:tt_news.no_auto_pb',
			'config' => Array (
				'type' => 'check'
			)
		),
		'short' => Array (
			'exclude' => 1,
			'label' => 'LLL:EXT:lang/locallang_general.php:LGL.subheader',
			'l10n_mode' => $l10n_mode,
			'config' => Array (
				'type' => 'text',
				'cols' => '40',
				'rows' => '3'
			)
		),
               'Ansprechpartner' => Array ( 'label' => 'Wer ist der Ansprechpartner?', 'config' => Array ( 'type' => 'input', 'size' => '50', 'max' => '128' ) ),

Wie die anderen Eingabefelder benötigt auch unser neues Formularelement ein eigenes Konfigurationsarray, in dem der Typ, das zugehörige Label etc. festgelegt werden. Zwar ist die Reihenfolge dieser Konfigurationsarrays innerhalb des $tca Arrays unabhängig von der späteren Ausgabe im Backend, der Übersicht halber habe ich es jedoch direkt nach der Kurzbeschreibung eingefügt, also an der Stelle, an der es später auch im Backend angezeigt werden sein soll.

Um sicherzustellen, dass die Eingabe im richtigen Datenbankfeld gespeichert wird, ist  für den Namen des Arrays die exakt gleiche Schreibweise, wie der Name des Feldes in der Datenbank (‘Ansprechpartner’),erforderlich. Mit Hilfe des ‘label’-Attributs könnt Ihr die Überschrift im Backend entsprechend festlegen. Hier habt Ihr die Möglichkeit entweder direkt einen Wert einzugeben (‘Wer ist der Ansprechpartner?’) oder einen Wert aus der locallang_tca.xml-Datei, in der die Labels in unterschiedlichen Sprachen festgelegt sind, automatisch einfügen zu lassen (‘LLL:EXT:tt_news/locallang_tca.xml:tt_news.LABELNAME’).  Die letztere Variante ist besonders dann zu empfehlen, wenn Ihr die Mehrsprachigkeit des Backends nutzt, da das Label dann in der jeweiligen Landessprache ausgegeben wird.

Das ‘config’ -Array ist schließlich für die eigentliche Konfiguration des Formularelements zuständig. Der ‘type’ gibt dabei an, welcher Typ von Formularelement erzeugt werden soll (Texteingabe, mehrzeilige Textarea, Checkboxen, Radiobuttons etc.). In unserem Beispiel wird für den Ansprechpartner ein einfaches Texteingabefeld angelegt. Die Parameter ‘size’ und ‘max’ bestimmen die Breite des Textfeldes bzw. die maximale Anzahl an zulässigen Zeichen. Wer hier tiefer einsteigen möchte und mehr Informationen zu den einzelnen Parameteren und Datentypen benötigt, findet in der Dokumentation von Typo3 eine Auflistung aller Typen3 sowie deren zulässige Attribute.

PHP-Code (Zeile 423):

'types' => Array (
		'0' => Array('showitem' =>
			'hidden, type;;;;1-1-1,title;;;;2-2-2,short,Ansprechpartner,bodytext;;2;richtext:rte_transform[flag=rte_enabled|mode=ts];4-4-4,
			--div--;LLL:EXT:tt_news/locallang_tca.xml:tt_news.tabs.special, datetime;;;;2-2-2,archivedate,author;;3;; ;;;;2-2-2,
				keywords;;;;2-2-2,sys_language_uid;;1;;3-3-3,
			--div--;LLL:EXT:tt_news/locallang_tca.xml:tt_news.tabs.media, image;;;;1-1-1,imagecaption;;5;;,links;;;;2-2-2,news_files;;;;4-4-4,
			--div--;LLL:EXT:tt_news/locallang_tca.xml:tt_news.tabs.catAndRels, category;;;;3-3-3,related;;;;3-3-3,
			--div--;LLL:EXT:tt_news/locallang_tca.xml:tt_news.tabs.access, starttime,endtime,fe_group,editlock,
			--div--;LLL:EXT:tt_news/locallang_tca.xml:tt_news.tabs.extended,
			'),

Die letzte Änderung in der tca.php bezieht sich auf die Position, an der unser Eingabefeld im Backendformular ausgegeben werden soll. Mit Komma getrennt fügen wir es in der Liste ( ‘showitem’  -Array) auf der 1. Seite (’0′=>) hinter der Kurzbeschreibung (short) ein. Das wars auch schon.

3. Erstellen des Markers  (ext/tt_news/pi/class.tx_ttnews.php)

In der Basisklasse class.tx_ttnews.php der Erweiterung, genauer gesagt in der Funktion function getItemMarkerArray( $row, $lConf, $textRenderObj) werden nun die Marker und die Codefragmente erzeugt, die an der jeweiligen Position des Markers in den HTML Code integriert werden sollen. Alle Marker der tt_news Extension werden in einem assoziativen Markerarray $markerArray[] zwischengespeichert und mit dem jeweiligen Wert versehen.

Mit $markerArray['###ANSPRECHPARTNER###']=$row['Ansprechpartner'] erstellen wir einen neuen Marker ###ANSPRECHPARTNER### und weisen diesem den Wert aus der Datenbank zu:

PHP-Code:

function getItemMarkerArray($row,...){
...
$markerArray['###ANSPRECHPARTNER###'] = $row['Ansprechpartner'];
...
}

 

Bei dem an die Funktion getItemMarkerArray() übergeben $row-Array handelt es sich um einen kompletten Datensatz aus der Tabelle tt_news der Datenbank. Um an den gespeicherten Wert des Ansprechpartners zu gelangen, verwenden wir die assoziative Schreibweise $row['Ansprechpartner'].

4. Verwendung des Markers im Template  (ext/tt_news/res/tt_news_v3_template.html)

Wie auch die Standardmarker  von tt_news können auch die Hinzugefügten mit der entsprechenden Schreibweise (###MARKER###) direkt im Template verwendet werden. Unser Ansprechpartner für eine Nachricht lässt sich somit über ###ANSPRECHPARTNER###  ins Template einfügen.

5. Unbedingt beachten !!!

Bei einem Update von tt_news werden Eure modfizierten Dateien mit den Codeänderungen automatisch überschrieben und müssen somit nach dem Updatevorgang erneut hinzugefügt werden.  Es ist daher dringend zu empfehlen, die angepassten Dateien zu sichern und diese mit einem kurzen Kommentar über die vorgenommenen Änderungen zu versehen. Die Datenbankstrukturen (die hinzugefügten Felder und die bestehenden Einträge) bleiben bei einem Update von tt_news in der Regel erhalten.


Über diesen Artikel

Dieser Artikel wurde in den Kategorien Allgemein, Programmierung, Typo3 veröffentlicht und mit den Schlagworten Erweiterung, Extension, Marker, tt_news, Typo3 versehen.

Autor des Artikels: Florian Köhler

Florian Köhler

Als Autor dieses Blogs und Inhaber der Werbeagentur Webtwist bin ich immer auf der Suche nach interessanten Trends, Neuheiten und Hintergrundberichte in den Themenbereichen Mediendesign, SEO und Social Media.

» Artikel: Alle Beiträge von Florian Köhler
» Website: https://www.webtwist.de

Artikel-Navigation

← Website Showcase: 50 Webseiten von Sportler und Sportlerinnen
Fotoserie: Bamberg in HDR-Bildern →

2 Gedanken zu „10 Minuten… tt_news um neue Marker erweitern“

  1. Pingback: 10 Minuten… tt_news um neue Marker erweitern « webdesign-bamberg … | Surfemotion-Blog

  2. Pingback: Anonymous

Hinterlasse eine Antwort Antworten abbrechen

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

CAPTCHA-Bild
Bild neuladen

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Seite durchsuchen

Populärste Artikel

Erstellen einer Wetterkarte mit Hilfe des yr.no XML-Service und JQuery
wetter_karte2
Corporate Blogs – Warum bloggen für Unternehmen wichtig ist
artikel_blogging
Google Maps mit Javascript einfärben – Graustufen, Styling
preview_image
Inhalt – der Schlüssel zum Erfolg einer Webseite
content_erfolg_webseite

Anzeige

Kategorien

  • Allgemein
  • Blogging
  • Fehler
  • Fotografie
  • HTML
  • Inhalte
  • Inspiration
  • Javascript
  • JQuery
  • Konzeption
  • Online Marketing
  • Programmierung
  • Projekte
  • Pupulär
  • Quicktipp
  • Social Media
  • Suchmaschinenoptimierung
  • Tutorial
  • Typo3
  • Webdesign

Anzeige

Anzeige

Blogroll

  • Dokumentation
  • FAQ
  • News-Blog
  • Support Forum
  • Themepool
  • WordPress-Planet
¹ Kann Spuren von Kreativität enthalten
Copyright © 2010-2019 Webtwist - Werbeagentur, Webdesign Bamberg
»Impressum »Datenschutz