<?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.47.237.205</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.47.237.205"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/91.47.237.205"/>
	<updated>2026-05-06T19:47:46Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Benutzer_Registrierung_(sr_feuser_register)&amp;diff=1991</id>
		<title>Typo3 - Benutzer Registrierung (sr feuser register)</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Benutzer_Registrierung_(sr_feuser_register)&amp;diff=1991"/>
		<updated>2010-05-03T19:32:46Z</updated>

		<summary type="html">&lt;p&gt;91.47.237.205: /* Probleme lösen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Extension kann die wichtigsten Dinge für Frontend Benutzer ab:&lt;br /&gt;
* Registrieren&lt;br /&gt;
* An- / Abmeldung&lt;br /&gt;
* Zuordnung zu verschiedenen Benutzergruppen&lt;br /&gt;
* etc.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://wiki.typo3.org/index.php/De:Front_End_User_Registration Typo3 Wiki]&lt;br /&gt;
&lt;br /&gt;
[http://blog.marit.ag/2010/02/12/fe-user-gesalzenen/ User Registrierung mit gesalzenen Passwörtern]&lt;br /&gt;
&lt;br /&gt;
Zusatzfelder:&lt;br /&gt;
http://blog.marit.ag/2010/02/03/sr_feuser_register-zusatzfeld/&lt;br /&gt;
&lt;br /&gt;
== Quickstart ==&lt;br /&gt;
benötigt:&lt;br /&gt;
* static_info_tables&lt;br /&gt;
* div2007 (für Flexforms)&lt;br /&gt;
* kb_md5fepw (wenn md5 Passwords verwendet werden sollen)&lt;br /&gt;
&lt;br /&gt;
=== Wichtige Ordner und Seiten ===&lt;br /&gt;
* O: Benutzer (oder Abos) enthält notwendige Benutzergruppen und die User&lt;br /&gt;
* S: Login (oder Newsletter) enthält normales Login und sr_feuser_register (default, startingpoint ist der feuser - Ordner)&lt;br /&gt;
*S: Registrierung (sr_feuser_register, mode create, startingpoint wie oben)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Benutzergruppen anlegen ===&lt;br /&gt;
* Gruppe für nicht bestätigte Registrierungen&lt;br /&gt;
* Gruppe für bestätigte Registrierungen&lt;br /&gt;
&lt;br /&gt;
=== TypoScript ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Statisches Template&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* FE User Registration&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Ordner mit Benutzern für Loginform&lt;br /&gt;
styles.content.loginform.pid = 87&lt;br /&gt;
// bei alter newloginbox...&lt;br /&gt;
# plugin.tx_newloginbox_pi1.storagePid = 87&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
plugin.tx_srfeuserregister_pi1{&lt;br /&gt;
  // Seite mit den Benutzern&lt;br /&gt;
  pid = 87&lt;br /&gt;
  // Benutzergruppen uid nach Registrierung aber vor Bestätigung (z.B. &amp;quot;NL nicht bestätigt&amp;quot;)&lt;br /&gt;
  userGroupUponRegistration = 1&lt;br /&gt;
  // Benutzergruppen uid nach Bestätigung (z.B. &amp;quot;NL bestätigt&amp;quot;)&lt;br /&gt;
  userGroupAfterConfirmation = 2&lt;br /&gt;
  // Seite mit Login Form&lt;br /&gt;
  loginPID = 88&lt;br /&gt;
  // Seite mit Registierung&lt;br /&gt;
  registerPID = 89&lt;br /&gt;
  // Seite zum editieren der Benutzerdaten&lt;br /&gt;
  editPID = 90&lt;br /&gt;
  // Seite mit Bestätigung der Registrierung&lt;br /&gt;
  confirmPID = 91&lt;br /&gt;
  // Wieviel Bilder dürfen hochgeladen werden&lt;br /&gt;
  maxImages = 1&lt;br /&gt;
  dateFormat = d.m.Y&lt;br /&gt;
  dateSplit = .&lt;br /&gt;
  salutation = informal&lt;br /&gt;
  siteName = KO rockt!  &lt;br /&gt;
  formFields = password,first_name, last_name, email,module_sys_dmail_html, module_sys_dmail_category,disable&lt;br /&gt;
  requiredFields = first_name,last_name,email&lt;br /&gt;
  email = steff@ko-rockband.de&lt;br /&gt;
  // nur mit RealURL ?&lt;br /&gt;
  useShortUrls = 1&lt;br /&gt;
  // Kategorien von Direct Mail&lt;br /&gt;
  module_sys_dmail_category_PIDLIST = 86&lt;br /&gt;
  // &lt;br /&gt;
  dmailCheckedUponRegistration = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Sprachlabel anpassen&lt;br /&gt;
plugin.tx_srfeuserregister_pi1._LOCAL_LANG.de{&lt;br /&gt;
  v_really_wish_to_delete_informal = Willst Du Dein Konto wirklich löschen?&lt;br /&gt;
  v_your_account_was_created_informal = Dein Konto &amp;lt;strong&amp;gt;%2$s&amp;lt;/strong&amp;gt; wurde erstellt. Wir senden eine E-Mail an die Adresse &amp;lt;strong&amp;gt;%4$s&amp;lt;/strong&amp;gt;, damit Du die Anmeldung bestätigen kannst.&lt;br /&gt;
}&lt;br /&gt;
// Titel der Benutzerseite überschreiben (wird in E-Mails benutzt)&lt;br /&gt;
plugin.tx_srfeuserregister_pi1.pidTitleOverride = KO rockt! News&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel: sr_feuser_register für Newsletter einsetzen ==&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel geht es darum die Benutzer Registrierung für Direct Mail (direct_mail) einzubauen und zu konfigurieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Probleme lösen ==&lt;br /&gt;
=== Marker von eigenen Feldern mit TCA_INPUT werden nicht mehr ersetzt ===&lt;br /&gt;
Es wird nur noch der Marker ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Lösung: Extension über Hook anmelden&lt;br /&gt;
&lt;br /&gt;
siehe auch http://bugs.typo3.org/view.php?id=5846&lt;br /&gt;
&lt;br /&gt;
Seit sr_feuser_register muss jede Extension mit neuen Felder für fe_users angemeldet werden. Dasselbe gilt auch für sr:_email_subscribe und tt_address. Der Grund ist eine Code-Optimierung, damit im Frontend nicht mehr die $TCA einer jeden installierten Extension eingelesen werden muss, was eine Menge an RAM einspart, weil im $TCA auch viele Übersetzungstexte vorkommen.&lt;br /&gt;
&lt;br /&gt;
In der ext_localconf.php der Extension mit dem Extension Key meineext muss das eingetragen werden:&lt;br /&gt;
&lt;br /&gt;
 $GLOBALS[&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;EXTCONF&amp;#039;][&amp;#039;sr_feuser_register&amp;#039;][&amp;#039;extendingTCA&amp;#039;][] = &amp;#039;meineext&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
=== Fehlermeldung: sr_feuser_register: The form&amp;#039;s token is too short! ===&lt;br /&gt;
&lt;br /&gt;
Das kann an einem Bug in der Version: 2.5.25 liegen. Hierfür gibt es aktuell (1.5.2010) Kein Update aber einen Patch: http://bugs.typo3.org/view.php?id=14125&amp;amp;nbn=5&lt;br /&gt;
&lt;br /&gt;
Wichtig ist danach eine aktuelle div2007 Version (bei mir 0.3.1 aufzuspielen. Sonst gibts gleich die nächsten Fehler.&lt;br /&gt;
&lt;br /&gt;
=== Felder die über TCA verändert werden funktionieren im Backend aber nicht im Frontend ===&lt;br /&gt;
Zitat aus der Mailingliste von Oliver Klee:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Problem ist, dass das TCA deiner Extension im FE nicht geladen wird&lt;br /&gt;
und sr_feuser_register daher die Einstellungen der Felder nicht kennt.&lt;br /&gt;
So habe ich das dann gelÃ¶st:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;myext/ext_localconf.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TYPO3_CONF_VARS[TYPO3_MODE][&amp;#039;XCLASS&amp;#039;][&amp;#039;ext/sr_feuser_register/lib/class.tx_srfeuserregister_tca.php&amp;#039;] = t3lib_extMgm::extPath(&amp;#039;myext&amp;#039;) . &amp;#039;class.ux_tx_srfeuserregister_tca.php&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;myext/class.ux_tx_srfeuserregister_tca.php:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class ux_tx_srfeuserregister_tca extends tx_srfeuserregister_tca {&lt;br /&gt;
  function init (&amp;amp;$pibase, &amp;amp;$conf, &amp;amp;$controlData, &amp;amp;$langObj, $extKey,$theTable)  &lt;br /&gt;
  {&lt;br /&gt;
    global $TCA;&lt;br /&gt;
    tx_div2007_alpha::loadTcaAdditions_fh001(array(&amp;#039;my ext&amp;#039;));&lt;br /&gt;
    return parent::init( $pibase, $conf, $controlData, $langObj, $extKey, $theTable);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
== Anpassen ==&lt;br /&gt;
 http://blog.marit.ag/2010/02/03/sr_feuser_register-zusatzfeld/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nur aktuelle Benutzerdaten anzeigen ===&lt;br /&gt;
http://www.typo3-jack.net/typo3-english-lists-netfielders-de/1686-typo3-sr_feuser_register-show-mode-like-edit.html&lt;/div&gt;</summary>
		<author><name>91.47.237.205</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Benutzer_Registrierung_(sr_feuser_register)&amp;diff=1990</id>
		<title>Typo3 - Benutzer Registrierung (sr feuser register)</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Benutzer_Registrierung_(sr_feuser_register)&amp;diff=1990"/>
		<updated>2010-05-03T19:02:21Z</updated>

		<summary type="html">&lt;p&gt;91.47.237.205: /* Probleme lösen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Extension kann die wichtigsten Dinge für Frontend Benutzer ab:&lt;br /&gt;
* Registrieren&lt;br /&gt;
* An- / Abmeldung&lt;br /&gt;
* Zuordnung zu verschiedenen Benutzergruppen&lt;br /&gt;
* etc.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://wiki.typo3.org/index.php/De:Front_End_User_Registration Typo3 Wiki]&lt;br /&gt;
&lt;br /&gt;
[http://blog.marit.ag/2010/02/12/fe-user-gesalzenen/ User Registrierung mit gesalzenen Passwörtern]&lt;br /&gt;
&lt;br /&gt;
Zusatzfelder:&lt;br /&gt;
http://blog.marit.ag/2010/02/03/sr_feuser_register-zusatzfeld/&lt;br /&gt;
&lt;br /&gt;
== Quickstart ==&lt;br /&gt;
benötigt:&lt;br /&gt;
* static_info_tables&lt;br /&gt;
* div2007 (für Flexforms)&lt;br /&gt;
* kb_md5fepw (wenn md5 Passwords verwendet werden sollen)&lt;br /&gt;
&lt;br /&gt;
=== Wichtige Ordner und Seiten ===&lt;br /&gt;
* O: Benutzer (oder Abos) enthält notwendige Benutzergruppen und die User&lt;br /&gt;
* S: Login (oder Newsletter) enthält normales Login und sr_feuser_register (default, startingpoint ist der feuser - Ordner)&lt;br /&gt;
*S: Registrierung (sr_feuser_register, mode create, startingpoint wie oben)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Benutzergruppen anlegen ===&lt;br /&gt;
* Gruppe für nicht bestätigte Registrierungen&lt;br /&gt;
* Gruppe für bestätigte Registrierungen&lt;br /&gt;
&lt;br /&gt;
=== TypoScript ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Statisches Template&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* FE User Registration&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Ordner mit Benutzern für Loginform&lt;br /&gt;
styles.content.loginform.pid = 87&lt;br /&gt;
// bei alter newloginbox...&lt;br /&gt;
# plugin.tx_newloginbox_pi1.storagePid = 87&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
plugin.tx_srfeuserregister_pi1{&lt;br /&gt;
  // Seite mit den Benutzern&lt;br /&gt;
  pid = 87&lt;br /&gt;
  // Benutzergruppen uid nach Registrierung aber vor Bestätigung (z.B. &amp;quot;NL nicht bestätigt&amp;quot;)&lt;br /&gt;
  userGroupUponRegistration = 1&lt;br /&gt;
  // Benutzergruppen uid nach Bestätigung (z.B. &amp;quot;NL bestätigt&amp;quot;)&lt;br /&gt;
  userGroupAfterConfirmation = 2&lt;br /&gt;
  // Seite mit Login Form&lt;br /&gt;
  loginPID = 88&lt;br /&gt;
  // Seite mit Registierung&lt;br /&gt;
  registerPID = 89&lt;br /&gt;
  // Seite zum editieren der Benutzerdaten&lt;br /&gt;
  editPID = 90&lt;br /&gt;
  // Seite mit Bestätigung der Registrierung&lt;br /&gt;
  confirmPID = 91&lt;br /&gt;
  // Wieviel Bilder dürfen hochgeladen werden&lt;br /&gt;
  maxImages = 1&lt;br /&gt;
  dateFormat = d.m.Y&lt;br /&gt;
  dateSplit = .&lt;br /&gt;
  salutation = informal&lt;br /&gt;
  siteName = KO rockt!  &lt;br /&gt;
  formFields = password,first_name, last_name, email,module_sys_dmail_html, module_sys_dmail_category,disable&lt;br /&gt;
  requiredFields = first_name,last_name,email&lt;br /&gt;
  email = steff@ko-rockband.de&lt;br /&gt;
  // nur mit RealURL ?&lt;br /&gt;
  useShortUrls = 1&lt;br /&gt;
  // Kategorien von Direct Mail&lt;br /&gt;
  module_sys_dmail_category_PIDLIST = 86&lt;br /&gt;
  // &lt;br /&gt;
  dmailCheckedUponRegistration = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Sprachlabel anpassen&lt;br /&gt;
plugin.tx_srfeuserregister_pi1._LOCAL_LANG.de{&lt;br /&gt;
  v_really_wish_to_delete_informal = Willst Du Dein Konto wirklich löschen?&lt;br /&gt;
  v_your_account_was_created_informal = Dein Konto &amp;lt;strong&amp;gt;%2$s&amp;lt;/strong&amp;gt; wurde erstellt. Wir senden eine E-Mail an die Adresse &amp;lt;strong&amp;gt;%4$s&amp;lt;/strong&amp;gt;, damit Du die Anmeldung bestätigen kannst.&lt;br /&gt;
}&lt;br /&gt;
// Titel der Benutzerseite überschreiben (wird in E-Mails benutzt)&lt;br /&gt;
plugin.tx_srfeuserregister_pi1.pidTitleOverride = KO rockt! News&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel: sr_feuser_register für Newsletter einsetzen ==&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel geht es darum die Benutzer Registrierung für Direct Mail (direct_mail) einzubauen und zu konfigurieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Probleme lösen ==&lt;br /&gt;
=== Marker von eigenen Feldern mit TCA_INPUT werden nicht mehr ersetzt ===&lt;br /&gt;
Es wird nur noch der Marker ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Lösung: Extension über Hook anmelden&lt;br /&gt;
&lt;br /&gt;
siehe auch http://bugs.typo3.org/view.php?id=5846&lt;br /&gt;
&lt;br /&gt;
Seit sr_feuser_register muss jede Extension mit neuen Felder für fe_users angemeldet werden. Dasselbe gilt auch für sr:_email_subscribe und tt_address. Der Grund ist eine Code-Optimierung, damit im Frontend nicht mehr die $TCA einer jeden installierten Extension eingelesen werden muss, was eine Menge an RAM einspart, weil im $TCA auch viele Übersetzungstexte vorkommen.&lt;br /&gt;
&lt;br /&gt;
In der ext_localconf.php der Extension mit dem Extension Key meineext muss das eingetragen werden:&lt;br /&gt;
&lt;br /&gt;
 $GLOBALS[&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;EXTCONF&amp;#039;][&amp;#039;sr_feuser_register&amp;#039;][&amp;#039;extendingTCA&amp;#039;][] = &amp;#039;meineext&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
=== Fehlermeldung: sr_feuser_register: The form&amp;#039;s token is too short! ===&lt;br /&gt;
&lt;br /&gt;
Das kann an einem Bug in der Version: 2.5.25 liegen. Hierfür gibt es aktuell (1.5.2010) Kein Update aber einen Patch: http://bugs.typo3.org/view.php?id=14125&amp;amp;nbn=5&lt;br /&gt;
&lt;br /&gt;
Wichtig ist danach eine aktuelle div2007 Version (bei mir 0.3.1 aufzuspielen. Sonst gibts gleich die nächsten Fehler.&lt;br /&gt;
&lt;br /&gt;
=== Felder die über TCA verändert werden funktionieren im Backend aber nicht im Frontend ===&lt;br /&gt;
Zitat aus der Mailingliste von Oliver Klee:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Problem ist, dass das TCA deiner Extension im FE nicht geladen wird&lt;br /&gt;
und sr_feuser_register daher die Einstellungen der Felder nicht kennt.&lt;br /&gt;
So habe ich das dann gelÃ¶st:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;myext/ext_localconf.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TYPO3_CONF_VARS[TYPO3_MODE][&amp;#039;XCLASS&amp;#039;][&amp;#039;ext/sr_feuser_register/lib/class.tx_srfeuserregister_tca.php&amp;#039;] = t3lib_extMgm::extPath(&amp;#039;myext&amp;#039;) . &amp;#039;class.ux_tx_srfeuserregister_tca.php&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;myext/class.ux_tx_srfeuserregister_tca.php:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class ux_tx_srfeuserregister_tca extends tx_srfeuserregister_tca {&lt;br /&gt;
  function init (&amp;amp;$pibase, &amp;amp;$conf, &amp;amp;$controlData, &amp;amp;$langObj, $extKey,$theTable)  &lt;br /&gt;
  {&lt;br /&gt;
    global $TCA;&lt;br /&gt;
    tx_div2007_alpha::loadTcaAdditions_fh001(array(&amp;#039;my ext&amp;#039;));&lt;br /&gt;
    return parent::init( $pibase, $conf, $controlData, $langObj, $extKey, $theTable);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
== Anpassen ==&lt;br /&gt;
 http://blog.marit.ag/2010/02/03/sr_feuser_register-zusatzfeld/&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.47.237.205</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Real_URL_(realurl)&amp;diff=3372</id>
		<title>Real URL (realurl)</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Real_URL_(realurl)&amp;diff=3372"/>
		<updated>2010-05-03T18:54:38Z</updated>

		<summary type="html">&lt;p&gt;91.47.237.205: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
Pathcache ausschalten:&lt;br /&gt;
http://blog.marit.ag/2007/07/24/realurl-pathcache-ausschalten/&lt;br /&gt;
== Tipps ==&lt;br /&gt;
===Alte Simulatic Links=== &lt;br /&gt;
von außen erhalten...&lt;br /&gt;
 RewriteRule ([0-9]+)\.([0-9]+)\.html$ http:///index.php?id=$1&amp;amp;type=$2  [R=301,L]&lt;br /&gt;
Sprich: meineDomain.de/123.html wird zu meineDomain.de/index.php?id=123&lt;br /&gt;
Wenn die Seiten andere IDs beinhalten dann kann man alte Seiten per Redirect umleiten (siehe htaccess)&lt;br /&gt;
&lt;br /&gt;
===Lange Pfade abkürzen===&lt;br /&gt;
&lt;br /&gt;
Hinweis: In neuen RealURL geht das scheinbar auch ohne die folgende Extension&lt;br /&gt;
&lt;br /&gt;
Manchmal hat man sehr lange Pfade wenn die Navigation in Unterordnern liegt. Mit der Extension &amp;#039;&amp;#039;&amp;#039;aoe_realurlpath&amp;#039;&amp;#039;&amp;#039; kann man diese Teile &amp;quot;cutten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Vorgehen&lt;br /&gt;
* Extension installieren&lt;br /&gt;
* realurl konfiguration anpassen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;#039;pagePath&amp;#039; =&amp;gt; array (&lt;br /&gt;
    &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;user&amp;#039;,&lt;br /&gt;
//  -&amp;gt; delete this&lt;br /&gt;
    &amp;#039;userFunc&amp;#039; =&amp;gt; &amp;#039;EXT:realurl/class.tx_realurl_advanced.php:&amp;amp;tx_realurl_advanced-&amp;gt;main&amp;#039;,&lt;br /&gt;
//  -&amp;gt; use this&lt;br /&gt;
    &amp;#039;userFunc&amp;#039; =&amp;gt; &amp;#039;EXT:aoe_realurlpath/class.tx_aoerealurlpath_pagepath.php:&amp;amp;tx_aoerealurlpath_pagepath-&amp;gt;main&amp;#039;,&lt;br /&gt;
    &amp;#039;spaceCharacter&amp;#039; =&amp;gt; &amp;#039;-&amp;#039;,&lt;br /&gt;
    &amp;#039;languageGetVar&amp;#039; =&amp;gt; &amp;#039;L&amp;#039;, &lt;br /&gt;
    &amp;#039;expireDays&amp;#039; =&amp;gt; &amp;#039;7&amp;#039;,&lt;br /&gt;
    &amp;#039;rootpage_id&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
// -&amp;gt; add this&lt;br /&gt;
    &amp;#039;segTitleFieldList&amp;#039;=&amp;gt;&amp;#039;alias,tx_aoerealurlpath_overridesegment,nav_title,title,subtitle&amp;#039;,&lt;br /&gt;
),&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manuelles serialisieren ===&lt;br /&gt;
RealURL arbeitet mit einer serialisierten Konfiguration bis zu 10 mal schneller. Wenn man aber die Konfigurations-Datei von Hand erstellen (oder verändern will) kann man mit dem serialisierten Array nichts anfangen.&lt;br /&gt;
In php kann man mit den Befehlen serialize und unserialize die Arrays konvertieren.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$serializedConfig = serialize($TYPO3_CONF_VARS[&amp;#039;EXTCONF&amp;#039;][&amp;#039;realurl&amp;#039;]);&lt;br /&gt;
print($serializedConfig);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Probleme lösen ==&lt;br /&gt;
=== Mal gehts, mal nicht ===&lt;br /&gt;
Beim Testen von RealURL hilft es oftmals einen anderen Browser zum testen der Seiten zu benutzen, mit dem man nicht eingeloggt ist. Das hilft um Probleme im Zusammenhang mit dem Caching zu lösen.&lt;br /&gt;
&lt;br /&gt;
=== realurl_autoconf.php wird nicht erstellt ===&lt;br /&gt;
Das Problem hängt mit anderen Extensions zusammen. Ist Powermail installiert in den Extension Einstellungen von Powermail die Option für Realurl bei der installation der realurl Extension ausschalten.&lt;br /&gt;
&lt;br /&gt;
Im typo3forum.net war auch die Rede von Problemen mit t3skin. Konnte ich bisher nicht nachvollziehen aber temporäres ausschalten hilft wohl auch hier.&lt;br /&gt;
&lt;br /&gt;
=== weitere Probleme ===&lt;br /&gt;
* Fehlermeldung Pfad/sowieso/ not found nearest match is&lt;br /&gt;
** Problem bei der Konfigurationsdatei (Leerzeichen vorne, falsche id etc.)&lt;br /&gt;
* Stylesheets, Bilder etc. aus TypoScript Konfiguration werden nicht gefunden.&lt;br /&gt;
** BaseURL stimmt nicht config.baseURL = http://www.meineDomain.de/&lt;br /&gt;
* Konfiguration loswerden:&lt;br /&gt;
** realurl und urltools Verweisen in der localconf auf ihr Konfigurationsfile. Alle Einträge und die Dateien können gelöscht werden wenn nicht mehr benötigt.&lt;br /&gt;
* Es werden falsche Links in der Art meineDomain.de/SeitenID generiert =&amp;gt; siehe [[Typo3 - RealURL mit mehreren Domains]]&lt;br /&gt;
&lt;br /&gt;
== Quickinfo ==&lt;br /&gt;
=== Einfachere automatische Konfiguration mit neuer Version) ===&lt;br /&gt;
(Update 12/2009)&lt;br /&gt;
Mindestens ab Version 1.7 erkennt die Autokonfiguration angelegte Domain-Records und passt die Konfiguration daraufhin an. Sprich - folgendes vorgehen.&lt;br /&gt;
* Wichtig: Zuerst alle Domain Records anlegen (auch für den Hauptbaum). Dies nimmt die autoconf als Basis für die Record Arrays und setzt dann auch gleich die Root IDs&lt;br /&gt;
* htaccess Datei anpassen&lt;br /&gt;
* Extensions die für realurl eine Konfiguration für realurl mitbringen vor real url installieren&lt;br /&gt;
* realurl installieren&lt;br /&gt;
* TypoScript anpassen (config.baseURL für alle Seitenbäume nicht vergessen)&lt;br /&gt;
&lt;br /&gt;
In http://dmitry-dulepov.com/article/automatic-realurl-configuration-howto.html spricht Dimitry davon daß die Autokonfiguration zukünftig automatisch aktualisiert wird. Im Moment nur wenn die Datei gelöscht wird. &lt;br /&gt;
&lt;br /&gt;
Wenn man manuell konfiguriert sollte man also alles nach realurl_conf.php kopieren, damit nichts ausversehen überschrieben wird.&lt;br /&gt;
(Update Ende)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config{&lt;br /&gt;
   simulateStaticDocuments = 0&lt;br /&gt;
   tx_realurl_enable = 1&lt;br /&gt;
   baseURL = http://www.grauff.com/&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* First try autoconfiguration&lt;br /&gt;
* If doesen&amp;#039;t work switch off and use manual configuration or use aeurltool (or realurlsettings) (easier to configure and contains working standard configuration)&lt;br /&gt;
* look section tipps for better configuration&lt;br /&gt;
&lt;br /&gt;
==Konfiguriern mit Hilfe von danp_realurlconfigurator==&lt;br /&gt;
&lt;br /&gt;
für die Konfoguration hilft auch die extension danp_realurlconfigurator&lt;br /&gt;
&lt;br /&gt;
== Configure Apache ==&lt;br /&gt;
RealURLs work by providing &amp;#039;virtual paths&amp;#039; to &amp;#039;virtual files&amp;#039;. These don&amp;#039;t actually exist on the file-system, so you must tell Apache to let a PHP-script handle the request if it can&amp;#039;t find the file. This way, all URLs to pages (like www.server.com/products/product1/left.html) will be &amp;#039;redirected&amp;#039; to /index.php, which will handle the translation of the URL into GET parameters. Real files (like images, the TYPO3 backend, static html-files, etc.) will still be handled by Apache itself though.&lt;br /&gt;
&lt;br /&gt;
You should put the supplied sample .htaccess file (called _.htaccess) in the root of your TYPO3-installation.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you could include the following lines in your httpd.conf, probably in the VirtualHost-section. Here is an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost 127.0.0.1&amp;gt;&lt;br /&gt;
DocumentRoot /var/www/typo3/dev/testsite-3/&lt;br /&gt;
ServerName www.test1.intra&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteRule ^/typo3$ - [L]&lt;br /&gt;
RewriteRule ^/typo3/.*$ - [L]&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
RewriteRule .* /index.php&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTICE: USING httpd.conf is currently known not to work since t3lib_div::getIndpEnv(&amp;#039;TYPO3_SITE_URL&amp;#039;) is not correct. Solution remains to be found.&lt;br /&gt;
&lt;br /&gt;
If you put it into a .htaccess file it has to look slightly different, basically stripping the leading slashes (“/”):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
#RewriteBase /mySubfolderIfNeeded&lt;br /&gt;
RewriteRule ^/typo3$ - [L]&lt;br /&gt;
RewriteRule ^/typo3/.*$ - [L]&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
RewriteRule .* index.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will tell Apache that it should rewrite every URL that&amp;#039;s not a filename, directory or symlink. It leaves everything starting with /typo3/ alone too.&lt;br /&gt;
&lt;br /&gt;
Notice: For this work you need the Apache module “mod_rewrite”!&lt;br /&gt;
&lt;br /&gt;
Also refer to the Appendix for extended information on mod_rewrite issues.&lt;br /&gt;
&lt;br /&gt;
== TS Config ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.simulateStaticDocuments = 0&lt;br /&gt;
config.baseURL = http://mydomain.com/&lt;br /&gt;
config.tx_realurl_enable = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== localconf.php Configuration ==&lt;br /&gt;
=== Mehrere Domains verwalten ===&lt;br /&gt;
Dies wird von autoconfig mittlerweile selbstständig gemacht. Hier aber noch ein Link für die manuelle Konfiguration:&lt;br /&gt;
http://www.typo3-book.com/blog/index.php/2009/01/27/realurl-mit-mehreren-domains-bzw-root-id%C2%B4s-stammbaumen/&lt;br /&gt;
&lt;br /&gt;
und hier ab Typo3 Version 4.2 und RealURL 1.5 mit Konfigurationsmöglichkeiten die es erlauben GET Parameter in Domainnamen umzusetzen:&lt;br /&gt;
&lt;br /&gt;
http://typo3-blog.net/tutorials/news/realurl-multilanguage-domain.html&lt;br /&gt;
&lt;br /&gt;
==== Beispiel das auch mit älteren realurl Versionen funktioniert ====&lt;br /&gt;
&lt;br /&gt;
Im ersten Teil wird in _DEFAULT eine Standard Konfiguration mit einer rootid erstellt. Am Ende wird diese nur noch für die anderen (Im Seitenbaum nachfolgenden) Domains kopiert und die rootpageid neu gesetzt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 *&lt;br /&gt;
 * default realurl configuration&lt;br /&gt;
 * based on realurl-configuration of news.typo3.org&lt;br /&gt;
 * 	http://news.typo3.org/about/realurl-configuration/&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$GLOBALS[&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;EXTCONF&amp;#039;][&amp;#039;realurl&amp;#039;] = array ( &lt;br /&gt;
    &amp;#039;_DEFAULT&amp;#039;=&amp;gt;array(&lt;br /&gt;
        &amp;#039;init&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;enableCHashCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
            &amp;#039;appendMissingSlash&amp;#039; =&amp;gt; &amp;#039;ifNotFile&amp;#039;,&lt;br /&gt;
            &amp;#039;enableUrlDecodeCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
            &amp;#039;enableUrlEncodeCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;redirects&amp;#039; =&amp;gt; array (&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;preVars&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;no_cache&amp;#039;,&lt;br /&gt;
                &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;nc&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;noMatch&amp;#039; =&amp;gt; &amp;#039;bypass&amp;#039;&lt;br /&gt;
            ),&lt;br /&gt;
            &amp;#039;1&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;L&amp;#039;,&lt;br /&gt;
                &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;de&amp;#039; =&amp;gt; &amp;#039;0&amp;#039;,&lt;br /&gt;
                    &amp;#039;en&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;noMatch&amp;#039; =&amp;gt; &amp;#039;bypass&amp;#039;,&lt;br /&gt;
            ),&lt;br /&gt;
            &amp;#039;2&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;lang&amp;#039;,&lt;br /&gt;
                &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;de&amp;#039; =&amp;gt; &amp;#039;de&amp;#039;,&lt;br /&gt;
                    &amp;#039;en&amp;#039; =&amp;gt; &amp;#039;en&amp;#039;,&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;noMatch&amp;#039; =&amp;gt; &amp;#039;bypass&amp;#039;,&lt;br /&gt;
            ),&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;pagePath&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;user&amp;#039;,&lt;br /&gt;
            &amp;#039;userFunc&amp;#039; =&amp;gt; &amp;#039;EXT:realurl/class.tx_realurl_advanced.php:&amp;amp;tx_realurl_advanced-&amp;gt;main&amp;#039;,&lt;br /&gt;
            &amp;#039;spaceCharacter&amp;#039; =&amp;gt; &amp;#039;-&amp;#039;,&lt;br /&gt;
            &amp;#039;languageGetVar&amp;#039; =&amp;gt; &amp;#039;L&amp;#039;,&lt;br /&gt;
            &amp;#039;expireDays&amp;#039; =&amp;gt; &amp;#039;7&amp;#039;,&lt;br /&gt;
            &amp;#039;rootpage_id&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
			&amp;#039;firstHitPathCache&amp;#039;=&amp;gt;1,&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;fixedPostVars&amp;#039; =&amp;gt; array (&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;postVarSets&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;_DEFAULT&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;archive&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[year]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                    &amp;#039;1&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[month]&amp;#039;,&lt;br /&gt;
                        &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                            &amp;#039;january&amp;#039; =&amp;gt; &amp;#039;01&amp;#039;,&lt;br /&gt;
                            &amp;#039;february&amp;#039; =&amp;gt; &amp;#039;02&amp;#039;,&lt;br /&gt;
                            &amp;#039;march&amp;#039; =&amp;gt; &amp;#039;03&amp;#039;,&lt;br /&gt;
                            &amp;#039;april&amp;#039; =&amp;gt; &amp;#039;04&amp;#039;,&lt;br /&gt;
                            &amp;#039;may&amp;#039; =&amp;gt; &amp;#039;05&amp;#039;,&lt;br /&gt;
                            &amp;#039;june&amp;#039; =&amp;gt; &amp;#039;06&amp;#039;,&lt;br /&gt;
                            &amp;#039;july&amp;#039; =&amp;gt; &amp;#039;07&amp;#039;,&lt;br /&gt;
                            &amp;#039;august&amp;#039; =&amp;gt; &amp;#039;08&amp;#039;,&lt;br /&gt;
                            &amp;#039;september&amp;#039; =&amp;gt; &amp;#039;09&amp;#039;,&lt;br /&gt;
                            &amp;#039;october&amp;#039; =&amp;gt; &amp;#039;10&amp;#039;,&lt;br /&gt;
                            &amp;#039;november&amp;#039; =&amp;gt; &amp;#039;11&amp;#039;,&lt;br /&gt;
                            &amp;#039;december&amp;#039; =&amp;gt; &amp;#039;12&amp;#039;,&lt;br /&gt;
                        ),&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;browse&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[pointer]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;select_category&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[cat]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;article&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[tt_news]&amp;#039;,&lt;br /&gt;
                        &amp;#039;lookUpTable&amp;#039; =&amp;gt; array (&lt;br /&gt;
                            &amp;#039;table&amp;#039; =&amp;gt; &amp;#039;tt_news&amp;#039;,&lt;br /&gt;
                            &amp;#039;id_field&amp;#039; =&amp;gt; &amp;#039;uid&amp;#039;,&lt;br /&gt;
                            &amp;#039;alias_field&amp;#039; =&amp;gt; &amp;#039;title&amp;#039;,&lt;br /&gt;
                            &amp;#039;addWhereClause&amp;#039; =&amp;gt; &amp;#039; AND NOT deleted&amp;#039;,&lt;br /&gt;
                            &amp;#039;useUniqueCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                            &amp;#039;useUniqueCache_conf&amp;#039; =&amp;gt; array (&lt;br /&gt;
                                &amp;#039;strtolower&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                                &amp;#039;spaceCharacter&amp;#039; =&amp;gt; &amp;#039;-&amp;#039;,&lt;br /&gt;
                            ),&lt;br /&gt;
                        ),&lt;br /&gt;
                    ),&lt;br /&gt;
                    &amp;#039;1&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[swords]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
            ),&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;fileName&amp;#039; =&amp;gt; array (&lt;br /&gt;
//&lt;br /&gt;
// if you don&amp;#039;t want .html-URLs set the following to &amp;quot;false&amp;quot; (e.g. &amp;#039;defaultToHTMLsuffixOnPrev&amp;#039; =&amp;gt; false,)&lt;br /&gt;
// then you get http://www.yourdomain.com/imprint/ instead of http://www.yourdomain.com/imprint.html&lt;br /&gt;
//&lt;br /&gt;
            &amp;#039;defaultToHTMLsuffixOnPrev&amp;#039; =&amp;gt; true,&lt;br /&gt;
            &amp;#039;index&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;rss.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;100&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;rss091.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;101&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;rdf.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;102&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;atom.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;103&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
            ),&lt;br /&gt;
        ),&lt;br /&gt;
    ),&lt;br /&gt;
); &lt;br /&gt;
&lt;br /&gt;
$GLOBALS[&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;EXTCONF&amp;#039;][&amp;#039;realurl&amp;#039;][&amp;#039;www.siedlevoss.de&amp;#039;] = $GLOBALS[&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;EXTCONF&amp;#039;][&amp;#039;realurl&amp;#039;][&amp;#039;_DEFAULT&amp;#039;]; &lt;br /&gt;
$GLOBALS[&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;EXTCONF&amp;#039;][&amp;#039;realurl&amp;#039;][&amp;#039;www.siedlevoss.de&amp;#039;][&amp;#039;pagePath&amp;#039;][&amp;#039;rootpage_id&amp;#039;] = 103; &lt;br /&gt;
$GLOBALS[&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;EXTCONF&amp;#039;][&amp;#039;realurl&amp;#039;][&amp;#039;www.vanderrolle.de&amp;#039;] = $GLOBALS[&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;EXTCONF&amp;#039;][&amp;#039;realurl&amp;#039;][&amp;#039;_DEFAULT&amp;#039;]; &lt;br /&gt;
$GLOBALS[&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;EXTCONF&amp;#039;][&amp;#039;realurl&amp;#039;][&amp;#039;www.vanderrolle.de&amp;#039;][&amp;#039;pagePath&amp;#039;][&amp;#039;rootpage_id&amp;#039;] = 133; &lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auszüge (Stand 2008) aus verschiedenen Dokus ===&lt;br /&gt;
&lt;br /&gt;
with the variable $TYPO3_CONF_VARS[&amp;#039;EXTCONF&amp;#039;][&amp;#039;realurl&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
This is managed automatically for newer realurl versions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 *&lt;br /&gt;
 * aeUrlTool default realurl configuration&lt;br /&gt;
 * based on realurl-configuration of news.typo3.org&lt;br /&gt;
 * 	http://news.typo3.org/about/realurl-configuration/&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$GLOBALS[&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;EXTCONF&amp;#039;][&amp;#039;realurl&amp;#039;] = array ( &lt;br /&gt;
    &amp;#039;_DEFAULT&amp;#039; =&amp;gt; array (&lt;br /&gt;
        &amp;#039;init&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;enableCHashCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
            &amp;#039;appendMissingSlash&amp;#039; =&amp;gt; &amp;#039;ifNotFile&amp;#039;,&lt;br /&gt;
            &amp;#039;enableUrlDecodeCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
            &amp;#039;enableUrlEncodeCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;redirects&amp;#039; =&amp;gt; array (&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;preVars&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;no_cache&amp;#039;,&lt;br /&gt;
                &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;nc&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;noMatch&amp;#039; =&amp;gt; &amp;#039;bypass&amp;#039;&lt;br /&gt;
            ),&lt;br /&gt;
            &amp;#039;1&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;L&amp;#039;,&lt;br /&gt;
                &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;de&amp;#039; =&amp;gt; &amp;#039;0&amp;#039;,&lt;br /&gt;
                    &amp;#039;en&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;noMatch&amp;#039; =&amp;gt; &amp;#039;bypass&amp;#039;,&lt;br /&gt;
            ),&lt;br /&gt;
            &amp;#039;2&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;lang&amp;#039;,&lt;br /&gt;
                &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;de&amp;#039; =&amp;gt; &amp;#039;de&amp;#039;,&lt;br /&gt;
                    &amp;#039;en&amp;#039; =&amp;gt; &amp;#039;en&amp;#039;,&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;noMatch&amp;#039; =&amp;gt; &amp;#039;bypass&amp;#039;,&lt;br /&gt;
            ),&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;pagePath&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;user&amp;#039;,&lt;br /&gt;
            &amp;#039;userFunc&amp;#039; =&amp;gt; &amp;#039;EXT:realurl/class.tx_realurl_advanced.php:&amp;amp;tx_realurl_advanced-&amp;gt;main&amp;#039;,&lt;br /&gt;
            &amp;#039;spaceCharacter&amp;#039; =&amp;gt; &amp;#039;-&amp;#039;,&lt;br /&gt;
            &amp;#039;languageGetVar&amp;#039; =&amp;gt; &amp;#039;L&amp;#039;,&lt;br /&gt;
            &amp;#039;expireDays&amp;#039; =&amp;gt; &amp;#039;7&amp;#039;,&lt;br /&gt;
            &amp;#039;rootpage_id&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;fixedPostVars&amp;#039; =&amp;gt; array (&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;postVarSets&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;_DEFAULT&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;archive&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[year]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                    &amp;#039;1&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[month]&amp;#039;,&lt;br /&gt;
                        &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                            &amp;#039;january&amp;#039; =&amp;gt; &amp;#039;01&amp;#039;,&lt;br /&gt;
                            &amp;#039;february&amp;#039; =&amp;gt; &amp;#039;02&amp;#039;,&lt;br /&gt;
                            &amp;#039;march&amp;#039; =&amp;gt; &amp;#039;03&amp;#039;,&lt;br /&gt;
                            &amp;#039;april&amp;#039; =&amp;gt; &amp;#039;04&amp;#039;,&lt;br /&gt;
                            &amp;#039;may&amp;#039; =&amp;gt; &amp;#039;05&amp;#039;,&lt;br /&gt;
                            &amp;#039;june&amp;#039; =&amp;gt; &amp;#039;06&amp;#039;,&lt;br /&gt;
                            &amp;#039;july&amp;#039; =&amp;gt; &amp;#039;07&amp;#039;,&lt;br /&gt;
                            &amp;#039;august&amp;#039; =&amp;gt; &amp;#039;08&amp;#039;,&lt;br /&gt;
                            &amp;#039;september&amp;#039; =&amp;gt; &amp;#039;09&amp;#039;,&lt;br /&gt;
                            &amp;#039;october&amp;#039; =&amp;gt; &amp;#039;10&amp;#039;,&lt;br /&gt;
                            &amp;#039;november&amp;#039; =&amp;gt; &amp;#039;11&amp;#039;,&lt;br /&gt;
                            &amp;#039;december&amp;#039; =&amp;gt; &amp;#039;12&amp;#039;,&lt;br /&gt;
                        ),&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;browse&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[pointer]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;select_category&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[cat]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;article&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[tt_news]&amp;#039;,&lt;br /&gt;
                        &amp;#039;lookUpTable&amp;#039; =&amp;gt; array (&lt;br /&gt;
                            &amp;#039;table&amp;#039; =&amp;gt; &amp;#039;tt_news&amp;#039;,&lt;br /&gt;
                            &amp;#039;id_field&amp;#039; =&amp;gt; &amp;#039;uid&amp;#039;,&lt;br /&gt;
                            &amp;#039;alias_field&amp;#039; =&amp;gt; &amp;#039;title&amp;#039;,&lt;br /&gt;
                            &amp;#039;addWhereClause&amp;#039; =&amp;gt; &amp;#039; AND NOT deleted&amp;#039;,&lt;br /&gt;
                            &amp;#039;useUniqueCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                            &amp;#039;useUniqueCache_conf&amp;#039; =&amp;gt; array (&lt;br /&gt;
                                &amp;#039;strtolower&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                                &amp;#039;spaceCharacter&amp;#039; =&amp;gt; &amp;#039;-&amp;#039;,&lt;br /&gt;
                            ),&lt;br /&gt;
                        ),&lt;br /&gt;
                    ),&lt;br /&gt;
                    &amp;#039;1&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[swords]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
            ),&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;fileName&amp;#039; =&amp;gt; array (&lt;br /&gt;
//&lt;br /&gt;
// if you don&amp;#039;t want .html-URLs set the following to &amp;quot;false&amp;quot; (e.g. &amp;#039;defaultToHTMLsuffixOnPrev&amp;#039; =&amp;gt; false,)&lt;br /&gt;
// then you get http://www.yourdomain.com/imprint/ instead of http://www.yourdomain.com/imprint.html&lt;br /&gt;
//&lt;br /&gt;
            &amp;#039;defaultToHTMLsuffixOnPrev&amp;#039; =&amp;gt; true,&lt;br /&gt;
            &amp;#039;index&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;rss.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;100&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;rss091.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;101&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;rdf.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;102&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;atom.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;103&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
            ),&lt;br /&gt;
        ),&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
); &lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Workaround wenn Pfade verloren gehen ==&lt;br /&gt;
&lt;br /&gt;
Sollten Sie den &amp;quot;Pagepath&amp;quot; über den Web-Menüpunkt Info-&amp;gt;Speaking Url Management ändern, kann es Ihnen passieren, dass die Pfade in Links und Menüs nicht aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
Als Workaround hilft es, den Seitencache zu löschen und dann die Seiten mit einem anderen Browser zu öffnen, bei dem man nicht als BE-User eingeloggt ist.&lt;br /&gt;
&lt;br /&gt;
 [http://www.oliver-thiele.de/cms-typo3/tutorials/realurl-tutorial.html Tutorial hierfür]&lt;/div&gt;</summary>
		<author><name>91.47.237.205</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Backend_Module_programmieren_(Extensions)&amp;diff=18692</id>
		<title>Typo3 - Backend Module programmieren (Extensions)</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Backend_Module_programmieren_(Extensions)&amp;diff=18692"/>
		<updated>2010-05-03T18:53:01Z</updated>

		<summary type="html">&lt;p&gt;91.47.237.205: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://blog.marit.ag/2008/07/15/eigene-backendmodule-richtig-konfigurieren/&lt;/div&gt;</summary>
		<author><name>91.47.237.205</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Extensions_programmieren&amp;diff=18451</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=18451"/>
		<updated>2010-05-03T18:52:49Z</updated>

		<summary type="html">&lt;p&gt;91.47.237.205: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Weiterführende Links:&lt;br /&gt;
&lt;br /&gt;
[[Typo3 - Backend Module programmieren (Extensions)]]&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/documentation/api/&lt;br /&gt;
&lt;br /&gt;
http://wiki.typo3.org/De:Create_your_own_extension&lt;br /&gt;
&lt;br /&gt;
http://wiki.typo3.org/Extension_Developers_Guide&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.2.0/view/3/2/#id4144512&lt;br /&gt;
&lt;br /&gt;
(High Priority Functions)&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
[[Typo3 Extension Developer Templates]]&lt;br /&gt;
== 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 - Sicherheit ===&lt;br /&gt;
[[Typo3 Extensions programmieren - Security Tipps]]&lt;br /&gt;
=== JavaScript in Typo3 Extensions ===&lt;br /&gt;
[[Typo3 - JavaScript einbinden]]&lt;br /&gt;
&lt;br /&gt;
=== Typo3 und AJAX ===&lt;br /&gt;
[[AJAX in TYPO3 Extensions]]&lt;br /&gt;
&lt;br /&gt;
=== TypoScript in Extensions ===&lt;br /&gt;
[[TypoScript Einstellungen in Extensions auslagern]]&lt;br /&gt;
&lt;br /&gt;
=== Frontend Plugin ===&lt;br /&gt;
[[Typo3 Extensions - ein Frontend Plugin Programmieren]]&lt;br /&gt;
=== IRRE ===&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;
=== FlexForms ===&lt;br /&gt;
[[Typo3 Extensions mit FlexForms]]&lt;br /&gt;
&lt;br /&gt;
=== Backendformulare ===&lt;br /&gt;
[[Typo3 Extensions - Backend Formulare und TCA Konfiguration]]&lt;br /&gt;
&lt;br /&gt;
siehe auch&lt;br /&gt;
&lt;br /&gt;
http://wiki.zone30.info/wikizone/index.php/Typo3_-_Extensions_programmieren#Formulare_im_Backend&lt;br /&gt;
&lt;br /&gt;
=== Erweitern von Funktionalitäten mit Hooks ===&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel findet sich hier unter Funktionen vor oder nach der Backendeingabe ausführen: &lt;br /&gt;
&lt;br /&gt;
[[Typo3 Extensions - Backend Formulare und TCA Konfiguration]]&lt;br /&gt;
&lt;br /&gt;
Eine schöne Einführung von Typo3 Blogger:&lt;br /&gt;
[[Typo3 - Alles über Hooks]]&lt;br /&gt;
&lt;br /&gt;
=== Arbeiten mit Templates ===&lt;br /&gt;
[[Typo3 Extensions - Arbeiten mit Templates]]&lt;br /&gt;
&lt;br /&gt;
=== Typo3 Extensions programmieren - Snippets ===&lt;br /&gt;
[[Typo3 Extensions programmieren - Snippets]]&lt;br /&gt;
&lt;br /&gt;
=== Typo3 Extensions programmieren - Rich Text Editor (RTE) ===&lt;br /&gt;
[[Typo3 Extensions programmieren - RTE]]&lt;br /&gt;
&lt;br /&gt;
=== Typo3 Extensions programmieren - Session Verwaltung ===&lt;br /&gt;
Siehe auch Sessions in Typo3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Standardmäßig gibt es Sessions für eingeloggte Frontend User Session und Browser Sessions&lt;br /&gt;
&lt;br /&gt;
Browser Session Variable setzen&lt;br /&gt;
 $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;setKey(&amp;quot;ses&amp;quot;,&amp;quot;zaehler&amp;quot;, $wert);&lt;br /&gt;
und auslesen:&lt;br /&gt;
 $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;quot;ses&amp;quot;,&amp;quot;zaehler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Bei der User Session wird statt &amp;#039;ses&amp;#039; &amp;#039;user&amp;#039; als 1. Parameter verwendet&lt;br /&gt;
Beispiele User Session: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $this-&amp;gt;lastSelection[&amp;#039;filters&amp;#039;][&amp;#039;sem&amp;#039;] = 0;&lt;br /&gt;
 //User SEssion Data lesen&lt;br /&gt;
 $this-&amp;gt;lastSelection = $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;quot;user&amp;quot;,&amp;quot;lastSelection&amp;quot;);&lt;br /&gt;
 // User Session Data schreiben&lt;br /&gt;
 GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;setKey(&amp;quot;user&amp;quot;,&amp;quot;lastSelection&amp;quot;,$this-&amp;gt;lastSelection);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ein weiterer netter Artikel von Tim Lochmüller aus typo3weblog.de&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Diesmal geht es um die Benutzung der Session in TYPO3. In der Regel genügt nur eine Zeile Code um einen Wert in die Session zu schreiben oder wieder heraus zu holen. Schauen wir uns erstmal an, wie man etwas in die Session schreibt:&lt;br /&gt;
&lt;br /&gt;
 $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;setKey(&amp;quot;ses&amp;quot;, &amp;quot;tx_myext&amp;quot;, $data);&lt;br /&gt;
&lt;br /&gt;
Die Funktion setKey() erwartet drei Parameter:&lt;br /&gt;
&lt;br /&gt;
# Type: Dieser kann &amp;quot;ses&amp;quot; oder &amp;quot;user&amp;quot; sein.&lt;br /&gt;
# Key: Eindeutiger Ident für eine Session Variable&lt;br /&gt;
# Data: Die Daten die gespeichert werden sollen.&lt;br /&gt;
&lt;br /&gt;
Die beiden Typen &amp;quot;ses&amp;quot; und &amp;quot;user&amp;quot; unterscheiden sich wesentlich. Während der Typ &amp;quot;ses&amp;quot; nur temporär die Daten speichert, also genau so lange, wie die Session besteht (Session-Cookie), ist es mit dem Key &amp;quot;user&amp;quot; möglich, die Daten auch über mehrere Sessions hinweg zu speichern, wobei diese an den FE-User gekoppelt werden.&lt;br /&gt;
&lt;br /&gt;
Der Key sollte so gewählt werden, dass man nicht in Konflikt mit anderen Extensions kommt. Am besten benutzt man seinen Extension-Key dafür.&lt;br /&gt;
&lt;br /&gt;
Die Daten die man speichern will kann jede beliebige PHP Variable sein, sogar komplette Objekte kann man ablegen.&lt;br /&gt;
&lt;br /&gt;
So, nun wollen wir uns den Wert mal wieder raus holen, auch dies geht sehr schnell und einfach:&lt;br /&gt;
&lt;br /&gt;
 $data = $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;quot;ses&amp;quot;, &amp;quot;tx_myext&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Die Methode getKey erwartet nur zwei Parameter, die Bedeutung ist die gleiche wie bei setKey().&lt;br /&gt;
&lt;br /&gt;
Das Leben kann so einfach sein, wenn es nicht ab und an diese kleinen fiesen Sonderfälle gibt ;)&lt;br /&gt;
&lt;br /&gt;
Nehmen wir mal an, man erzeugt ein PDF oder eine AJAX-Antwort, dann gibt man das PDF aus und steigt mit einem exit() oder die() aus. In diesen Fällen, reicht ein einfacher Aufruf von setKey() nicht aus. Denn TYPO3 kann dann die Daten nicht automatisch speichern. Aber hier schafft der folgende Code Abhilfe:&lt;br /&gt;
&lt;br /&gt;
 $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;setKey(&amp;quot;ses&amp;quot;, &amp;quot;tx_myext&amp;quot;, $data);&lt;br /&gt;
 $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;storeSessionData();&lt;br /&gt;
&lt;br /&gt;
Mit storeSessionData() sorgen wir dafür, dass TYPO3 umgehend die Werte speichert. Sehr häufig wird gerade auf die letzte Zeile verzichtet, was in der Regel auch funktioniert, jedoch nur so lange, wie kein Fehler auftritt oder das Script vorzeitig beendet wird.&lt;br /&gt;
&lt;br /&gt;
Fröhliches Session-Handling Euch allen :)&lt;br /&gt;
&lt;br /&gt;
=== Caching in Typo3 Extensions - Cache Mechanismen ===&lt;br /&gt;
[[Typo3 - Caching in Extensions]]&lt;br /&gt;
&lt;br /&gt;
=== Typo3 Extensions programmieren - Nützliche Funktionen ===&lt;br /&gt;
Aus Adventskalender 2008 typo3blog &lt;br /&gt;
&lt;br /&gt;
Interessante Funktionen aus der Klasse t3lib_div vor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. t3lib_div::array2json($data)&lt;br /&gt;
Mit dieser Funktion kann man sehr einfach seine Daten in ein JSON Objekt konvertieren. Die Funktion erwartet ein Array mit den Daten, dieses kann beliebig verschachtelt sein. Natürlich gibt es auch noch die PHP native Funktion json_encode, jedoch muss dies von der installierten PHP Installation unterstüzt werden.&lt;br /&gt;
&lt;br /&gt;
2. t3lib_div::convUmlauts($str)&lt;br /&gt;
Eine sehr nützliche Funktion ist convUmlauts, welche die deutschen Umlaute konvertiert, dabei wird aus einem Ä eine Ae oder aus einem ü ein ue. Groß und Klein-Schreibung wird also berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
3. t3lib_div::rmFromList($element, $list)&lt;br /&gt;
Auch diese Funktion ist sehr nützlich. Möchte man aus einer kommaseparierten Liste ein Element entfernen, ist dies mit einem Funktionsaufruf getan. Gerade bei TYPO3 ist diese Funktion sehr hilfreich, wenn man z.B. eine Benutzergruppe eines FE-Users entfernen möchte.&lt;br /&gt;
&lt;br /&gt;
=== Typo3 Extensions programmieren - Sprachlabels ===&lt;br /&gt;
==== Probleme mit Umlauten ====&lt;br /&gt;
Bei den Sprachdateien locallang.xml etc. kann es Probleme mit Umlauten geben, wenn die Codierung der Datei nicht mit der der Typo3 Installation zusammen passt. Es funktioniert aber automatisch, wenn man die Codierung der xml Datei im Header angibt angibt. Also oben z.B. reinschreiben:&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;yes&amp;quot; ?&amp;gt;&lt;br /&gt;
=== Typo3 Extension - Sicherheit ===&lt;br /&gt;
[[Typo3 Extensions programmieren - Sicherheit]]&lt;br /&gt;
&lt;br /&gt;
=== Typo3 Extensions - JavaScript Frameworks nutzen ===&lt;br /&gt;
Nutzen von jquery, extJS und Konsorten in Typo3&lt;br /&gt;
[[Typo3 Extensions - JavaScript Frameworks nutzen]]&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;
=== Wichtige Dateien einer Extension ===&lt;br /&gt;
&lt;br /&gt;
====ext_emconf.php====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Metadaten&amp;#039;&amp;#039;&amp;#039; wie Name, Kategorie, Status einer Extension - muß vorhanden sein sonst wird die Extension nicht geladen. Die Informationen landen in $EM_CONF[$_EXTKEY] = ARRAY&lt;br /&gt;
&lt;br /&gt;
==== ext_localconf.php ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TCA Konfiguration für das Backend&amp;#039;&amp;#039;&amp;#039;. (Werte für das Array $TYPO3_CONF_VARS). Z.B. Namen der zu ladenden Klassen, statische TSFiles etc.&lt;br /&gt;
&lt;br /&gt;
Wird immer geladen wenn ein Aufruf in Frontend oder Backend erfolgt. Kann deshalb dazu benutzt werden wichtige Klassendaten zu laden oder Skripte zu inkludieren.&lt;br /&gt;
&lt;br /&gt;
Optional - wird genutzt wenn Sie gefunden wird.&lt;br /&gt;
&lt;br /&gt;
==== ext_tables.php ====&lt;br /&gt;
Erweiterungen für  $&amp;#039;&amp;#039;&amp;#039;TCA&amp;#039;&amp;#039;&amp;#039;(Table Configuration Array). Beschreibungen von Tabellen und Formularen.&lt;br /&gt;
&lt;br /&gt;
Wird außerdem genutzt um den &amp;#039;&amp;#039;&amp;#039;Code von Frontend-Plugins, Modulen oder statischem TypoScript zu laden&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Optional - wird genutzt wenn Sie gefunden wird.&lt;br /&gt;
&lt;br /&gt;
==== Weitere häufige Dateien ====&lt;br /&gt;
ext_tables.sql - SQL Statements für die &amp;#039;&amp;#039;&amp;#039;Datenbank-Tabellen&amp;#039;&amp;#039;&amp;#039; beim Installieren der Extension.&lt;br /&gt;
&lt;br /&gt;
ext_tables_static+adt.sql - SQL Insert Statements für &amp;#039;&amp;#039;&amp;#039;statische Werte in Tabellen&amp;#039;&amp;#039;&amp;#039; (z.B. PLZ Liste).&lt;br /&gt;
&lt;br /&gt;
ext_conf_template.txt&lt;br /&gt;
&lt;br /&gt;
tca.php - Anpassungen für &amp;#039;&amp;#039;&amp;#039;$TCA,&amp;#039;&amp;#039;&amp;#039; Informationen für die Behandlung von Datenbanktabellen&lt;br /&gt;
&lt;br /&gt;
locallang[...].xml und locallang[...].php - &amp;#039;&amp;#039;&amp;#039;Sprachdateien&amp;#039;&amp;#039;&amp;#039; (Begriffe).&lt;br /&gt;
&lt;br /&gt;
====Typische Unterordner (optional)====&lt;br /&gt;
pi1, pi2 - Enthalten Frontend Plugins&lt;br /&gt;
&lt;br /&gt;
mod1, mod2 - Backend Module&lt;br /&gt;
&lt;br /&gt;
sv1, sv2 - Services&lt;br /&gt;
&lt;br /&gt;
=== Wichtige Globale Variablen ===&lt;br /&gt;
$_EXTKEY - der Extension Key&lt;br /&gt;
&lt;br /&gt;
&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;
==Wo finde ich welche Funktionen - required what ?==&lt;br /&gt;
Oft sucht man nach benötigten Funktionen. Z.B. wenn man im Backend oder über das alternative Rendering (eid) Core Funktionen braucht. &lt;br /&gt;
Hier mal ein paar Ansätze zum gucken. Dies ist kein zusammenhängender Code nur ein paar Schnipsel um die Hirnwindungen anzuregen &lt;br /&gt;
&lt;br /&gt;
ToDo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require_once(PATH_t3lib.&amp;#039;class.t3lib_page.php&amp;#039;);&lt;br /&gt;
require_once(PATH_tslib.&amp;quot;class.tslib_content.php&amp;quot;);&lt;br /&gt;
require_once(PATH_t3lib.&amp;quot;class.t3lib_stdgraphic.php&amp;quot;);&lt;br /&gt;
require_once(PATH_tslib.&amp;quot;class.tslib_gifbuilder.php&amp;quot;); &lt;br /&gt;
&lt;br /&gt;
$pid = intval(t3lib_div::_GET(&amp;#039;pid&amp;#039;));&lt;br /&gt;
&lt;br /&gt;
// create object instances:&lt;br /&gt;
&lt;br /&gt;
//$temp_TSFEclassName = t3lib_div::makeInstanceClassName(&amp;#039;tslib_fe&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
$TSFE = new $temp_TSFEclassName($TYPO3_CONF_VARS, $page, 0, true);&lt;br /&gt;
$TSFE-&amp;gt;sys_page = t3lib_div::makeInstance(&amp;#039;t3lib_pageSelect&amp;#039;);&lt;br /&gt;
$TSFE-&amp;gt;tmpl = t3lib_div::makeInstance(&amp;#039;t3lib_tstemplate&amp;#039;);&lt;br /&gt;
$TSFE-&amp;gt;tmpl-&amp;gt;init();&lt;br /&gt;
&lt;br /&gt;
// fetch rootline and extract ts setup:&lt;br /&gt;
$TSFE-&amp;gt;rootLine = $TSFE-&amp;gt;sys_page-&amp;gt;getRootLine(intval($pid));&lt;br /&gt;
$TSFE-&amp;gt;getConfigArray();&lt;br /&gt;
&lt;br /&gt;
// return ts setup array:&lt;br /&gt;
$setup = $TSFE-&amp;gt;tmpl-&amp;gt;setup;&lt;br /&gt;
$conf = $setup[&amp;#039;plugin.&amp;#039;][&amp;#039;tx_rgcarousel_pi1.&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
$myCObj = new tslib_cObj();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
===ext_emconf.php===&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. Hier können auch Klassendateien aufgerufen werden (require_once() ) die bei jedem Aufruf zur Verfügung stehen sollen.&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;br /&gt;
&lt;br /&gt;
== Ausgaben im HTML-Header in Extensions programmieren ==&lt;br /&gt;
Manchmal möchte man bestimmte Angaben in den Header schreiben, um zum Beispiel ein JavaScript einzubinden o.ä.&lt;br /&gt;
&lt;br /&gt;
Man könnte im statischen TypoScript für das Objekt page etwas hernehmen. Das funktioniert aber nur wenn das PAGE Objekt auch wirklich page heißt.&lt;br /&gt;
&lt;br /&gt;
Also besser mit einer Typo3 Eigenen Funktion.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel - JavaScript einbinden&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function includeJavaScript() {&lt;br /&gt;
  $js .= &amp;#039;&amp;lt;script src=&amp;quot;&amp;#039;.t3lib_extMgm::siteRelPath($this-&amp;gt;extKey).dirname($this-&amp;gt;scriptRelPath).&amp;#039;/JS-Verzeichnis/js-file.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;!-- //--&amp;gt;&amp;lt;/script&amp;gt;&amp;#039;;&lt;br /&gt;
  $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;additionalHeaderData[$this-&amp;gt;extKey] = $js;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Aufruf der Funktion:&lt;br /&gt;
$content=$this-&amp;gt;includeJavaScript(); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Variable $this-&amp;gt;extKey wird normalerweise immer in der Klassendefinition der Extensiongesetzt und enthält den Namen der Extension (z.B. meineextension)&lt;br /&gt;
&lt;br /&gt;
Für $this-&amp;gt;scriptRelPath gilt das gleiche. Hier steht der Pfad ab dem Extension Ordner (z.B. pi1/class.tx_meineExtension_pi1.php)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mehrsprachige Extensions ==&lt;br /&gt;
Seit der Version 4 hat sich die Vorgehensweise bei der Lokalisierung geändert. Um zu verstehen wie die Lokalisierung von Backend, Frontend etc. funktioniert gibt es hier eine kleine Übersicht:&lt;br /&gt;
[[Sprachverwaltung und Lokalisierung in Typo3]]&lt;br /&gt;
&lt;br /&gt;
== $GLOBALS[&amp;#039;TSFE&amp;#039;] ==&lt;br /&gt;
&lt;br /&gt;
TSFE ist ein Abbild der Klasse tslib_fe, die kannst Du auch untersuchen.&lt;/div&gt;</summary>
		<author><name>91.47.237.205</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Caching&amp;diff=18691</id>
		<title>Typo3 - Caching</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Caching&amp;diff=18691"/>
		<updated>2010-05-03T18:50:49Z</updated>

		<summary type="html">&lt;p&gt;91.47.237.205: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://blog.marit.ag/2009/01/19/wir-fordern-statisches-caching-fur-statische-seiten/#more-262&lt;/div&gt;</summary>
		<author><name>91.47.237.205</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Caching_in_Extensions&amp;diff=18666</id>
		<title>Typo3 - Caching in Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Caching_in_Extensions&amp;diff=18666"/>
		<updated>2010-05-03T18:50:27Z</updated>

		<summary type="html">&lt;p&gt;91.47.237.205: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
[[Typo3 - Caching]]&lt;br /&gt;
&lt;br /&gt;
http://www.typo3-handbuch.de/index.php?id=164&lt;br /&gt;
&lt;br /&gt;
http://www.sk-typo3.de/Richtiges-Cachen-mit-pi_base.188.0.html&lt;br /&gt;
&lt;br /&gt;
http://www.sk-typo3.de/COA_INT-in-Extensions.190.0.html&lt;br /&gt;
&lt;br /&gt;
== Caching in Typo3 ==&lt;br /&gt;
=== no_cache ===&lt;br /&gt;
Das Caching in Typo3 läßt sich auf verschiedene Arten ausschalten:&lt;br /&gt;
* no_cache=1 Parameter in der URL&lt;br /&gt;
* Seiteneigenschaften&lt;br /&gt;
* set no Cache Funktion &lt;br /&gt;
* TypoScript&lt;br /&gt;
Hierbei wird die komplette Seite bei jedem Aufruf neu berechnet. Die Performance nimmt dabei drastisch ab. Deshalb wird das Ausschalten des Seitencaches nicht empfohlen.&lt;br /&gt;
=== USER_INT / COA_INT ===&lt;br /&gt;
Bei USER_INT Objekten wird die Seite Gechachet und für das USER_INT Objekt ein Platzhalter hinterlegt. Es wird nur der Teil des USER_INT Objektes jedesmal neu berechnet.&lt;br /&gt;
&lt;br /&gt;
Dies sollte nicht gemeinsam mit cHashing verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Damit das Plugin richtig als USER_INT Objekt behandelt wird muß folgendes beachtet werden:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
  var  $pi_checkCHash = FALSE; &lt;br /&gt;
  var  $this-&amp;gt;pi_USER_INT_obj = 1;&lt;br /&gt;
&lt;br /&gt;
Hier kann es notwendig sein in der localconf das Plugin auf USER_INT umzustellen. Der letzte Parameter ist ausschlaggebend.&lt;br /&gt;
&lt;br /&gt;
 t3lib_extMgm::addPItoST43($_EXTKEY, &amp;#039;pi1/class.tx_myExtKey_pi1.php&amp;#039;, &amp;#039;_pi1&amp;#039;, &amp;#039;list_type&amp;#039;, 0);&lt;br /&gt;
&lt;br /&gt;
=== cHash ===&lt;br /&gt;
Bei USER Objekten kommt das Caching mit  cHash zum Tragen. Dabei wird jede Seite mehrfach gespeichert. Und zwar gibt es für jede Kombination der POST/GET Parameter eine Version der Seite.&lt;br /&gt;
&lt;br /&gt;
Sinnvoll ist dies wenn eine Seite bei einer Parameter-Kombination immer die gleichen Ergebnisse erzielt. Bei Hochdynamischen Seiten (Forum etc.) Wo sich dauernd etwas ändert ist das USER_INT Objekt vorzuziehen.&lt;br /&gt;
&lt;br /&gt;
  var  $pi_checkCHash = TRUE; &lt;br /&gt;
  var  $this-&amp;gt;pi_USER_INT_obj = 0;&lt;br /&gt;
&lt;br /&gt;
und in der localconf:&lt;br /&gt;
 t3lib_extMgm::addPItoST43($_EXTKEY, &amp;#039;pi1/class.tx_myExtKey_pi1.php&amp;#039;, &amp;#039;_pi1&amp;#039;, &amp;#039;list_type&amp;#039;, 1);&lt;br /&gt;
 &lt;br /&gt;
== Praxis ==&lt;br /&gt;
Eine typische Anforderung ist eine Extension mit Suchformular, eine Ergebnisliste und viele Detailansichten. Die Detailseiten sollen gecachet und durchsuchbar sein, aber die Form und die Ergebnisliste sollen nicht gecachet werden. Wie soll das gehen.&lt;br /&gt;
&lt;br /&gt;
Eine Möglichkeit ist es 2 Plugins in die Extension zu nehmen und diese unterschiedlich zu cachen.&lt;br /&gt;
&lt;br /&gt;
Eleganter ist allerdings ein Caching mit USER/USER_INT Switch&lt;br /&gt;
&lt;br /&gt;
Caching immer dann wichtig wird, wenn ein Link oder ähnliches geklickt wird und die aufgerufene Seite (auch wenn es die selbe ist) dementsprechend aus dem Cache kommt oder neu gerechnet wird. Dies hängt davon ab was unsere Zielseite anzeigen soll. Dazu erzeugen wir bei Bedarf ein USER_INT Objekt und müssen darauf achten, das die Links auf der Seite korrekt erzeugt werden. Muß also auf zwei Dinge achten Das das so ist ist historisch begründet und leider etwas umständlich.&lt;br /&gt;
&lt;br /&gt;
So gehts:&lt;br /&gt;
&lt;br /&gt;
Wir arbeiten mit 2 Caching Parametern:&lt;br /&gt;
der Funktionsparameter &amp;#039;&amp;#039;&amp;#039;$cache&amp;#039;&amp;#039;&amp;#039; ist Zuständig für die korrekte Linkerzeugung in den Linkfunktionen&lt;br /&gt;
die Object-Variable &amp;#039;&amp;#039;&amp;#039;$this-&amp;gt;pi_USER_INT_obj&amp;#039;&amp;#039;&amp;#039; ist dafür Zuständig den Inhalt entweder zu berechnen(Das Zielobjekt ist ein USER_INT Objekt) oder aus der Datenbank zu holen (das Zielobjekt ist ein USER Objekt).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== cHash links zu USER objects ===&lt;br /&gt;
Links zu einem USER-Objekt brauchen einen cHash, wenn Du willst, das das Zielobjekt gecachet wird. Der cHash ist eine Versicherung, das der Aufruf gültige Parameter besitzt und die Datenbank in der Lage ist, die gewünschte Ansicht zu cachen. Um dieses zu erreichen musst Du folgendes setzen:&lt;br /&gt;
 $cache =1&lt;br /&gt;
 $this-&amp;gt;pi_USER_INT_obj = 0&lt;br /&gt;
&lt;br /&gt;
=== Einfache Links zu USER_INT-Objekten === &lt;br /&gt;
USER_INT Objekte werden niemals gecachet. So würde es auch keinen Sinn machen, sie mit einem cHash aufzurufen. Obwohl dieses keinen Sinn machen würde, kann man den cHash für diesen Fall verhindern.&lt;br /&gt;
 $cache =0&lt;br /&gt;
 $this-&amp;gt;pi_USER_INT_obj = 1&lt;br /&gt;
&lt;br /&gt;
=== Ergebnis ===&lt;br /&gt;
So sieht das dann im Ergebnis aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class tx_myExtension extends tslib_pibase{&lt;br /&gt;
  var  $pi_checkCHash = TRUE; // if this is a USER plugin&lt;br /&gt;
  var  $this-&amp;gt;pi_USER_INT_obj; // we don&amp;#039;t set it here&lt;br /&gt;
  ...&lt;br /&gt;
  function someFunction(...){&lt;br /&gt;
    ...&lt;br /&gt;
    // link to USER&lt;br /&gt;
    $cache = 1;&lt;br /&gt;
    $this-&amp;gt;pi_USER_INT_obj = 0;&lt;br /&gt;
&lt;br /&gt;
    $label = &amp;#039;Link to USER plugin&amp;#039;;  // the link text&lt;br /&gt;
    $overrulePIvars = array( ... the parameters we need to send to the target plugin .... );&lt;br /&gt;
    $clearAnyway=1;    // the current values of piVars will NOT be preserved&lt;br /&gt;
    $altPageId=33;      // ID of the target page, if not on the same page&lt;br /&gt;
    $link = $this-&amp;gt;pi_linkTP_keepPIvars($label, $overrulePIvars, $cache, $clearAnyway, $altPageId);&lt;br /&gt;
    ...&lt;br /&gt;
    // link to USER_INT&lt;br /&gt;
    $cache = 0;&lt;br /&gt;
    $this-&amp;gt;pi_USER_INT_obj = 1;&lt;br /&gt;
    $label = &amp;#039;Link to USER_INT plugin&amp;#039;;  // the link text&lt;br /&gt;
    $overrulePIvars = array( ... the parameters we need to send to the target plugin .... );&lt;br /&gt;
    $clearAnyway=1;    // the current values of piVars will NOT be preserved&lt;br /&gt;
    $altPageId=33;      // ID of the target page, if not on the same page&lt;br /&gt;
    $link = $this-&amp;gt;pi_linkTP_keepPIvars($label, $overrulePIvars, $cache, $clearAnyway, $altPageId);&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Caching in TYPO3-Extensions (Artikel)==&lt;br /&gt;
&lt;br /&gt;
Michael Türk 29. Mai 2008&lt;br /&gt;
&lt;br /&gt;
http://www.typo3-scout.de/2008/05/29/caching-in-typo3-extensions/&lt;br /&gt;
&lt;br /&gt;
Wer einmal einen genaueren Blick auf die Abläufe im TYPO3-Frontend-Rendering geworfen hat, weiß, wie viele komplexe Vorgänge an der Ausgabe der TYPO3-Seiten beteiligt sind. Diese Komplexität steigt weiter, je mehr Extensions installiert sind. Würden TYPO3 Seiten bei jedem Aufruf neu aufgebaut, würde die Performance der Seiten erheblich Leiden und die Server hätten damit eher ihre Probleme. Außerdem funktioniert die Such-Indexierung nur dann, wenn die Inhalte zwischengespeichert werden.&lt;br /&gt;
&lt;br /&gt;
Leider scheint das Caching an sich etwas zu wenig dokumentiert zu sein. Es finden sich immer wieder neue Extensions, welche die Caching-Mechanismen von TYPO3 nicht richtig einzusetzen verstehen. Dies liegt wahrscheinlich nicht zuletzt daran, dass die Schalter zum Aktivieren der Caching-Funktionalitäten recht gut versteckt und leicht zu übersehen sind.&lt;br /&gt;
&lt;br /&gt;
Um die Performance von statischen Seiten zu verbessern, wird der fertig gerenderte HTML Code in der Datenbank abgelegt, um beim nächsten Abruf der Seite direkt aus der Datenbank geladen zu werden. Bei Extensions unterscheiden sich zwei verschiedene Vorgehensweisen:&lt;br /&gt;
&lt;br /&gt;
1. Ein Großteil der Frontend-Plugins liefert &amp;#039;&amp;#039;&amp;#039;bei gleichen Parametern immer gleiche Ergebnisse&amp;#039;&amp;#039;&amp;#039;. Dies kennt man von News oder Shop-Systemen. Dies bedeutet, dass man die Ausgabe für verschiedene Parameter-Kombinationen jeweils im Cache ablegen kann, um sie bei der nächsten Anfrage beschleunigt ausgeben zu können.&lt;br /&gt;
&lt;br /&gt;
2. Darüber hinaus existieren jedoch Erweiterungen, deren &amp;#039;&amp;#039;&amp;#039;Ausgaben hochdynamisch&amp;#039;&amp;#039;&amp;#039; sind. Zu dieser Gruppe zählen unter anderem Community-Features, deren Ausgabe minütlich wechseln kann, &amp;#039;&amp;#039;&amp;#039;obwohl die Parameter gleich bleiben&amp;#039;&amp;#039;&amp;#039; (oder gar keine Parameter angegeben werden). Hier würde Cache verhindern, dass der Benutzer alle neuen Informationen geliefert bekommt&lt;br /&gt;
&lt;br /&gt;
Die Cache-Mechanismen werden zum an &amp;#039;&amp;#039;&amp;#039;zwei verschiedenen Stellen&amp;#039;&amp;#039;&amp;#039; der Extension ein- und ausgeschaltet. Dies ist zum Einen die Datei &amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039; und zum anderen die Datei des Plugins selbst, die die &amp;#039;&amp;#039;&amp;#039;Plugin-Base-Klasse&amp;#039;&amp;#039;&amp;#039; enthält (welche in der Regel auf piX.php endet)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;  &lt;br /&gt;
t3lib_extMgm::addPItoST43($_EXTKEY,‘piX/class.tx_extensionname_piX.php’,‘_piX’,‘list_type’,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der entscheidende Punkt in dieser Anweisung ist der letzte Parameter. Dieser wird im angegebenen Beispiel auf true gesetzt und das System somit angewiesen, die Ausgabe der Extension zu cachen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; t3lib_extMgm::addPItoST43($_EXTKEY,‘piX/class.tx_extensionname_piX.php’,‘_piX’,‘list_type’,0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Im zweiten Fall wurde nun die Variable auf false gesetzt und die Ausgabe daher nicht zwischengespeichert.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;class.extensionname_piX.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Innerhalb der Extension kann nun noch festgelegt werden, ob das Plugin &amp;#039;&amp;#039;&amp;#039;cHashing-Mechanismen zum Identifizieren gleicher Parameter-Kombinationen&amp;#039;&amp;#039;&amp;#039; nutzen soll. cHashs werden durch den Typolink-Mechanismus erstellt, wobei die eingehenden Parametern zusammen mit dem geheimen internen Schlüssel zu einem Hash-Wert zusammengefasst werden. Dieser Mechanismus wird über das Setzen einer Klassenvariable erreicht:&lt;br /&gt;
&lt;br /&gt;
 var $pi_checkCHash = true;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alternativ&amp;#039;&amp;#039;&amp;#039; kann ein Plugin explizit &amp;#039;&amp;#039;&amp;#039;als USER_INT Objekt&amp;#039;&amp;#039;&amp;#039; ausgewiesen werden. Für diese wird in den gecachten Seiten ein Platzhalter hinterlegt, während die eigentliche Ausgabe der Extension erst zur Laufzeit der Webseite eingesetzt wird.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function main($content,$conf) {&lt;br /&gt;
          [...]&lt;br /&gt;
          $this-&amp;gt;pi_USER_INT_obj = 1;&lt;br /&gt;
          [...]&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein häufig auftretender Fehler hierbei ist die Kombination der beiden letztgenannten Optionen. Allerdings widersprechen sich die beiden Konzepte, da beispielweise bei der Link-Generierung keine Cache Hashes gebildet werden, wenn ein Plugin einem USER_INT-Objekt entspricht. Um an dieser Stelle dynamische Ausgaben zu generieren, behelfen sich viele Entwickler mit der no_cache-Anweisung, die das Caching für die gesamte Seite deaktiviert. Dies bedeutet, dass die gesamte Seite von einer Indizierung ausgeschlossen wird und das Rendern der Seite erschwert wird. Von der Anweisung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $GLOBALS[‘TSFE’]-&amp;gt;set_no_cache();&lt;br /&gt;
&lt;br /&gt;
sollte in einer Live-Seite prinzipiell Abstand genommen werden.&lt;br /&gt;
&lt;br /&gt;
Wie man sieht, sind die Anweisungen für Caching-Mechanismen eher übersichtlich, so dass die fachgerechte Einstellung des eigenen Frontend-Plugins keine allzu große Hürde darstellen sollte. In der Praxis gestaltet sich dies bisher leider noch zu oft als eine Hürde für Extensions mit viel Potential.&lt;/div&gt;</summary>
		<author><name>91.47.237.205</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Benutzer_Registrierung_(sr_feuser_register)&amp;diff=1989</id>
		<title>Typo3 - Benutzer Registrierung (sr feuser register)</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Benutzer_Registrierung_(sr_feuser_register)&amp;diff=1989"/>
		<updated>2010-05-03T18:49:07Z</updated>

		<summary type="html">&lt;p&gt;91.47.237.205: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Extension kann die wichtigsten Dinge für Frontend Benutzer ab:&lt;br /&gt;
* Registrieren&lt;br /&gt;
* An- / Abmeldung&lt;br /&gt;
* Zuordnung zu verschiedenen Benutzergruppen&lt;br /&gt;
* etc.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://wiki.typo3.org/index.php/De:Front_End_User_Registration Typo3 Wiki]&lt;br /&gt;
&lt;br /&gt;
[http://blog.marit.ag/2010/02/12/fe-user-gesalzenen/ User Registrierung mit gesalzenen Passwörtern]&lt;br /&gt;
&lt;br /&gt;
Zusatzfelder:&lt;br /&gt;
http://blog.marit.ag/2010/02/03/sr_feuser_register-zusatzfeld/&lt;br /&gt;
&lt;br /&gt;
== Quickstart ==&lt;br /&gt;
benötigt:&lt;br /&gt;
* static_info_tables&lt;br /&gt;
* div2007 (für Flexforms)&lt;br /&gt;
* kb_md5fepw (wenn md5 Passwords verwendet werden sollen)&lt;br /&gt;
&lt;br /&gt;
=== Wichtige Ordner und Seiten ===&lt;br /&gt;
* O: Benutzer (oder Abos) enthält notwendige Benutzergruppen und die User&lt;br /&gt;
* S: Login (oder Newsletter) enthält normales Login und sr_feuser_register (default, startingpoint ist der feuser - Ordner)&lt;br /&gt;
*S: Registrierung (sr_feuser_register, mode create, startingpoint wie oben)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Benutzergruppen anlegen ===&lt;br /&gt;
* Gruppe für nicht bestätigte Registrierungen&lt;br /&gt;
* Gruppe für bestätigte Registrierungen&lt;br /&gt;
&lt;br /&gt;
=== TypoScript ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Statisches Template&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* FE User Registration&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Constants&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Ordner mit Benutzern für Loginform&lt;br /&gt;
styles.content.loginform.pid = 87&lt;br /&gt;
// bei alter newloginbox...&lt;br /&gt;
# plugin.tx_newloginbox_pi1.storagePid = 87&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
plugin.tx_srfeuserregister_pi1{&lt;br /&gt;
  // Seite mit den Benutzern&lt;br /&gt;
  pid = 87&lt;br /&gt;
  // Benutzergruppen uid nach Registrierung aber vor Bestätigung (z.B. &amp;quot;NL nicht bestätigt&amp;quot;)&lt;br /&gt;
  userGroupUponRegistration = 1&lt;br /&gt;
  // Benutzergruppen uid nach Bestätigung (z.B. &amp;quot;NL bestätigt&amp;quot;)&lt;br /&gt;
  userGroupAfterConfirmation = 2&lt;br /&gt;
  // Seite mit Login Form&lt;br /&gt;
  loginPID = 88&lt;br /&gt;
  // Seite mit Registierung&lt;br /&gt;
  registerPID = 89&lt;br /&gt;
  // Seite zum editieren der Benutzerdaten&lt;br /&gt;
  editPID = 90&lt;br /&gt;
  // Seite mit Bestätigung der Registrierung&lt;br /&gt;
  confirmPID = 91&lt;br /&gt;
  // Wieviel Bilder dürfen hochgeladen werden&lt;br /&gt;
  maxImages = 1&lt;br /&gt;
  dateFormat = d.m.Y&lt;br /&gt;
  dateSplit = .&lt;br /&gt;
  salutation = informal&lt;br /&gt;
  siteName = KO rockt!  &lt;br /&gt;
  formFields = password,first_name, last_name, email,module_sys_dmail_html, module_sys_dmail_category,disable&lt;br /&gt;
  requiredFields = first_name,last_name,email&lt;br /&gt;
  email = steff@ko-rockband.de&lt;br /&gt;
  // nur mit RealURL ?&lt;br /&gt;
  useShortUrls = 1&lt;br /&gt;
  // Kategorien von Direct Mail&lt;br /&gt;
  module_sys_dmail_category_PIDLIST = 86&lt;br /&gt;
  // &lt;br /&gt;
  dmailCheckedUponRegistration = 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Sprachlabel anpassen&lt;br /&gt;
plugin.tx_srfeuserregister_pi1._LOCAL_LANG.de{&lt;br /&gt;
  v_really_wish_to_delete_informal = Willst Du Dein Konto wirklich löschen?&lt;br /&gt;
  v_your_account_was_created_informal = Dein Konto &amp;lt;strong&amp;gt;%2$s&amp;lt;/strong&amp;gt; wurde erstellt. Wir senden eine E-Mail an die Adresse &amp;lt;strong&amp;gt;%4$s&amp;lt;/strong&amp;gt;, damit Du die Anmeldung bestätigen kannst.&lt;br /&gt;
}&lt;br /&gt;
// Titel der Benutzerseite überschreiben (wird in E-Mails benutzt)&lt;br /&gt;
plugin.tx_srfeuserregister_pi1.pidTitleOverride = KO rockt! News&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel: sr_feuser_register für Newsletter einsetzen ==&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel geht es darum die Benutzer Registrierung für Direct Mail (direct_mail) einzubauen und zu konfigurieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Probleme lösen ==&lt;br /&gt;
=== Marker von eigenen Feldern mit TCA_INPUT werden nicht mehr ersetzt ===&lt;br /&gt;
Es wird nur noch der Marker ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Lösung: Extension über Hook anmelden&lt;br /&gt;
&lt;br /&gt;
siehe auch http://bugs.typo3.org/view.php?id=5846&lt;br /&gt;
&lt;br /&gt;
Seit sr_feuser_register muss jede Extension mit neuen Felder für fe_users angemeldet werden. Dasselbe gilt auch für sr:_email_subscribe und tt_address. Der Grund ist eine Code-Optimierung, damit im Frontend nicht mehr die $TCA einer jeden installierten Extension eingelesen werden muss, was eine Menge an RAM einspart, weil im $TCA auch viele Übersetzungstexte vorkommen.&lt;br /&gt;
&lt;br /&gt;
In der ext_localconf.php der Extension mit dem Extension Key meineext muss das eingetragen werden:&lt;br /&gt;
&lt;br /&gt;
 $GLOBALS[&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;EXTCONF&amp;#039;][&amp;#039;sr_feuser_register&amp;#039;][&amp;#039;extendingTCA&amp;#039;][] = &amp;#039;meineext&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
=== Fehlermeldung: sr_feuser_register: The form&amp;#039;s token is too short! ===&lt;br /&gt;
&lt;br /&gt;
Das kann an einem Bug in der Version: 2.5.25 liegen. Hierfür gibt es aktuell (1.5.2010) Kein Update aber einen Patch: http://bugs.typo3.org/view.php?id=14125&amp;amp;nbn=5&lt;br /&gt;
&lt;br /&gt;
Wichtig ist danach eine aktuelle div2007 Version (bei mir 0.3.1 aufzuspielen. Sonst gibts gleich die nächsten Fehler.&lt;br /&gt;
&lt;br /&gt;
== Anpassen ==&lt;br /&gt;
 http://blog.marit.ag/2010/02/03/sr_feuser_register-zusatzfeld/&lt;/div&gt;</summary>
		<author><name>91.47.237.205</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_TCA&amp;diff=18528</id>
		<title>Typo3 - TCA</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_TCA&amp;diff=18528"/>
		<updated>2010-05-03T18:34:28Z</updated>

		<summary type="html">&lt;p&gt;91.47.237.205: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TCA ist das Table Configuration Array von Typo3 ==&lt;br /&gt;
In diesem PHP Array wird konfiguriert, wie die Datenbankfelder von Typo3 und allen Extensions im Backend dargestellt werden. Also ob ein Feld als Text Input oder Selectbox dargestellt wird. Woher die Inhalte kommen, Sprachlabels, Validierung, Reiter, Wizards etc.&lt;br /&gt;
&lt;br /&gt;
Indem man dieses Array verändert hat man großen Einfluss auf das Typo3 Backend. Wenn eine Extension für die Frontenddarstellung darauf zugreift hat es auch Einfluss auf die Frontend Darstellung (Bsp. sr_feuser_register)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Zu Paletten: http://blog.marit.ag/2009/12/14/neue-tca-pallette/#more-457&lt;br /&gt;
&lt;br /&gt;
Position von Feldern, auf bestimmte Seitentypen beschränken: http://typo3-blog.net/tutorials/news/addtoalltcatypes.html&lt;br /&gt;
&lt;br /&gt;
== Welche Konfiguration hat ein bestimmtes Feld ? ==&lt;br /&gt;
&lt;br /&gt;
Im Backend Configuration Modul, da kann man sehen wie ein Feld konfiguriert ist.&lt;br /&gt;
&lt;br /&gt;
== Wie kann ich die Konfiguration verändern, bzw. eigene Felder anlegen ==&lt;br /&gt;
* Extension schreiben, mit dem Kickstarter Felder anlegen. &lt;br /&gt;
* Die Felder werden in ext_tables.php angelegt und können dort auch weiter bearbeitet werden. &lt;br /&gt;
* Welche Optionen es gibt steht in der Typo3 Core Api&lt;br /&gt;
&lt;br /&gt;
== Weiterführendes ==&lt;br /&gt;
Video von Irene Höppner&lt;br /&gt;
&lt;br /&gt;
== Wichtige Funktionen ==&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
== Probleme lösen ==&lt;br /&gt;
=== Überschreiben des TCA Wertes funktioniert nicht ===&lt;br /&gt;
Lösung: Oft ist die Reihenfolge des Einbindens der Extensions (localconf.php) und die Priorität (s.u.) entscheidend&lt;br /&gt;
&lt;br /&gt;
in ext_emconf.php meiner TCA-Überschreibe-Extension musste ich noch&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;priority&amp;#039; =&amp;gt; &amp;#039;top&amp;#039;,&lt;/div&gt;</summary>
		<author><name>91.47.237.205</name></author>
	</entry>
</feed>