<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.32.70.220</id>
	<title>Wikizone - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.32.70.220"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/91.32.70.220"/>
	<updated>2026-05-07T03:59:58Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_Extension:_pupmanager&amp;diff=1294</id>
		<title>Typo3 Extension: pupmanager</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_Extension:_pupmanager&amp;diff=1294"/>
		<updated>2008-01-08T13:31:00Z</updated>

		<summary type="html">&lt;p&gt;91.32.70.220: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Konfiguration / Beschreibung&lt;br /&gt;
&lt;br /&gt;
TS Konfiguration&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### PUP-MANAGER ###&lt;br /&gt;
# additional Styles&lt;br /&gt;
&lt;br /&gt;
page.includeCSS.file1 = fileadmin/templates/pup/pup.css&lt;br /&gt;
plugin.tx_pupmanager_pi1{&lt;br /&gt;
   templateFile = fileadmin/templates/pup/template.html&lt;br /&gt;
   #swList = 150&lt;br /&gt;
   imgPath = fileadmin/user_upload/pupmanager/&lt;br /&gt;
   dummyImage = fileadmin/templates/pup/dummy.gif&lt;br /&gt;
   maxWidthSingle = 160&lt;br /&gt;
   maxWidthList = 40&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ToDo:&lt;br /&gt;
&lt;br /&gt;
* Gruppennummer per TS vorkonfigurieren (so daß in bestimmten Ordnern eine Nummer automatisch generiert wird wenn vorhanden)&lt;br /&gt;
* Gruppennummer generieren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. Pflichtfelder&lt;br /&gt;
Name, Vorname, Anschrift, Geburtsdatum, Passbild mit Formatsvorgaben&lt;br /&gt;
Waffenträger ja / nein&lt;br /&gt;
bei ja :  Vorgabe der Art der Waffe (Messer usw. )&lt;br /&gt;
Dekowaffe wäre zu streichen (gibt es nicht gem. Waffengesetz)&lt;br /&gt;
Bei Waffen nach § 27 Sprengstoffgesetz ja / nein&lt;br /&gt;
Bei ja :&lt;br /&gt;
Art der Waffe, ausstellende Behörde,  Nr. der Erlaubnis, Gültigkeitsdatum&lt;br /&gt;
der Erlaubnis&lt;br /&gt;
&lt;br /&gt;
Bei den Pflichtfeldern wollten wir noch deutlich machen, dass eine&lt;br /&gt;
Jugendkarte&lt;br /&gt;
erst ab 12 Jahren erstellt wird&lt;br /&gt;
Ebenso muss der Eingebende seine E-Mail-Adresse hinterlegen&lt;br /&gt;
(für mögliche Rückfragen)&lt;br /&gt;
&lt;br /&gt;
2. Nach Eingabe der Daten&lt;br /&gt;
hier wollten wir ein Kontrollmail an einen Verantwortlichen innerhalb der&lt;br /&gt;
VAB senden, mit allen Daten und Bild, dazu sollten wir noch eine&lt;br /&gt;
E-Mailadresse schaffen&lt;br /&gt;
Dieser Verantwortliche druckt dann die neue Karte auf unserem Kartendrucker&lt;br /&gt;
Eingaben dürfen nur von autorisierten Gruppen der VAB erfolgen&lt;br /&gt;
diese sind besondert gelistet und haben jeweils ein eigens Kenn- und&lt;br /&gt;
Passwort&lt;br /&gt;
&lt;br /&gt;
3. Sie wollten noch prüfen ob Daten importiert werden können&lt;br /&gt;
z.B. aus dem Vereinsprogramm 2000 das durch die Sparkassen angeboten wird&lt;br /&gt;
und von vielen Gruppen genutzt wird&lt;br /&gt;
&lt;br /&gt;
Thomas hatte auch noch Anmerkungen, die habe ich mir allerdings nicht&lt;br /&gt;
notiert&lt;br /&gt;
&lt;br /&gt;
Viele Grüße&lt;br /&gt;
Gerhard Franck&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.32.70.220</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_Extensions_-_Backend_Formulare_und_TCA_Konfiguration&amp;diff=1248</id>
		<title>Typo3 Extensions - Backend Formulare und TCA Konfiguration</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_Extensions_-_Backend_Formulare_und_TCA_Konfiguration&amp;diff=1248"/>
		<updated>2008-01-08T11:09:50Z</updated>

		<summary type="html">&lt;p&gt;91.32.70.220: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Aussehen von Backend Formularen ===&lt;br /&gt;
&lt;br /&gt;
Definiert im TCA Array. In Extensions wird es in den Dateien ext_tables.php und tca.php festgelegt.&lt;br /&gt;
Die Ebenen des Arrays sind wie folgt angelegt.&lt;br /&gt;
=== Verschiedenes ===&lt;br /&gt;
Bereich ctrl wird immer gleich geladen die anderen BEreiche erst dynamisch. Wenn sie benutzt werden mit &lt;br /&gt;
&lt;br /&gt;
 t3lib_loadTCA(&amp;#039;your_table_name&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
nachladen&lt;br /&gt;
&lt;br /&gt;
=== Level 1 ===&lt;br /&gt;
Die Schlüssel entsprechen den DB-Tabellen&lt;br /&gt;
&lt;br /&gt;
Grundsätzliche Einstellungen in ext_tables.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Level 2 und 3 ===&lt;br /&gt;
&lt;br /&gt;
Diese beziehen sich auf die Struktur eines Tabelleneintrags (so sieht also ein Datensatz im Backend aus) und werden meist in tca.php festgelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Validierung von Backend Formularen ==&lt;br /&gt;
 &lt;br /&gt;
[&amp;#039;columns&amp;#039;][fieldname][&amp;#039;config&amp;#039;] / TYPE: &amp;quot;input&amp;quot;&lt;br /&gt;
 eval Evaluiert Input Feld&lt;br /&gt;
&lt;br /&gt;
== Felder in Abhängigkeit von anderen anzeigen oder verstecken ==&lt;br /&gt;
===Möglichkeit 1: in der Felddefinition===&lt;br /&gt;
Für jedes Feld das eventuell versteckt werden soll, wird eine Bedingung angegeben&lt;br /&gt;
Im TCA (tca.php) unter&lt;br /&gt;
 [&amp;#039;columns&amp;#039;][fieldname] &lt;br /&gt;
 displayCond&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiele:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This example will require the field named &amp;quot;tx_templavoila_ds&amp;quot; to be true, otherwise the field for which this rule is set will not be displayed:&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;displayCond&amp;#039; =&amp;gt; &amp;#039;FIELD:tx_templavoila_ds:REQ:true&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
This example requires the extension &amp;quot;static_info_tables&amp;quot; to be loaded, otherwise the field is not displayed. (This is useful if the field makes a look-up on a table coming from another extension!)&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;displayCond&amp;#039; =&amp;gt; &amp;#039;EXT:static_info_tables:LOADED:true&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
Wie man sieht ist der String mit : in verschiedene Bereiche aufgeteilt. &lt;br /&gt;
Teil 1 ist der Regeltyp. FIELD bezieht sich z.B. auf ein Feld im selben Datensatz. Je nachdem was im ersten Teil steht kann man weitere Teile angeben.&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.1.0/view/4/2/&lt;br /&gt;
&lt;br /&gt;
===Möglichkeit 2: mit Paletten===&lt;br /&gt;
&lt;br /&gt;
===Möglichkeit 3: ===&lt;br /&gt;
&lt;br /&gt;
== Reihenfolge der Felder im Backend ==&lt;br /&gt;
[&amp;#039;types&amp;#039;][key]&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;#039;types&amp;#039; =&amp;gt; Array (&lt;br /&gt;
 &amp;#039;0&amp;#039; =&amp;gt; Array(&amp;#039;showitem&amp;#039; =&amp;gt; &amp;#039;hidden;;1, type, title, test_template&amp;#039;),&lt;br /&gt;
&lt;br /&gt;
The key &amp;quot;showitem&amp;quot; lists the order in which to define the fields: &amp;quot;hidden, type, title, test_template&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(nicht mit showRecordFieldList verwechseln - das legt nur Fest was überhaupt angezeigt wird.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Default Werte in Backend-Feldern ==&lt;br /&gt;
useColumnsForDefaultValues&lt;br /&gt;
&lt;br /&gt;
== Tabs in Backend Formularen ==&lt;br /&gt;
dividers2tabs(in types)&lt;/div&gt;</summary>
		<author><name>91.32.70.220</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_Extensions_-_Backend_Formulare_und_TCA_Konfiguration&amp;diff=1246</id>
		<title>Typo3 Extensions - Backend Formulare und TCA Konfiguration</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_Extensions_-_Backend_Formulare_und_TCA_Konfiguration&amp;diff=1246"/>
		<updated>2008-01-08T10:04:30Z</updated>

		<summary type="html">&lt;p&gt;91.32.70.220: /* Reihenfolge der Felder im Backend */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=== Aussehen von Backend Formularen ===&lt;br /&gt;
&lt;br /&gt;
Definiert im TCA Array. In Extensions wird es in den Dateien ext_tables.php und tca.php festgelegt.&lt;br /&gt;
Die Ebenen des Arrays sind wie folgt angelegt.&lt;br /&gt;
=== Verschiedenes ===&lt;br /&gt;
Bereich ctrl wird immer gleich geladen die anderen BEreiche erst dynamisch. Wenn sie benutzt werden mit &lt;br /&gt;
&lt;br /&gt;
 t3lib_loadTCA(&amp;#039;your_table_name&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
nachladen&lt;br /&gt;
&lt;br /&gt;
=== Level 1 ===&lt;br /&gt;
Die Schlüssel entsprechen den DB-Tabellen&lt;br /&gt;
&lt;br /&gt;
Grundsätzliche Einstellungen in ext_tables.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Level 2 und 3 ===&lt;br /&gt;
&lt;br /&gt;
Diese beziehen sich auf die Struktur eines Tabelleneintrags (so sieht also ein Datensatz im Backend aus) und werden meist in tca.php festgelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Validierung von Backend Formularen ==&lt;br /&gt;
&lt;br /&gt;
== Reihenfolge der Felder im Backend ==&lt;br /&gt;
Das geht nicht (Reihenfolge ist hier egal...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TCA[&amp;quot;tx_myExtension&amp;quot;] = array (&lt;br /&gt;
	&amp;quot;ctrl&amp;quot; =&amp;gt; $TCA[&amp;quot;tx_myExtension_myTable&amp;quot;][&amp;quot;ctrl&amp;quot;],&lt;br /&gt;
	&amp;quot;interface&amp;quot; =&amp;gt; array (&lt;br /&gt;
		&amp;quot;showRecordFieldList&amp;quot; =&amp;gt; &amp;quot;sys_language_uid,l18n_parent,l18n_diffsource,hidden,starttime,endtime,fe_group,name,surname,...&amp;quot;&lt;br /&gt;
	),&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vielleicht so...&lt;br /&gt;
&lt;br /&gt;
== Default Werte in Backend-Feldern ==&lt;br /&gt;
useColumnsForDefaultValues&lt;br /&gt;
&lt;br /&gt;
== Tabs in Backend Formularen ==&lt;br /&gt;
dividers2tabs(in types)&lt;/div&gt;</summary>
		<author><name>91.32.70.220</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_Extensions_-_Backend_Formulare_und_TCA_Konfiguration&amp;diff=1245</id>
		<title>Typo3 Extensions - Backend Formulare und TCA Konfiguration</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_Extensions_-_Backend_Formulare_und_TCA_Konfiguration&amp;diff=1245"/>
		<updated>2008-01-08T09:52:46Z</updated>

		<summary type="html">&lt;p&gt;91.32.70.220: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=== Aussehen von Backend Formularen ===&lt;br /&gt;
&lt;br /&gt;
Definiert im TCA Array. In Extensions wird es in den Dateien ext_tables.php und tca.php festgelegt.&lt;br /&gt;
Die Ebenen des Arrays sind wie folgt angelegt.&lt;br /&gt;
=== Verschiedenes ===&lt;br /&gt;
Bereich ctrl wird immer gleich geladen die anderen BEreiche erst dynamisch. Wenn sie benutzt werden mit &lt;br /&gt;
&lt;br /&gt;
 t3lib_loadTCA(&amp;#039;your_table_name&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
nachladen&lt;br /&gt;
&lt;br /&gt;
=== Level 1 ===&lt;br /&gt;
Die Schlüssel entsprechen den DB-Tabellen&lt;br /&gt;
&lt;br /&gt;
Grundsätzliche Einstellungen in ext_tables.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Level 2 und 3 ===&lt;br /&gt;
&lt;br /&gt;
Diese beziehen sich auf die Struktur eines Tabelleneintrags (so sieht also ein Datensatz im Backend aus) und werden meist in tca.php festgelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Validierung von Backend Formularen ==&lt;br /&gt;
&lt;br /&gt;
== Reihenfolge der Felder im Backend ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TCA[&amp;quot;tx_myExtension&amp;quot;] = array (&lt;br /&gt;
	&amp;quot;ctrl&amp;quot; =&amp;gt; $TCA[&amp;quot;tx_myExtension_myTable&amp;quot;][&amp;quot;ctrl&amp;quot;],&lt;br /&gt;
	&amp;quot;interface&amp;quot; =&amp;gt; array (&lt;br /&gt;
		&amp;quot;showRecordFieldList&amp;quot; =&amp;gt; &amp;quot;sys_language_uid,l18n_parent,l18n_diffsource,hidden,starttime,endtime,fe_group,name,surname,...&amp;quot;&lt;br /&gt;
	),&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Default Werte in Backend-Feldern ==&lt;br /&gt;
useColumnsForDefaultValues&lt;br /&gt;
&lt;br /&gt;
== Tabs in Backend Formularen ==&lt;br /&gt;
dividers2tabs(in types)&lt;/div&gt;</summary>
		<author><name>91.32.70.220</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Extensions_programmieren&amp;diff=1252</id>
		<title>Typo3 - Extensions programmieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Extensions_programmieren&amp;diff=1252"/>
		<updated>2008-01-08T09:08:10Z</updated>

		<summary type="html">&lt;p&gt;91.32.70.220: /* Extensions Programmieren in der Praxis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Links:&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/documentation/api/&lt;br /&gt;
== Templates ==&lt;br /&gt;
[[Typo3 Extension Developer Templates]]&lt;br /&gt;
== Extensions programmieren - wie fange ich an ? ==&lt;br /&gt;
Was möchtest du tun?&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ein vorhandenes Inhaltselement verändern, z.B. Felder hinzufügen oder ein neues Erstellen.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Typo3 Extensions - Inhaltstypen anlegen und bearbeiten]]&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel dafür ist die Extension metatags die den Inhaltselementen Text mit Bild und Bild zusätzliche Felder für Alt und Title Tag hinzufügt.&lt;br /&gt;
&lt;br /&gt;
== Extensions Programmieren in der Praxis ==&lt;br /&gt;
[[Typo3 Extensions - ein Frontend Plugin Programmieren]]&lt;br /&gt;
&lt;br /&gt;
[[Typo3 Extensions mit IRRE]]&lt;br /&gt;
&lt;br /&gt;
Das IRRE Konzept hilft beim erstellen von Extensions mit &amp;quot;echten&amp;quot; relationalen Datenbankabfragen&lt;br /&gt;
&lt;br /&gt;
[[Typo3 Extensions mit FlexForms]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Typo3 Extensions - Backend Formulare und TCA Konfiguration]]&lt;br /&gt;
&lt;br /&gt;
== Wichtige Variablen ==&lt;br /&gt;
 $_EXTKEY &lt;br /&gt;
bzw. im Array...&lt;br /&gt;
Enthält den Extension Key.  Immer die Variable benutzen, dann kann man den Code leichte wieder verwenden.&lt;br /&gt;
 $TYPO3_CONF_VARS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wie arbeitet eine Extension ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Laden:&amp;#039;&amp;#039;&amp;#039; Extension Manager (EM) ruft &amp;#039;&amp;#039;ext_emconf.php&amp;#039;&amp;#039; (enthält nur das Array: $EM_CONF[$_EXTKEY]) bei allen Extensions auf die in der localconf.php aufgeführt sind.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Aufruf von Backend oder Frontend:&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039; wird ausgeführt (oder eine gecachete Kopie) In dieser wird die /typo3conf/localconf.php erweitert.&lt;br /&gt;
Funktion: weitere Klassen includieren (require_once())&lt;br /&gt;
&lt;br /&gt;
=== Formulare im Backend ===&lt;br /&gt;
Das &amp;#039;&amp;#039;&amp;#039;$TCA&amp;#039;&amp;#039;&amp;#039; (Table Configuration Array) bestimmt welche Formularfelder verwendet werden.&lt;br /&gt;
Das Array ist in ext_tables.php(Bereiche: ctrl und feinterface s.u.) und tca.php gespeichert&lt;br /&gt;
&lt;br /&gt;
* Jeder Eintrag im $TCA ist an eine Datenbanktabelle geknüpft&lt;br /&gt;
* Der erste Index ist der Tabellenname.&lt;br /&gt;
* Im zweiten Index gibt es 6 Bereiche: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ctrl -&amp;gt; Informationen zur Tabelle&lt;br /&gt;
 interface -&amp;gt; Konfiguration für die Auflistung und Darstellung im Backend&lt;br /&gt;
 feInterface -&amp;gt; Eigenschaften für das Frontend Editing&lt;br /&gt;
 columns -&amp;gt; Informationen zu den Feldtypen der Tabelle und der Verarbeitung der Daten (zweiter Index ist hier der Spaltenname)&lt;br /&gt;
 types -&amp;gt; legt fest welche der in columns definierten Spalten dargestellt werden und in welcher Reihenfolge, &lt;br /&gt;
          außerdem Zusatzinfo wie alternative Feldbezeichnung, Palettennummer, style codes...&lt;br /&gt;
 palettes -&amp;gt; Zum Zusammenfassen von mehreren Eingabefeldern, Zusammenstellungen wiederverwenden, Hilfsfelder definieren&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Daten bearbeiten mit TCE und TCEforms ===&lt;br /&gt;
Die im $TCA definierten Daten müssen in irgend einer Form bearbeitet werden. Ein umfangreiches Modul dazu befindet sich  in der Extension CMS (typo3/sysext/cms/layout/db_layout.php. DDas Modul greift auf die &amp;#039;&amp;#039;&amp;#039;Typo3 Core Engine (TCE)&amp;#039;&amp;#039;&amp;#039; zurück, die zum Verarbeiten und Speichern von Daten dient. Die &amp;#039;&amp;#039;&amp;#039;Formulare werden mit der Klasse TCEforms&amp;#039;&amp;#039;&amp;#039; erzeugt. Bearbeitet wird hierbei im Backend.&lt;br /&gt;
&lt;br /&gt;
Immer dann, wenn man die &amp;#039;&amp;#039;&amp;#039;im $TCA eingetragenen Tabellen über Eingabemasken manipulieren&amp;#039;&amp;#039;&amp;#039; will ist des sinnvoll die TCE zu nutzen.&lt;br /&gt;
&lt;br /&gt;
 t3lib_TCEmain -&amp;gt; t3lib/class.t3lib_tce-main.php&lt;br /&gt;
 t3lib_TCEforms -&amp;gt; TCEforms&lt;br /&gt;
&lt;br /&gt;
==== Einsatz in Extensions ====&lt;br /&gt;
Instanz von t3lib_TCEmain erzeugen:&lt;br /&gt;
 require_once(PATH_t3lib.&amp;quot;class.t3lib_tcemain.php&amp;quot;);&lt;br /&gt;
 $tce=t3lib_div::makeInstance(&amp;#039;t3lib_TCEmain&amp;#039;);&lt;br /&gt;
Arrays für Daten und Kommandos erzeugen:&lt;br /&gt;
 $data[tabelle][uid][feld] = wert&lt;br /&gt;
um neue Daten zu schreiben bevor man eine uid hat belegt man uid mit NEW und einem Zufallsstring z.B. NEWo1amh&lt;br /&gt;
 $cmd[tabelle][uid][befehl] = wert&lt;br /&gt;
dabei stehen verschiedene Befehle zur Verfügung:&lt;br /&gt;
 copy, move, delete, localize, version, new&lt;br /&gt;
Die beiden Arrays werden dann mittels &lt;br /&gt;
 $tce-&amp;gt;start($data,$cmd) &lt;br /&gt;
an die TCE übergeben und von &lt;br /&gt;
$tce-&amp;gt;process_cmdmap() &lt;br /&gt;
abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Wie kann ich eine eigene Extension debuggen? ==&lt;br /&gt;
=== Hilfreiche Extensions zur Entwicklung von Extensions ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;devlog&amp;#039;&amp;#039;&amp;#039; -&amp;gt; schreibt log Einträge in eine Datenbanktabelle. Dazu ruft man an in seiner Extension die Funktion TODO auf und übergibt die Werte die man loggen will.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Extension Development Evaluator  (extdeveval) &amp;#039;&amp;#039;&amp;#039; -&amp;gt; Referenzen aufrufen, Autmatisch Funktionsinfos schreiben u.v.m.&lt;br /&gt;
	&lt;br /&gt;
=== permalink ===&lt;br /&gt;
Wenn man eine eigene Extension schreibt benutzt man zum größten Teil Array, und um den Überblick zu behalten was nach den ganzen schritten in einem Array noch so drin steht hat man die möglichkeit mit einer Funktion das Array schön und sauber in einer tabelle anzeigen zu lassen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
PHP-Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$data = array(&amp;quot;Name&amp;quot; =&amp;gt; &amp;quot;Peter KeineAhnung&amp;quot;, &amp;quot;Alter&amp;quot; =&amp;gt; 22, &amp;quot;Wohnort&amp;quot; =&amp;gt; &amp;quot;Ratingen&amp;quot;);&lt;br /&gt;
t3lib_div::debug($data);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ergebnis:&lt;br /&gt;
&lt;br /&gt;
je nach devIPMask Einstellungen ist auch nur&lt;br /&gt;
&lt;br /&gt;
PHP-Code:&lt;br /&gt;
&lt;br /&gt;
 debug();&lt;br /&gt;
&lt;br /&gt;
nützlich, vor allem wenn ein Kundenprojekt Online ist einfach im Installtool und devIpMask deine IP eingeben und dann mit debug(); arbeiten, so kannst nur du den debug sehen und nicht irgendwelche User die grade auf der Site sind.&lt;br /&gt;
&lt;br /&gt;
Kleiner Zusatz Tip:&lt;br /&gt;
&lt;br /&gt;
Ihr lasst euch gleichzeitig mehrere Debugs ausgeben und verliert den überblick welcher debug welcher ist... Beispiel Ihr lasst euch ein Array vor einer funktion debugen und anschliessend...&lt;br /&gt;
&lt;br /&gt;
da habt ihr dann die möglichkeit euerem Debug einen Namen zu geben..&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
PHP-Code:&lt;br /&gt;
 $data = array(&amp;quot;Name&amp;quot; =&amp;gt; &amp;quot;Peter KeineAhnung&amp;quot;, &amp;quot;Alter&amp;quot; =&amp;gt; 22);&lt;br /&gt;
 t3lib_div::debug(,&amp;#039;Array vorher&amp;#039;);&lt;br /&gt;
        &lt;br /&gt;
 $data[&amp;#039;Name&amp;#039;] = &amp;#039;T.uX&amp;#039;;&lt;br /&gt;
 $data[&amp;#039;Alter&amp;#039;] = 32;&lt;br /&gt;
&lt;br /&gt;
 t3lib_div::debug(,&amp;#039;Array nachher&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
Auch bei der Verwendung der integrierten DB-Abstraktionsschicht können eine Reihe von Fehlern auftreten, die teilweise nur sehr magere Fehlermeldungen produzieren. Um eine etwas explizitere Fehlerausgabe zu erzwingen sollte man folgende Zeile in seine Extension integrieren*:&lt;br /&gt;
&lt;br /&gt;
PHP-Code:&lt;br /&gt;
 $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;debugOutput = true;&lt;br /&gt;
So wird z.B. das SQL-Stement Ausgegeben, das zu einem Fehler geführt hat.&lt;br /&gt;
&lt;br /&gt;
== Datenbankabfrage in Extensions ==&lt;br /&gt;
[[TYPO3 - Datenbankabfragen in Extensions]]&lt;br /&gt;
&lt;br /&gt;
== Struktur einer Extension ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ext_emconf.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Informationen und Metadaten zur Extension. Etwa die Infos die im Kickstarter unter General Info stehen.&lt;br /&gt;
&lt;br /&gt;
* Root-Verzeichnis&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039; Enthält &amp;#039;&amp;#039;&amp;#039;Konfigurationsdaten&amp;#039;&amp;#039;&amp;#039; ($TYPO3_CONF_VARS) für das Backend und Frontend. Hier kann über die Extension API auch &amp;#039;&amp;#039;&amp;#039;TypoScript&amp;#039;&amp;#039;&amp;#039; eingebunden werden.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_tables.php&amp;#039;&amp;#039;&amp;#039; Konfiguration von &amp;#039;&amp;#039;&amp;#039;Datenbanktabellen&amp;#039;&amp;#039;&amp;#039;. Plugins und Module über die Extension API einbinden. (Alles über Kickstarter)&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_tables.sql&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;SQL-Daten&amp;#039;&amp;#039;&amp;#039; für die Tabellendefinition. Die Auswertung erfolgt über den Extension Manager und das Install-Tool.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_tables_static+adt.sql&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;SQL-Tabellendefinition&amp;#039;&amp;#039;&amp;#039; inkl. Daten. Z.B. für statische Daten (Länderinfos etc.)Die Tabellen müssen zusätzlich in ext_tables.sql definiert sein.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_typoscript_*.txt&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;Globaler TypoScript-Code&amp;#039;&amp;#039;&amp;#039;. Steht nicht üver Template-Datensätze zur Auswahl (siehe /static)&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_conf_template.txt&amp;#039;&amp;#039;&amp;#039; Hier werden &amp;#039;&amp;#039;&amp;#039;Optionen zur Konfiguration&amp;#039;&amp;#039;&amp;#039; angelegt, die der Benutzer im Extensionmanager einstellen kann.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;*icon*.gif&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;Symbol-Dateien&amp;#039;&amp;#039;&amp;#039; für Extension,DB-Tabellen,Plugins, Module...&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;locallang*.php&amp;#039;&amp;#039;&amp;#039; Texte für die &amp;#039;&amp;#039;&amp;#039;Lokalisierung&amp;#039;&amp;#039;&amp;#039; in verschiedenen Sprachen&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;class.ext_update.php&amp;#039;&amp;#039;&amp;#039; Funktionen für ein &amp;#039;&amp;#039;&amp;#039;Update der Extension&amp;#039;&amp;#039;&amp;#039; (Beispiel siehe newloginbox).&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;pi1/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für &amp;#039;&amp;#039;&amp;#039;Skripte und Daten&amp;#039;&amp;#039;&amp;#039; des Plugin&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;class*.php&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;PHP-Klassen&amp;#039;&amp;#039;&amp;#039; z.B. für Plugins oder Submodule&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;cm1/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für Dateien die das &amp;#039;&amp;#039;&amp;#039;Kontext-Menü&amp;#039;&amp;#039;&amp;#039; betreffen&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;mod1/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für ein Modul.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;conf.php&amp;#039;&amp;#039;&amp;#039; Konfigurationsdatei für ein &amp;#039;&amp;#039;&amp;#039;Modul&amp;#039;&amp;#039;&amp;#039; zum einbinden ins Backend.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;index.php&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;Hauptscript eines Moduls&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;modfunc1/&amp;#039;&amp;#039;&amp;#039; Skripte und Daten für &amp;#039;&amp;#039;&amp;#039;Submodul-Funktionen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;static/&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;TypoScript-Template&amp;#039;&amp;#039;&amp;#039;-Dateien. Diese werden über die Extension-API eingebunden und stehen dann in Template-Datensätzen, ähnlich den Standard Templates zur Auswahl.&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;sv1/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für &amp;#039;&amp;#039;&amp;#039;Services&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;res/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für beliebige &amp;#039;recourcen&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;doc/&amp;#039;&amp;#039;&amp;#039; Verzeichnis der &amp;#039;&amp;#039;&amp;#039;Dokumentation&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Wo werden Extensions installiert ? ==&lt;br /&gt;
===typo3/sysext/ (System)===&lt;br /&gt;
System Extensions wie cms und lang. Hier können keine Extensions mit dem Extension Manager installiert werden.&lt;br /&gt;
===typo3/ext/ - globale Extensions (Global) ===&lt;br /&gt;
Z.B. diese die von Typo3 mitgeliefert werden. Mit der Option allowGlobalInstall kann man die Installation in dieses Verzeichnis erlauben. Das ist dann nicht sinnvoll wenn sich mehrere Typo3 WEbsites eine Installation teilen, weil es hier zu Versionskonflikten kommen kann.&lt;br /&gt;
===typo3conf/ext - lokale Extensions (Local)===&lt;br /&gt;
Hier werden normalerweise alle Extensions installiert. Die Lokale Installation hat immer Vorang vor einer globalen.&lt;br /&gt;
&lt;br /&gt;
== Typolinks richtig in Extensions einsetzen ==&lt;br /&gt;
&lt;br /&gt;
In diesem kurzem Tutorial möchte ich zeigen, wie man Typolinks in eigenen Erweiterungen erstellt, die das&lt;br /&gt;
Feature &amp;#039;Simulate Static Documents&amp;#039; unterstützen und eine Ausgabe erstellen, die von Typo3 gecached wird&lt;br /&gt;
und so auch mit der Indexed search verwendet werden können. Diese Informationen wurden aus anderen&lt;br /&gt;
Erweiterungen zusammengetragen, speziell aus der Erweiterung tt_board.&lt;br /&gt;
Typoscript&lt;br /&gt;
Zuerst erstelle in der Datei &amp;#039;ext_typoscript_setup.txt&amp;#039; eine Eigenschaft, die deiner Erweiterung mitteilt, ob&lt;br /&gt;
caching genutzt werden soll oder nicht:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plugin.tx_myextension_pi1 {&lt;br /&gt;
allowCaching = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn das später auf 0 gesetzt wird, werden diese Seiten nicht mehr gecached.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vorbereitung&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bereite in der main() Funktion den Typolink vor und konfiguriere das caching:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class tx_myextension_pi1 extends tslib_pibase {&lt;br /&gt;
...&lt;br /&gt;
var $allowCaching = &amp;quot;&amp;quot;;&lt;br /&gt;
function main($content,$conf) {&lt;br /&gt;
$this-&amp;gt;conf=$conf;&lt;br /&gt;
...&lt;br /&gt;
// Preconfigure the typolink&lt;br /&gt;
$this-&amp;gt;local_cObj = t3lib_div::makeInstance(&amp;quot;tslib_cObj&amp;quot;);&lt;br /&gt;
$this-&amp;gt;local_cObj-&amp;gt;setCurrentVal($GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;id);&lt;br /&gt;
$this-&amp;gt;typolink_conf = $this-&amp;gt;conf[&amp;quot;typolink.&amp;quot;];&lt;br /&gt;
$this-&amp;gt;typolink_conf[&amp;quot;parameter.&amp;quot;][&amp;quot;current&amp;quot;] = 1;&lt;br /&gt;
$this-&amp;gt;typolink_conf[&amp;quot;additionalParams&amp;quot;] =&lt;br /&gt;
$this-&amp;gt;cObj-&amp;gt;stdWrap($this-&amp;gt;typolink_conf[&amp;quot;additionalParams&amp;quot;],&lt;br /&gt;
$this-&amp;gt;typolink_conf[&amp;quot;additionalParams.&amp;quot;]);&lt;br /&gt;
unset($this-&amp;gt;typolink_conf[&amp;quot;additionalParams.&amp;quot;]);&lt;br /&gt;
// Configure caching&lt;br /&gt;
$this-&amp;gt;allowCaching = $this-&amp;gt;conf[&amp;quot;allowCaching&amp;quot;]?1:0;&lt;br /&gt;
if (!$this-&amp;gt;allowCaching) {&lt;br /&gt;
$GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;set_no_cache();&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
Links erstellen&lt;br /&gt;
Um nun Links in der Erweiterung zu erstellen, benutze das folgende Code Fragment:&lt;br /&gt;
$temp_conf = $this-&amp;gt;typolink_conf;&lt;br /&gt;
$temp_conf[&amp;quot;additionalParams&amp;quot;] .= &amp;quot;&amp;amp;tx_myextension_pi1[key]=value&amp;quot;;&lt;br /&gt;
$temp_conf[&amp;quot;useCacheHash&amp;quot;] = $this-&amp;gt;allowCaching;&lt;br /&gt;
$temp_conf[&amp;quot;no_cache&amp;quot;] = !$this-&amp;gt;allowCaching;&lt;br /&gt;
$the_link = $this-&amp;gt;local_cObj-&amp;gt;typolink(&amp;quot;Linktext&amp;quot;, $temp_conf);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann man &amp;#039;$the_link&amp;#039; zu der Ausgabe hinzufügen. Das &amp;#039;$temp_conf&amp;#039; Array kann man mit allen&lt;br /&gt;
Eigenschaften des typolink Objektes erweitern.&lt;br /&gt;
&lt;br /&gt;
Tutorial by typo3.hachmeister.org&lt;br /&gt;
Von:fruit-lab.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Datei Uploads in Backend Extensions ==&lt;br /&gt;
Feld im Kickstarter anlegen. in der tca.php kannst du den uploadfolder festlegen.&lt;br /&gt;
&lt;br /&gt;
Komplizierter wirds in folgendem Fall (aus typo3.net 12-2007)&lt;br /&gt;
&lt;br /&gt;
 stimmt schon, dass man da den ordner ändern kann, aber was wenn ich nicht alle dateien in einen ordner speichern will?&lt;br /&gt;
ich brauche 2 ordner. einen für normale downloads und in den anderen würden die dateien reinkommen, die kostenpflichtig downzuloaden sind. diesen ordner muss ich also per htaccess schützen. darum wärs nötig, dass der upload-ordner für den späteren redakteur frei wählbar, oder zumindest 2 ordner auswählbar sind.&lt;br /&gt;
&lt;br /&gt;
irgendwelche ideen?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
alles kein Problem.&lt;br /&gt;
&lt;br /&gt;
Man kann in der ext_emconf.php unter createDirs die benötigten Verzeichnisse angeben.&lt;br /&gt;
Für Fileupload gibts auch einige Typofunktionen die man nutzen kann, so helfen einem folgende Klassen weiter:&lt;br /&gt;
t3lib_basicFileFunctions&lt;br /&gt;
t3lib_extFileFunctions&lt;br /&gt;
&lt;br /&gt;
== Debug Methode ==&lt;br /&gt;
Typo3 | Debug Methode :: Hilfe bei der Programmierung&lt;br /&gt;
&lt;br /&gt;
Wenn man eine eigene Extension schreibt benutzt man zum größten Teil Array, und um den Überblick zu&lt;br /&gt;
behalten was nach den ganzen schritten in einem Array noch so drin steht hat man die möglichkeit mit einer Funktion das Array schön und sauber in einer tabelle anzeigen zu lassen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$data = array(&amp;quot;Name&amp;quot; =&amp;gt; &amp;quot;Peter KeineAhnung&amp;quot;, &amp;quot;Alter&amp;quot; =&amp;gt; 22, &amp;quot;Wohnort&amp;quot; =&amp;gt; &amp;quot;Ratingen&amp;quot;);&lt;br /&gt;
echo t3lib_div::debug($data);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ergebnis:&lt;br /&gt;
&lt;br /&gt;
[[Bild:TS_debug01.gif]]&lt;br /&gt;
&lt;br /&gt;
je nach devIPMask Einstellungen ist auch nur&lt;br /&gt;
 debug($sonstwas);&lt;br /&gt;
nützlich, vor allem wenn ein Kundenprojekt Online isteinfach im Installtool und devIpMask deine IP eingeben und dann mit debug($sonstwas); arbeiten, so kannst nur du den debug sehen und nicht irgendwelche User die grade auf der Site sind.&lt;br /&gt;
&lt;br /&gt;
Kleiner Zusatz Tip:&lt;br /&gt;
&lt;br /&gt;
Ihr lasst euch gleichzeitig mehrere Debugs ausgeben und verliert den überblick welcher debug welcher ist...&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Ihr lasst euch ein Array vor einer funktion debugen und anschliessend...&lt;br /&gt;
da habt ihr dann die möglichkeit euerem Debug einen Namen zu geben..&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$data = array(&amp;quot;Name&amp;quot; =&amp;gt; &amp;quot;Peter KeineAhnung&amp;quot;, &amp;quot;Alter&amp;quot; =&amp;gt; 22, &amp;quot;Wohnort&amp;quot; =&amp;gt; &amp;quot;Ratingen&amp;quot;);&lt;br /&gt;
echo t3lib_div::debug($data,&amp;#039;Array vorher&amp;#039;);&lt;br /&gt;
$data[&amp;#039;Name&amp;#039;] = &amp;#039;T.uX&amp;#039;;&lt;br /&gt;
$data[&amp;#039;Alter&amp;#039;] = 32;&lt;br /&gt;
echo t3lib_div::debug($data,&amp;#039;Array nachher&amp;#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ergebnis:&lt;br /&gt;
&lt;br /&gt;
[[Bild:TS_debug02.gif]]&lt;br /&gt;
&lt;br /&gt;
Hinweis:&lt;br /&gt;
läst du dir eine Variable im debug ausgeben erscheint [b]|debug|[/b]. das funzt nur mit Arrays ;-)&lt;br /&gt;
Auch bei der Verwendung der integrierten DB-Abstrktionsschicht können eine Reihe von Fehlern auftreten,&lt;br /&gt;
die teilweise nur sehr magere Fehlermeldungen produzieren. Um eine etwas explizitere Fehlerausgabe zu&lt;br /&gt;
erzwingen sollte man folgende Zeile in seine Extension integrieren*:&lt;br /&gt;
$GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;debugOutput = true;&lt;br /&gt;
&lt;br /&gt;
So wird z.B. das SQL-Stement Ausgegeben, das zu einem Fehler geführt hat.&lt;br /&gt;
Tutorial by typo3.kj187.de&lt;br /&gt;
&lt;br /&gt;
== PHP-Skripte einbinden ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== mit PHP_SCRIPT ===&lt;br /&gt;
&lt;br /&gt;
Im Typo Script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################&lt;br /&gt;
### temporäres Test Script ###&lt;br /&gt;
##############################&lt;br /&gt;
&lt;br /&gt;
temp.phpScript = PHP_SCRIPT&lt;br /&gt;
temp.phpScript {&lt;br /&gt;
   file = demo/test.inc.php&lt;br /&gt;
   myVerySpecialOwnParameter = Hallo Welt&lt;br /&gt;
   myParamArray {&lt;br /&gt;
      a = 2&lt;br /&gt;
      b = 5&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Im Skript text.inc.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Use the debug-function to view the config&lt;br /&gt;
// array $conf given by TypoScript:&lt;br /&gt;
debug( $conf );&lt;br /&gt;
&lt;br /&gt;
$contentArr[] = &amp;quot;Test&amp;quot;;&lt;br /&gt;
$contentArr[] = $conf[&amp;#039;file&amp;#039;];&lt;br /&gt;
$contentArr[] = $conf[&amp;#039;myVerySpecialOwnParameter&amp;#039;];&lt;br /&gt;
$contentArr[] = implode( $conf[&amp;#039;myParamArray.&amp;#039;], &amp;#039;, &amp;#039; );&lt;br /&gt;
&lt;br /&gt;
// Put all your output to $content,&lt;br /&gt;
// that TYPO3 will display for you:&lt;br /&gt;
$content = implode( $contentArr, &amp;#039;&amp;lt; br /&amp;gt;&amp;#039; );&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mit PHP_SCRIPT_EXT ===&lt;br /&gt;
Typo3 | Externe PHP Scripte einbinden&lt;br /&gt;
&lt;br /&gt;
Haben Sie ihr Projekt auf Typo3 umgestellt und wollen dennoch ihre eigenen PHP-Scripte verwenden? Dann machen Sie folgendes.&lt;br /&gt;
&lt;br /&gt;
Schreiben Sie in das SETUP Feld des Templates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tt_content.script = CASE&lt;br /&gt;
tt_content.script {&lt;br /&gt;
key.field = select_key&lt;br /&gt;
test = PHP_SCRIPT_EXT&lt;br /&gt;
test.file = fileadmin/dein_script.php&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um das Script jetzt als Contentelement in die Seite einzubinden, legen Sie einen neuen Seiteninhalt an. Wechseln Sie von Typ = Text auf Typ = Skript. In das CODE Feld müssen Sie jetzt nur noch test eintragen und sie sind fertig. &lt;br /&gt;
&lt;br /&gt;
Dies ist die einfachste Methode. Die Ausgabe des Scripts wird aber nicht in den Cache aufgenommen! Diese Funktion wird leider nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
Tutorial by typo3.kj187.de&lt;br /&gt;
&lt;br /&gt;
Anmerkung Steff: Für die Cache Funktion kann man z.B. eine Einfache Extension basteln.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
===Einträge aus Bildausrichtungen im Backend entfernen===&lt;br /&gt;
aus cron_cssstyledimgtext&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
if (!defined (&amp;#039;TYPO3_MODE&amp;#039;))     die (&amp;#039;Access denied.&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
t3lib_extMgm::addPItoST43($_EXTKEY,&amp;#039;pi1/class.tx_croncssstyledimgtext_pi1.php&amp;#039;,&amp;#039;_pi1&amp;#039;,&amp;#039;&amp;#039;,1);&lt;br /&gt;
&lt;br /&gt;
$_EXTCONF = unserialize($_EXTCONF);&lt;br /&gt;
if ($_EXTCONF[&amp;#039;addPageTS&amp;#039;])	{&lt;br /&gt;
	t3lib_extMgm::addPageTSConfig(&amp;#039;&lt;br /&gt;
TCEFORM.tt_content.imageorient.types.image.removeItems = 8,9,10,17,18,25,26&lt;br /&gt;
&amp;#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$TYPO3_CONF_VARS[&amp;#039;FE&amp;#039;][&amp;#039;XCLASS&amp;#039;][&amp;#039;tslib/class.tslib_content.php&amp;#039;]=t3lib_extMgm::extPath($_EXTKEY).&amp;#039;class.ux_tslib_content.php&amp;#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bilder in eigener Extension rendern ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel benutzte Variablen:&lt;br /&gt;
 $BildAdresse&lt;br /&gt;
 $ParameterFuerImgTag&lt;br /&gt;
 $Alttext&lt;br /&gt;
&lt;br /&gt;
In PHP-Datei der Extension:&lt;br /&gt;
&lt;br /&gt;
 $this-&amp;gt;conf[&amp;quot;imageBeispiel.&amp;quot;][&amp;quot;file&amp;quot;]=&amp;quot;uploads/pics/&amp;quot;.$BildAdresse;&lt;br /&gt;
 $this-&amp;gt;conf[&amp;quot;imageBeispiel.&amp;quot;][&amp;quot;params&amp;quot;]=$ParameterFuerImgTag;&lt;br /&gt;
 $this-&amp;gt;conf[&amp;quot;imageBeispiel.&amp;quot;][&amp;quot;altText&amp;quot;]=$Alttext;&lt;br /&gt;
 $Bild=$this-&amp;gt;cObj-&amp;gt;IMAGE($this-&amp;gt;conf[&amp;quot;imageBeispiel.&amp;quot;]);&lt;br /&gt;
 $Content.=$Bild;&lt;br /&gt;
&lt;br /&gt;
In Typoscript Setup&lt;br /&gt;
&lt;br /&gt;
 plugin.tx_hoTest_pi1 {     //hier Plugin-Name&lt;br /&gt;
 imageArtikel{&lt;br /&gt;
     file.maxW = {$ho_Test.BildWidthNews}  &lt;br /&gt;
     imageLinkWrap = 1&lt;br /&gt;
     imageLinkWrap {&lt;br /&gt;
       enable = 1&lt;br /&gt;
       bodyTag = &amp;lt;BODY bgColor=white&amp;gt;&lt;br /&gt;
       wrap = |&lt;br /&gt;
       width = 400m&lt;br /&gt;
       height = 400&lt;br /&gt;
       JSwindow = 1&lt;br /&gt;
       JSwindow.newWindow = 1&lt;br /&gt;
       JSwindow.expand = 17,20&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Der Wert {$ho_Test.BildWidthNews} kann aus Constants übernommen werden.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch&lt;br /&gt;
Konstanten von Constants im Setup verwenden&lt;br /&gt;
und&lt;br /&gt;
Konstanten für Constant-Editor bereitstellen&lt;br /&gt;
&lt;br /&gt;
(aus www.easy-office4you.de/ 10.1.2006)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Spalten der Seiten umbenennen ===&lt;br /&gt;
&lt;br /&gt;
Um die Spalten der Seite im Backend beliebig umzubenennen und/oder zusätzliche eigene Spalten zu verwenden, muß die Extension zed_more_columns installiert werden und dann in der Datei ext_tables.php die Spalten-Namen eingeben werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 $TCA[&amp;quot;tt_content&amp;quot;][&amp;quot;columns&amp;quot;][&amp;quot;colPos&amp;quot;][&amp;quot;config&amp;quot;][&amp;quot;items&amp;quot;] = array (&lt;br /&gt;
 &amp;quot;0&amp;quot; =&amp;gt; array (&amp;quot;Mitte||Mitte||||||||&amp;quot;,&amp;quot;0&amp;quot;),&lt;br /&gt;
 &amp;quot;1&amp;quot; =&amp;gt; array (&amp;quot;Links||Links||||||||&amp;quot;,&amp;quot;1&amp;quot;),&lt;br /&gt;
 &amp;quot;2&amp;quot; =&amp;gt; array (&amp;quot;Rechts||Rechts||||||||&amp;quot;,&amp;quot;2&amp;quot;),&lt;br /&gt;
 &amp;quot;3&amp;quot; =&amp;gt; array (&amp;quot;Teaser||Teaser||||||||&amp;quot;,&amp;quot;3&amp;quot;),&lt;br /&gt;
 &amp;quot;4&amp;quot; =&amp;gt; array (&amp;quot;Fusszeile||Fusszeile||||||||&amp;quot;,&amp;quot;4&amp;quot;)&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
== Bei Extension dafür sorgen, daß im Backend kein Sortierungs-Button entsteht ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In der Datei ext_tables.php der Extension folgende Zeile ändern&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;sortby&amp;quot; =&amp;gt; &amp;quot;name&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
ändern in&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;default_sortby&amp;quot; =&amp;gt; &amp;quot;ORDER BY name&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
Anstatt &amp;quot;name&amp;quot; kann natürlich auch ein anderes Suchkriterium verwendet werden.&lt;/div&gt;</summary>
		<author><name>91.32.70.220</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Extensions_programmieren&amp;diff=1244</id>
		<title>Typo3 - Extensions programmieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Extensions_programmieren&amp;diff=1244"/>
		<updated>2008-01-08T09:00:15Z</updated>

		<summary type="html">&lt;p&gt;91.32.70.220: /* Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Links:&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/documentation/api/&lt;br /&gt;
== Templates ==&lt;br /&gt;
[[Typo3 Extension Developer Templates]]&lt;br /&gt;
== Extensions programmieren - wie fange ich an ? ==&lt;br /&gt;
Was möchtest du tun?&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ein vorhandenes Inhaltselement verändern, z.B. Felder hinzufügen oder ein neues Erstellen.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Typo3 Extensions - Inhaltstypen anlegen und bearbeiten]]&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel dafür ist die Extension metatags die den Inhaltselementen Text mit Bild und Bild zusätzliche Felder für Alt und Title Tag hinzufügt.&lt;br /&gt;
&lt;br /&gt;
== Extensions Programmieren in der Praxis ==&lt;br /&gt;
[[Typo3 Extensions - ein Frontend Plugin Programmieren]]&lt;br /&gt;
&lt;br /&gt;
[[Typo3 Extensions mit IRRE]]&lt;br /&gt;
&lt;br /&gt;
Das IRRE Konzept hilft beim erstellen von Extensions mit &amp;quot;echten&amp;quot; relationalen Datenbankabfragen&lt;br /&gt;
&lt;br /&gt;
[[Typo3 Extensions mit FlexForms]]&lt;br /&gt;
&lt;br /&gt;
== Wichtige Variablen ==&lt;br /&gt;
 $_EXTKEY &lt;br /&gt;
bzw. im Array...&lt;br /&gt;
Enthält den Extension Key.  Immer die Variable benutzen, dann kann man den Code leichte wieder verwenden.&lt;br /&gt;
 $TYPO3_CONF_VARS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wie arbeitet eine Extension ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Laden:&amp;#039;&amp;#039;&amp;#039; Extension Manager (EM) ruft &amp;#039;&amp;#039;ext_emconf.php&amp;#039;&amp;#039; (enthält nur das Array: $EM_CONF[$_EXTKEY]) bei allen Extensions auf die in der localconf.php aufgeführt sind.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Aufruf von Backend oder Frontend:&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039; wird ausgeführt (oder eine gecachete Kopie) In dieser wird die /typo3conf/localconf.php erweitert.&lt;br /&gt;
Funktion: weitere Klassen includieren (require_once())&lt;br /&gt;
&lt;br /&gt;
=== Formulare im Backend ===&lt;br /&gt;
Das &amp;#039;&amp;#039;&amp;#039;$TCA&amp;#039;&amp;#039;&amp;#039; (Table Configuration Array) bestimmt welche Formularfelder verwendet werden.&lt;br /&gt;
Das Array ist in ext_tables.php(Bereiche: ctrl und feinterface s.u.) und tca.php gespeichert&lt;br /&gt;
&lt;br /&gt;
* Jeder Eintrag im $TCA ist an eine Datenbanktabelle geknüpft&lt;br /&gt;
* Der erste Index ist der Tabellenname.&lt;br /&gt;
* Im zweiten Index gibt es 6 Bereiche: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ctrl -&amp;gt; Informationen zur Tabelle&lt;br /&gt;
 interface -&amp;gt; Konfiguration für die Auflistung und Darstellung im Backend&lt;br /&gt;
 feInterface -&amp;gt; Eigenschaften für das Frontend Editing&lt;br /&gt;
 columns -&amp;gt; Informationen zu den Feldtypen der Tabelle und der Verarbeitung der Daten (zweiter Index ist hier der Spaltenname)&lt;br /&gt;
 types -&amp;gt; legt fest welche der in columns definierten Spalten dargestellt werden und in welcher Reihenfolge, &lt;br /&gt;
          außerdem Zusatzinfo wie alternative Feldbezeichnung, Palettennummer, style codes...&lt;br /&gt;
 palettes -&amp;gt; Zum Zusammenfassen von mehreren Eingabefeldern, Zusammenstellungen wiederverwenden, Hilfsfelder definieren&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Daten bearbeiten mit TCE und TCEforms ===&lt;br /&gt;
Die im $TCA definierten Daten müssen in irgend einer Form bearbeitet werden. Ein umfangreiches Modul dazu befindet sich  in der Extension CMS (typo3/sysext/cms/layout/db_layout.php. DDas Modul greift auf die &amp;#039;&amp;#039;&amp;#039;Typo3 Core Engine (TCE)&amp;#039;&amp;#039;&amp;#039; zurück, die zum Verarbeiten und Speichern von Daten dient. Die &amp;#039;&amp;#039;&amp;#039;Formulare werden mit der Klasse TCEforms&amp;#039;&amp;#039;&amp;#039; erzeugt. Bearbeitet wird hierbei im Backend.&lt;br /&gt;
&lt;br /&gt;
Immer dann, wenn man die &amp;#039;&amp;#039;&amp;#039;im $TCA eingetragenen Tabellen über Eingabemasken manipulieren&amp;#039;&amp;#039;&amp;#039; will ist des sinnvoll die TCE zu nutzen.&lt;br /&gt;
&lt;br /&gt;
 t3lib_TCEmain -&amp;gt; t3lib/class.t3lib_tce-main.php&lt;br /&gt;
 t3lib_TCEforms -&amp;gt; TCEforms&lt;br /&gt;
&lt;br /&gt;
==== Einsatz in Extensions ====&lt;br /&gt;
Instanz von t3lib_TCEmain erzeugen:&lt;br /&gt;
 require_once(PATH_t3lib.&amp;quot;class.t3lib_tcemain.php&amp;quot;);&lt;br /&gt;
 $tce=t3lib_div::makeInstance(&amp;#039;t3lib_TCEmain&amp;#039;);&lt;br /&gt;
Arrays für Daten und Kommandos erzeugen:&lt;br /&gt;
 $data[tabelle][uid][feld] = wert&lt;br /&gt;
um neue Daten zu schreiben bevor man eine uid hat belegt man uid mit NEW und einem Zufallsstring z.B. NEWo1amh&lt;br /&gt;
 $cmd[tabelle][uid][befehl] = wert&lt;br /&gt;
dabei stehen verschiedene Befehle zur Verfügung:&lt;br /&gt;
 copy, move, delete, localize, version, new&lt;br /&gt;
Die beiden Arrays werden dann mittels &lt;br /&gt;
 $tce-&amp;gt;start($data,$cmd) &lt;br /&gt;
an die TCE übergeben und von &lt;br /&gt;
$tce-&amp;gt;process_cmdmap() &lt;br /&gt;
abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Wie kann ich eine eigene Extension debuggen? ==&lt;br /&gt;
=== Hilfreiche Extensions zur Entwicklung von Extensions ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;devlog&amp;#039;&amp;#039;&amp;#039; -&amp;gt; schreibt log Einträge in eine Datenbanktabelle. Dazu ruft man an in seiner Extension die Funktion TODO auf und übergibt die Werte die man loggen will.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Extension Development Evaluator  (extdeveval) &amp;#039;&amp;#039;&amp;#039; -&amp;gt; Referenzen aufrufen, Autmatisch Funktionsinfos schreiben u.v.m.&lt;br /&gt;
	&lt;br /&gt;
=== permalink ===&lt;br /&gt;
Wenn man eine eigene Extension schreibt benutzt man zum größten Teil Array, und um den Überblick zu behalten was nach den ganzen schritten in einem Array noch so drin steht hat man die möglichkeit mit einer Funktion das Array schön und sauber in einer tabelle anzeigen zu lassen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
PHP-Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$data = array(&amp;quot;Name&amp;quot; =&amp;gt; &amp;quot;Peter KeineAhnung&amp;quot;, &amp;quot;Alter&amp;quot; =&amp;gt; 22, &amp;quot;Wohnort&amp;quot; =&amp;gt; &amp;quot;Ratingen&amp;quot;);&lt;br /&gt;
t3lib_div::debug($data);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ergebnis:&lt;br /&gt;
&lt;br /&gt;
je nach devIPMask Einstellungen ist auch nur&lt;br /&gt;
&lt;br /&gt;
PHP-Code:&lt;br /&gt;
&lt;br /&gt;
 debug();&lt;br /&gt;
&lt;br /&gt;
nützlich, vor allem wenn ein Kundenprojekt Online ist einfach im Installtool und devIpMask deine IP eingeben und dann mit debug(); arbeiten, so kannst nur du den debug sehen und nicht irgendwelche User die grade auf der Site sind.&lt;br /&gt;
&lt;br /&gt;
Kleiner Zusatz Tip:&lt;br /&gt;
&lt;br /&gt;
Ihr lasst euch gleichzeitig mehrere Debugs ausgeben und verliert den überblick welcher debug welcher ist... Beispiel Ihr lasst euch ein Array vor einer funktion debugen und anschliessend...&lt;br /&gt;
&lt;br /&gt;
da habt ihr dann die möglichkeit euerem Debug einen Namen zu geben..&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
PHP-Code:&lt;br /&gt;
 $data = array(&amp;quot;Name&amp;quot; =&amp;gt; &amp;quot;Peter KeineAhnung&amp;quot;, &amp;quot;Alter&amp;quot; =&amp;gt; 22);&lt;br /&gt;
 t3lib_div::debug(,&amp;#039;Array vorher&amp;#039;);&lt;br /&gt;
        &lt;br /&gt;
 $data[&amp;#039;Name&amp;#039;] = &amp;#039;T.uX&amp;#039;;&lt;br /&gt;
 $data[&amp;#039;Alter&amp;#039;] = 32;&lt;br /&gt;
&lt;br /&gt;
 t3lib_div::debug(,&amp;#039;Array nachher&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
Auch bei der Verwendung der integrierten DB-Abstraktionsschicht können eine Reihe von Fehlern auftreten, die teilweise nur sehr magere Fehlermeldungen produzieren. Um eine etwas explizitere Fehlerausgabe zu erzwingen sollte man folgende Zeile in seine Extension integrieren*:&lt;br /&gt;
&lt;br /&gt;
PHP-Code:&lt;br /&gt;
 $GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;debugOutput = true;&lt;br /&gt;
So wird z.B. das SQL-Stement Ausgegeben, das zu einem Fehler geführt hat.&lt;br /&gt;
&lt;br /&gt;
== Datenbankabfrage in Extensions ==&lt;br /&gt;
[[TYPO3 - Datenbankabfragen in Extensions]]&lt;br /&gt;
&lt;br /&gt;
== Struktur einer Extension ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ext_emconf.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Informationen und Metadaten zur Extension. Etwa die Infos die im Kickstarter unter General Info stehen.&lt;br /&gt;
&lt;br /&gt;
* Root-Verzeichnis&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039; Enthält &amp;#039;&amp;#039;&amp;#039;Konfigurationsdaten&amp;#039;&amp;#039;&amp;#039; ($TYPO3_CONF_VARS) für das Backend und Frontend. Hier kann über die Extension API auch &amp;#039;&amp;#039;&amp;#039;TypoScript&amp;#039;&amp;#039;&amp;#039; eingebunden werden.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_tables.php&amp;#039;&amp;#039;&amp;#039; Konfiguration von &amp;#039;&amp;#039;&amp;#039;Datenbanktabellen&amp;#039;&amp;#039;&amp;#039;. Plugins und Module über die Extension API einbinden. (Alles über Kickstarter)&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_tables.sql&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;SQL-Daten&amp;#039;&amp;#039;&amp;#039; für die Tabellendefinition. Die Auswertung erfolgt über den Extension Manager und das Install-Tool.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_tables_static+adt.sql&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;SQL-Tabellendefinition&amp;#039;&amp;#039;&amp;#039; inkl. Daten. Z.B. für statische Daten (Länderinfos etc.)Die Tabellen müssen zusätzlich in ext_tables.sql definiert sein.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_typoscript_*.txt&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;Globaler TypoScript-Code&amp;#039;&amp;#039;&amp;#039;. Steht nicht üver Template-Datensätze zur Auswahl (siehe /static)&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;ext_conf_template.txt&amp;#039;&amp;#039;&amp;#039; Hier werden &amp;#039;&amp;#039;&amp;#039;Optionen zur Konfiguration&amp;#039;&amp;#039;&amp;#039; angelegt, die der Benutzer im Extensionmanager einstellen kann.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;*icon*.gif&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;Symbol-Dateien&amp;#039;&amp;#039;&amp;#039; für Extension,DB-Tabellen,Plugins, Module...&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;locallang*.php&amp;#039;&amp;#039;&amp;#039; Texte für die &amp;#039;&amp;#039;&amp;#039;Lokalisierung&amp;#039;&amp;#039;&amp;#039; in verschiedenen Sprachen&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;class.ext_update.php&amp;#039;&amp;#039;&amp;#039; Funktionen für ein &amp;#039;&amp;#039;&amp;#039;Update der Extension&amp;#039;&amp;#039;&amp;#039; (Beispiel siehe newloginbox).&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;pi1/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für &amp;#039;&amp;#039;&amp;#039;Skripte und Daten&amp;#039;&amp;#039;&amp;#039; des Plugin&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;class*.php&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;PHP-Klassen&amp;#039;&amp;#039;&amp;#039; z.B. für Plugins oder Submodule&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;cm1/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für Dateien die das &amp;#039;&amp;#039;&amp;#039;Kontext-Menü&amp;#039;&amp;#039;&amp;#039; betreffen&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;mod1/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für ein Modul.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;conf.php&amp;#039;&amp;#039;&amp;#039; Konfigurationsdatei für ein &amp;#039;&amp;#039;&amp;#039;Modul&amp;#039;&amp;#039;&amp;#039; zum einbinden ins Backend.&lt;br /&gt;
**&amp;#039;&amp;#039;&amp;#039;index.php&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;Hauptscript eines Moduls&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;modfunc1/&amp;#039;&amp;#039;&amp;#039; Skripte und Daten für &amp;#039;&amp;#039;&amp;#039;Submodul-Funktionen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;static/&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;TypoScript-Template&amp;#039;&amp;#039;&amp;#039;-Dateien. Diese werden über die Extension-API eingebunden und stehen dann in Template-Datensätzen, ähnlich den Standard Templates zur Auswahl.&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;sv1/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für &amp;#039;&amp;#039;&amp;#039;Services&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;res/&amp;#039;&amp;#039;&amp;#039; Verzeichnis für beliebige &amp;#039;recourcen&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;doc/&amp;#039;&amp;#039;&amp;#039; Verzeichnis der &amp;#039;&amp;#039;&amp;#039;Dokumentation&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Wo werden Extensions installiert ? ==&lt;br /&gt;
===typo3/sysext/ (System)===&lt;br /&gt;
System Extensions wie cms und lang. Hier können keine Extensions mit dem Extension Manager installiert werden.&lt;br /&gt;
===typo3/ext/ - globale Extensions (Global) ===&lt;br /&gt;
Z.B. diese die von Typo3 mitgeliefert werden. Mit der Option allowGlobalInstall kann man die Installation in dieses Verzeichnis erlauben. Das ist dann nicht sinnvoll wenn sich mehrere Typo3 WEbsites eine Installation teilen, weil es hier zu Versionskonflikten kommen kann.&lt;br /&gt;
===typo3conf/ext - lokale Extensions (Local)===&lt;br /&gt;
Hier werden normalerweise alle Extensions installiert. Die Lokale Installation hat immer Vorang vor einer globalen.&lt;br /&gt;
&lt;br /&gt;
== Typolinks richtig in Extensions einsetzen ==&lt;br /&gt;
&lt;br /&gt;
In diesem kurzem Tutorial möchte ich zeigen, wie man Typolinks in eigenen Erweiterungen erstellt, die das&lt;br /&gt;
Feature &amp;#039;Simulate Static Documents&amp;#039; unterstützen und eine Ausgabe erstellen, die von Typo3 gecached wird&lt;br /&gt;
und so auch mit der Indexed search verwendet werden können. Diese Informationen wurden aus anderen&lt;br /&gt;
Erweiterungen zusammengetragen, speziell aus der Erweiterung tt_board.&lt;br /&gt;
Typoscript&lt;br /&gt;
Zuerst erstelle in der Datei &amp;#039;ext_typoscript_setup.txt&amp;#039; eine Eigenschaft, die deiner Erweiterung mitteilt, ob&lt;br /&gt;
caching genutzt werden soll oder nicht:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plugin.tx_myextension_pi1 {&lt;br /&gt;
allowCaching = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn das später auf 0 gesetzt wird, werden diese Seiten nicht mehr gecached.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vorbereitung&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bereite in der main() Funktion den Typolink vor und konfiguriere das caching:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class tx_myextension_pi1 extends tslib_pibase {&lt;br /&gt;
...&lt;br /&gt;
var $allowCaching = &amp;quot;&amp;quot;;&lt;br /&gt;
function main($content,$conf) {&lt;br /&gt;
$this-&amp;gt;conf=$conf;&lt;br /&gt;
...&lt;br /&gt;
// Preconfigure the typolink&lt;br /&gt;
$this-&amp;gt;local_cObj = t3lib_div::makeInstance(&amp;quot;tslib_cObj&amp;quot;);&lt;br /&gt;
$this-&amp;gt;local_cObj-&amp;gt;setCurrentVal($GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;id);&lt;br /&gt;
$this-&amp;gt;typolink_conf = $this-&amp;gt;conf[&amp;quot;typolink.&amp;quot;];&lt;br /&gt;
$this-&amp;gt;typolink_conf[&amp;quot;parameter.&amp;quot;][&amp;quot;current&amp;quot;] = 1;&lt;br /&gt;
$this-&amp;gt;typolink_conf[&amp;quot;additionalParams&amp;quot;] =&lt;br /&gt;
$this-&amp;gt;cObj-&amp;gt;stdWrap($this-&amp;gt;typolink_conf[&amp;quot;additionalParams&amp;quot;],&lt;br /&gt;
$this-&amp;gt;typolink_conf[&amp;quot;additionalParams.&amp;quot;]);&lt;br /&gt;
unset($this-&amp;gt;typolink_conf[&amp;quot;additionalParams.&amp;quot;]);&lt;br /&gt;
// Configure caching&lt;br /&gt;
$this-&amp;gt;allowCaching = $this-&amp;gt;conf[&amp;quot;allowCaching&amp;quot;]?1:0;&lt;br /&gt;
if (!$this-&amp;gt;allowCaching) {&lt;br /&gt;
$GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;set_no_cache();&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
Links erstellen&lt;br /&gt;
Um nun Links in der Erweiterung zu erstellen, benutze das folgende Code Fragment:&lt;br /&gt;
$temp_conf = $this-&amp;gt;typolink_conf;&lt;br /&gt;
$temp_conf[&amp;quot;additionalParams&amp;quot;] .= &amp;quot;&amp;amp;tx_myextension_pi1[key]=value&amp;quot;;&lt;br /&gt;
$temp_conf[&amp;quot;useCacheHash&amp;quot;] = $this-&amp;gt;allowCaching;&lt;br /&gt;
$temp_conf[&amp;quot;no_cache&amp;quot;] = !$this-&amp;gt;allowCaching;&lt;br /&gt;
$the_link = $this-&amp;gt;local_cObj-&amp;gt;typolink(&amp;quot;Linktext&amp;quot;, $temp_conf);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann man &amp;#039;$the_link&amp;#039; zu der Ausgabe hinzufügen. Das &amp;#039;$temp_conf&amp;#039; Array kann man mit allen&lt;br /&gt;
Eigenschaften des typolink Objektes erweitern.&lt;br /&gt;
&lt;br /&gt;
Tutorial by typo3.hachmeister.org&lt;br /&gt;
Von:fruit-lab.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Datei Uploads in Backend Extensions ==&lt;br /&gt;
Feld im Kickstarter anlegen. in der tca.php kannst du den uploadfolder festlegen.&lt;br /&gt;
&lt;br /&gt;
Komplizierter wirds in folgendem Fall (aus typo3.net 12-2007)&lt;br /&gt;
&lt;br /&gt;
 stimmt schon, dass man da den ordner ändern kann, aber was wenn ich nicht alle dateien in einen ordner speichern will?&lt;br /&gt;
ich brauche 2 ordner. einen für normale downloads und in den anderen würden die dateien reinkommen, die kostenpflichtig downzuloaden sind. diesen ordner muss ich also per htaccess schützen. darum wärs nötig, dass der upload-ordner für den späteren redakteur frei wählbar, oder zumindest 2 ordner auswählbar sind.&lt;br /&gt;
&lt;br /&gt;
irgendwelche ideen?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
alles kein Problem.&lt;br /&gt;
&lt;br /&gt;
Man kann in der ext_emconf.php unter createDirs die benötigten Verzeichnisse angeben.&lt;br /&gt;
Für Fileupload gibts auch einige Typofunktionen die man nutzen kann, so helfen einem folgende Klassen weiter:&lt;br /&gt;
t3lib_basicFileFunctions&lt;br /&gt;
t3lib_extFileFunctions&lt;br /&gt;
&lt;br /&gt;
== Debug Methode ==&lt;br /&gt;
Typo3 | Debug Methode :: Hilfe bei der Programmierung&lt;br /&gt;
&lt;br /&gt;
Wenn man eine eigene Extension schreibt benutzt man zum größten Teil Array, und um den Überblick zu&lt;br /&gt;
behalten was nach den ganzen schritten in einem Array noch so drin steht hat man die möglichkeit mit einer Funktion das Array schön und sauber in einer tabelle anzeigen zu lassen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$data = array(&amp;quot;Name&amp;quot; =&amp;gt; &amp;quot;Peter KeineAhnung&amp;quot;, &amp;quot;Alter&amp;quot; =&amp;gt; 22, &amp;quot;Wohnort&amp;quot; =&amp;gt; &amp;quot;Ratingen&amp;quot;);&lt;br /&gt;
echo t3lib_div::debug($data);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ergebnis:&lt;br /&gt;
&lt;br /&gt;
[[Bild:TS_debug01.gif]]&lt;br /&gt;
&lt;br /&gt;
je nach devIPMask Einstellungen ist auch nur&lt;br /&gt;
 debug($sonstwas);&lt;br /&gt;
nützlich, vor allem wenn ein Kundenprojekt Online isteinfach im Installtool und devIpMask deine IP eingeben und dann mit debug($sonstwas); arbeiten, so kannst nur du den debug sehen und nicht irgendwelche User die grade auf der Site sind.&lt;br /&gt;
&lt;br /&gt;
Kleiner Zusatz Tip:&lt;br /&gt;
&lt;br /&gt;
Ihr lasst euch gleichzeitig mehrere Debugs ausgeben und verliert den überblick welcher debug welcher ist...&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Ihr lasst euch ein Array vor einer funktion debugen und anschliessend...&lt;br /&gt;
da habt ihr dann die möglichkeit euerem Debug einen Namen zu geben..&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$data = array(&amp;quot;Name&amp;quot; =&amp;gt; &amp;quot;Peter KeineAhnung&amp;quot;, &amp;quot;Alter&amp;quot; =&amp;gt; 22, &amp;quot;Wohnort&amp;quot; =&amp;gt; &amp;quot;Ratingen&amp;quot;);&lt;br /&gt;
echo t3lib_div::debug($data,&amp;#039;Array vorher&amp;#039;);&lt;br /&gt;
$data[&amp;#039;Name&amp;#039;] = &amp;#039;T.uX&amp;#039;;&lt;br /&gt;
$data[&amp;#039;Alter&amp;#039;] = 32;&lt;br /&gt;
echo t3lib_div::debug($data,&amp;#039;Array nachher&amp;#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ergebnis:&lt;br /&gt;
&lt;br /&gt;
[[Bild:TS_debug02.gif]]&lt;br /&gt;
&lt;br /&gt;
Hinweis:&lt;br /&gt;
läst du dir eine Variable im debug ausgeben erscheint [b]|debug|[/b]. das funzt nur mit Arrays ;-)&lt;br /&gt;
Auch bei der Verwendung der integrierten DB-Abstrktionsschicht können eine Reihe von Fehlern auftreten,&lt;br /&gt;
die teilweise nur sehr magere Fehlermeldungen produzieren. Um eine etwas explizitere Fehlerausgabe zu&lt;br /&gt;
erzwingen sollte man folgende Zeile in seine Extension integrieren*:&lt;br /&gt;
$GLOBALS[&amp;#039;TYPO3_DB&amp;#039;]-&amp;gt;debugOutput = true;&lt;br /&gt;
&lt;br /&gt;
So wird z.B. das SQL-Stement Ausgegeben, das zu einem Fehler geführt hat.&lt;br /&gt;
Tutorial by typo3.kj187.de&lt;br /&gt;
&lt;br /&gt;
== PHP-Skripte einbinden ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== mit PHP_SCRIPT ===&lt;br /&gt;
&lt;br /&gt;
Im Typo Script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##############################&lt;br /&gt;
### temporäres Test Script ###&lt;br /&gt;
##############################&lt;br /&gt;
&lt;br /&gt;
temp.phpScript = PHP_SCRIPT&lt;br /&gt;
temp.phpScript {&lt;br /&gt;
   file = demo/test.inc.php&lt;br /&gt;
   myVerySpecialOwnParameter = Hallo Welt&lt;br /&gt;
   myParamArray {&lt;br /&gt;
      a = 2&lt;br /&gt;
      b = 5&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Im Skript text.inc.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Use the debug-function to view the config&lt;br /&gt;
// array $conf given by TypoScript:&lt;br /&gt;
debug( $conf );&lt;br /&gt;
&lt;br /&gt;
$contentArr[] = &amp;quot;Test&amp;quot;;&lt;br /&gt;
$contentArr[] = $conf[&amp;#039;file&amp;#039;];&lt;br /&gt;
$contentArr[] = $conf[&amp;#039;myVerySpecialOwnParameter&amp;#039;];&lt;br /&gt;
$contentArr[] = implode( $conf[&amp;#039;myParamArray.&amp;#039;], &amp;#039;, &amp;#039; );&lt;br /&gt;
&lt;br /&gt;
// Put all your output to $content,&lt;br /&gt;
// that TYPO3 will display for you:&lt;br /&gt;
$content = implode( $contentArr, &amp;#039;&amp;lt; br /&amp;gt;&amp;#039; );&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mit PHP_SCRIPT_EXT ===&lt;br /&gt;
Typo3 | Externe PHP Scripte einbinden&lt;br /&gt;
&lt;br /&gt;
Haben Sie ihr Projekt auf Typo3 umgestellt und wollen dennoch ihre eigenen PHP-Scripte verwenden? Dann machen Sie folgendes.&lt;br /&gt;
&lt;br /&gt;
Schreiben Sie in das SETUP Feld des Templates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tt_content.script = CASE&lt;br /&gt;
tt_content.script {&lt;br /&gt;
key.field = select_key&lt;br /&gt;
test = PHP_SCRIPT_EXT&lt;br /&gt;
test.file = fileadmin/dein_script.php&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um das Script jetzt als Contentelement in die Seite einzubinden, legen Sie einen neuen Seiteninhalt an. Wechseln Sie von Typ = Text auf Typ = Skript. In das CODE Feld müssen Sie jetzt nur noch test eintragen und sie sind fertig. &lt;br /&gt;
&lt;br /&gt;
Dies ist die einfachste Methode. Die Ausgabe des Scripts wird aber nicht in den Cache aufgenommen! Diese Funktion wird leider nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
Tutorial by typo3.kj187.de&lt;br /&gt;
&lt;br /&gt;
Anmerkung Steff: Für die Cache Funktion kann man z.B. eine Einfache Extension basteln.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
===Einträge aus Bildausrichtungen im Backend entfernen===&lt;br /&gt;
aus cron_cssstyledimgtext&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
if (!defined (&amp;#039;TYPO3_MODE&amp;#039;))     die (&amp;#039;Access denied.&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
t3lib_extMgm::addPItoST43($_EXTKEY,&amp;#039;pi1/class.tx_croncssstyledimgtext_pi1.php&amp;#039;,&amp;#039;_pi1&amp;#039;,&amp;#039;&amp;#039;,1);&lt;br /&gt;
&lt;br /&gt;
$_EXTCONF = unserialize($_EXTCONF);&lt;br /&gt;
if ($_EXTCONF[&amp;#039;addPageTS&amp;#039;])	{&lt;br /&gt;
	t3lib_extMgm::addPageTSConfig(&amp;#039;&lt;br /&gt;
TCEFORM.tt_content.imageorient.types.image.removeItems = 8,9,10,17,18,25,26&lt;br /&gt;
&amp;#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$TYPO3_CONF_VARS[&amp;#039;FE&amp;#039;][&amp;#039;XCLASS&amp;#039;][&amp;#039;tslib/class.tslib_content.php&amp;#039;]=t3lib_extMgm::extPath($_EXTKEY).&amp;#039;class.ux_tslib_content.php&amp;#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bilder in eigener Extension rendern ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel benutzte Variablen:&lt;br /&gt;
 $BildAdresse&lt;br /&gt;
 $ParameterFuerImgTag&lt;br /&gt;
 $Alttext&lt;br /&gt;
&lt;br /&gt;
In PHP-Datei der Extension:&lt;br /&gt;
&lt;br /&gt;
 $this-&amp;gt;conf[&amp;quot;imageBeispiel.&amp;quot;][&amp;quot;file&amp;quot;]=&amp;quot;uploads/pics/&amp;quot;.$BildAdresse;&lt;br /&gt;
 $this-&amp;gt;conf[&amp;quot;imageBeispiel.&amp;quot;][&amp;quot;params&amp;quot;]=$ParameterFuerImgTag;&lt;br /&gt;
 $this-&amp;gt;conf[&amp;quot;imageBeispiel.&amp;quot;][&amp;quot;altText&amp;quot;]=$Alttext;&lt;br /&gt;
 $Bild=$this-&amp;gt;cObj-&amp;gt;IMAGE($this-&amp;gt;conf[&amp;quot;imageBeispiel.&amp;quot;]);&lt;br /&gt;
 $Content.=$Bild;&lt;br /&gt;
&lt;br /&gt;
In Typoscript Setup&lt;br /&gt;
&lt;br /&gt;
 plugin.tx_hoTest_pi1 {     //hier Plugin-Name&lt;br /&gt;
 imageArtikel{&lt;br /&gt;
     file.maxW = {$ho_Test.BildWidthNews}  &lt;br /&gt;
     imageLinkWrap = 1&lt;br /&gt;
     imageLinkWrap {&lt;br /&gt;
       enable = 1&lt;br /&gt;
       bodyTag = &amp;lt;BODY bgColor=white&amp;gt;&lt;br /&gt;
       wrap = |&lt;br /&gt;
       width = 400m&lt;br /&gt;
       height = 400&lt;br /&gt;
       JSwindow = 1&lt;br /&gt;
       JSwindow.newWindow = 1&lt;br /&gt;
       JSwindow.expand = 17,20&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Der Wert {$ho_Test.BildWidthNews} kann aus Constants übernommen werden.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch&lt;br /&gt;
Konstanten von Constants im Setup verwenden&lt;br /&gt;
und&lt;br /&gt;
Konstanten für Constant-Editor bereitstellen&lt;br /&gt;
&lt;br /&gt;
(aus www.easy-office4you.de/ 10.1.2006)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Spalten der Seiten umbenennen ===&lt;br /&gt;
&lt;br /&gt;
Um die Spalten der Seite im Backend beliebig umzubenennen und/oder zusätzliche eigene Spalten zu verwenden, muß die Extension zed_more_columns installiert werden und dann in der Datei ext_tables.php die Spalten-Namen eingeben werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 $TCA[&amp;quot;tt_content&amp;quot;][&amp;quot;columns&amp;quot;][&amp;quot;colPos&amp;quot;][&amp;quot;config&amp;quot;][&amp;quot;items&amp;quot;] = array (&lt;br /&gt;
 &amp;quot;0&amp;quot; =&amp;gt; array (&amp;quot;Mitte||Mitte||||||||&amp;quot;,&amp;quot;0&amp;quot;),&lt;br /&gt;
 &amp;quot;1&amp;quot; =&amp;gt; array (&amp;quot;Links||Links||||||||&amp;quot;,&amp;quot;1&amp;quot;),&lt;br /&gt;
 &amp;quot;2&amp;quot; =&amp;gt; array (&amp;quot;Rechts||Rechts||||||||&amp;quot;,&amp;quot;2&amp;quot;),&lt;br /&gt;
 &amp;quot;3&amp;quot; =&amp;gt; array (&amp;quot;Teaser||Teaser||||||||&amp;quot;,&amp;quot;3&amp;quot;),&lt;br /&gt;
 &amp;quot;4&amp;quot; =&amp;gt; array (&amp;quot;Fusszeile||Fusszeile||||||||&amp;quot;,&amp;quot;4&amp;quot;)&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
== Bei Extension dafür sorgen, daß im Backend kein Sortierungs-Button entsteht ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In der Datei ext_tables.php der Extension folgende Zeile ändern&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;sortby&amp;quot; =&amp;gt; &amp;quot;name&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
ändern in&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;default_sortby&amp;quot; =&amp;gt; &amp;quot;ORDER BY name&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
Anstatt &amp;quot;name&amp;quot; kann natürlich auch ein anderes Suchkriterium verwendet werden.&lt;/div&gt;</summary>
		<author><name>91.32.70.220</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_Extension:_pupmanager&amp;diff=1247</id>
		<title>Typo3 Extension: pupmanager</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_Extension:_pupmanager&amp;diff=1247"/>
		<updated>2008-01-08T08:54:03Z</updated>

		<summary type="html">&lt;p&gt;91.32.70.220: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ToDo:&lt;br /&gt;
&lt;br /&gt;
* Gruppennummer per TS vorkonfigurieren&lt;br /&gt;
* Gruppennummer generieren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. Pflichtfelder&lt;br /&gt;
Name, Vorname, Anschrift, Geburtsdatum, Passbild mit Formatsvorgaben&lt;br /&gt;
Waffenträger ja / nein&lt;br /&gt;
bei ja :  Vorgabe der Art der Waffe (Messer usw. )&lt;br /&gt;
Dekowaffe wäre zu streichen (gibt es nicht gem. Waffengesetz)&lt;br /&gt;
Bei Waffen nach § 27 Sprengstoffgesetz ja / nein&lt;br /&gt;
Bei ja :&lt;br /&gt;
Art der Waffe, ausstellende Behörde,  Nr. der Erlaubnis, Gültigkeitsdatum&lt;br /&gt;
der Erlaubnis&lt;br /&gt;
&lt;br /&gt;
Bei den Pflichtfeldern wollten wir noch deutlich machen, dass eine&lt;br /&gt;
Jugendkarte&lt;br /&gt;
erst ab 12 Jahren erstellt wird&lt;br /&gt;
Ebenso muss der Eingebende seine E-Mail-Adresse hinterlegen&lt;br /&gt;
(für mögliche Rückfragen)&lt;br /&gt;
&lt;br /&gt;
2. Nach Eingabe der Daten&lt;br /&gt;
hier wollten wir ein Kontrollmail an einen Verantwortlichen innerhalb der&lt;br /&gt;
VAB senden, mit allen Daten und Bild, dazu sollten wir noch eine&lt;br /&gt;
E-Mailadresse schaffen&lt;br /&gt;
Dieser Verantwortliche druckt dann die neue Karte auf unserem Kartendrucker&lt;br /&gt;
Eingaben dürfen nur von autorisierten Gruppen der VAB erfolgen&lt;br /&gt;
diese sind besondert gelistet und haben jeweils ein eigens Kenn- und&lt;br /&gt;
Passwort&lt;br /&gt;
&lt;br /&gt;
3. Sie wollten noch prüfen ob Daten importiert werden können&lt;br /&gt;
z.B. aus dem Vereinsprogramm 2000 das durch die Sparkassen angeboten wird&lt;br /&gt;
und von vielen Gruppen genutzt wird&lt;br /&gt;
&lt;br /&gt;
Thomas hatte auch noch Anmerkungen, die habe ich mir allerdings nicht&lt;br /&gt;
notiert&lt;br /&gt;
&lt;br /&gt;
Viele Grüße&lt;br /&gt;
Gerhard Franck&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.32.70.220</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_Extension:_pupmanager&amp;diff=1242</id>
		<title>Typo3 Extension: pupmanager</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_Extension:_pupmanager&amp;diff=1242"/>
		<updated>2008-01-08T06:40:19Z</updated>

		<summary type="html">&lt;p&gt;91.32.70.220: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ToDo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. Pflichtfelder&lt;br /&gt;
Name, Vorname, Anschrift, Geburtsdatum, Passbild mit Formatsvorgaben&lt;br /&gt;
Waffenträger ja / nein&lt;br /&gt;
bei ja :  Vorgabe der Art der Waffe (Messer usw. )&lt;br /&gt;
Dekowaffe wäre zu streichen (gibt es nicht gem. Waffengesetz)&lt;br /&gt;
Bei Waffen nach § 27 Sprengstoffgesetz ja / nein&lt;br /&gt;
Bei ja :&lt;br /&gt;
Art der Waffe, ausstellende Behörde,  Nr. der Erlaubnis, Gültigkeitsdatum&lt;br /&gt;
der Erlaubnis&lt;br /&gt;
&lt;br /&gt;
Bei den Pflichtfeldern wollten wir noch deutlich machen, dass eine&lt;br /&gt;
Jugendkarte&lt;br /&gt;
erst ab 12 Jahren erstellt wird&lt;br /&gt;
Ebenso muss der Eingebende seine E-Mail-Adresse hinterlegen&lt;br /&gt;
(für mögliche Rückfragen)&lt;br /&gt;
&lt;br /&gt;
2. Nach Eingabe der Daten&lt;br /&gt;
hier wollten wir ein Kontrollmail an einen Verantwortlichen innerhalb der&lt;br /&gt;
VAB senden, mit allen Daten und Bild, dazu sollten wir noch eine&lt;br /&gt;
E-Mailadresse schaffen&lt;br /&gt;
Dieser Verantwortliche druckt dann die neue Karte auf unserem Kartendrucker&lt;br /&gt;
Eingaben dürfen nur von autorisierten Gruppen der VAB erfolgen&lt;br /&gt;
diese sind besondert gelistet und haben jeweils ein eigens Kenn- und&lt;br /&gt;
Passwort&lt;br /&gt;
&lt;br /&gt;
3. Sie wollten noch prüfen ob Daten importiert werden können&lt;br /&gt;
z.B. aus dem Vereinsprogramm 2000 das durch die Sparkassen angeboten wird&lt;br /&gt;
und von vielen Gruppen genutzt wird&lt;br /&gt;
&lt;br /&gt;
Thomas hatte auch noch Anmerkungen, die habe ich mir allerdings nicht&lt;br /&gt;
notiert&lt;br /&gt;
&lt;br /&gt;
Viele Grüße&lt;br /&gt;
Gerhard Franck&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.32.70.220</name></author>
	</entry>
</feed>