<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Contao-Anleitungen.de</title><description /><link>http://www.contao-anleitungen.de/</link><language>de</language><pubDate>Sun, 04 Dec 2011 14:40:00 +0100</pubDate><generator>Contao Open Source CMS</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/contao-anleitungen" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="contao-anleitungen" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Schönere Passwort-Vergessen-Funktion mit Contao</title><description><![CDATA[<p><strong>Beim Anfordern eines vergessenen Passworts bietet der Contao-Core nur eine Seite über die sowohl das Anfordern des Passworts als auch das Eingeben des neuen Passworts erfolgt. Um den Seitenbesucher besser zu zeigen, was zu tun ist, ist es jedoch erforderlich, dies auf zwei Seiten zu verteilen. Auf der einen Seite wird nur Anforderung beschrieben, auf der zweiten beispielsweise wie das Passwort aufgebaut sein muss.<br></strong></p> <h2>Benötigt:</h2> <ul> <li>Serverumgebung mit der Möglichkeit für Rewrite-Regeln (z.B. mittels .htaccess)</li> </ul> <h2>Anleitung:</h2> <ol> <li>Lege folgende Seitenstrukur an oder ergänze die vorhandene Seitenstruktur entsprechend:<br><img title="Seitenstruktur für Passwort-vergessen-Funktionen" src="http://www.contao-anleitungen.de/tl_files/images-anleitungen/passwort-vergessen/seitenstruktur-passwort-vergessen.png" alt="Seitenstruktur für Passwort-vergessen-Funktionen" width="600" height="136"><br>Bei mir lauten die URLs dazu:<br>/login.html<br>/login/passwort-vergessen.html<br>/login/passwort-vergessen/bestaetigung.html&nbsp;<br>/login/passwort-zuruecksetzen.html<br>/login/passwort-zuruecksetzen/bestaetigung.html&nbsp;&nbsp;</li> <li>Lege ein Modul vom Typ "Passwort vergessen" an. Als Weiterleitungsseite verwendest du die erste Bestätigungsseite in der Liste, als Bestätigungsseite wählst du die zweite aus.</li> <li>Auf der Seite "Passwort vergessen" beschreibst du, dass man seine E-Mail-Adresse eingeben muss und dann ein neues Passwort erhält. Dort fügst du das Modul aus dem 2. Schritt ein. Auf der zugehörigen Bestätigungsseite beschreibst du, dass man nun eine E-Mail erhält und den darin befindlichen Link anklicken soll.</li> <li>Auf der Seite "Passwort zurücksetzen" beschreibst du, was ein sicheres Passwort ausmachst und fügst darunter das identische Modul ein. Auf der Bestätigungsseite reicht eine "alles ok" Meldung und ein Link zum Login.</li> <li>Nun wird beim erzeugen der E-Mail mit dem Bestätigungslink immer noch auf /login/passwort-vergessen.html?token=xxx verlinkt. Hier bietet Contao keine Konfiguration an, daher erledigen wir das über eine Weiterleitung de Aufrufe mit dem Token in der .htaccess:<br><em># Rewrite for password reset</em><br><em>RewriteCond %{QUERY_STRING} token=(.*) [NC]</em><br><em>RewriteRule .*login\/passwort-vergessen.html$ /login/passwort-zuruecksetzen.html?token=%1 [L,R=301]<br></em>Diese Zeilen musst du vor der allgemeinen Weiterleitungsregel von Contao einfügen und natürlich auf deine Seitennamen anpassen.</li> </ol><ul class="tagged"> 	<li>passwort</li> 	<li>mitglied</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/schoenere-passwort-vergessen-funktion-mit-contao.html</link><pubDate>Sun, 04 Dec 2011 14:40:00 +0100</pubDate><guid>http://www.contao-anleitungen.de/post/schoenere-passwort-vergessen-funktion-mit-contao.html</guid></item><item><title>Geschlechtsspezifische Anrede von Mitgliedern per Insert-Tag</title><description><![CDATA[<p><strong>Eingeloggte Mitglieder einer Webseite namentlich zu begrüßen, macht einen schönen persönlichen Eindruck. Allerdings stellt Contao nur Insert-Tags für die Mitgliederfelder bereit, nicht jedoch für eine geschlechtsspezifische Anrede. Im folgenden Beispiel erstelle ich ein neues Insert-Tag, welches je nach Geschlecht "Liebe" oder "Lieber" ausgibt.<br></strong></p> <h2>Benötigt:</h2> <ul> <li>Erweiterung <a href="http://www.contao.org/de/extension-list/view/inserttags.de.html">inserttags</a></li> </ul> <h2>Anleitung:</h2> <ol> <li><strong>Installiere</strong> die Erweiterung <a href="http://www.contao.org/de/extension-list/view/inserttags.de.html">inserttags</a>.</li> <li>Im neuen Menüpunkt Platzhalter legst du nun zwei neue Einträge an, die jeweils folgende Einstellungen haben:<br>- Platzhalter: "liebeanrede"<br>- Beschreibung "Anrede als Liebe" bzw. "Anrede als Lieber"<br>- Ersatz: "Liebe" bzw. "Lieber"<br>- TinyMCE deaktivieren (anschließend die p-Tags aus dem Ersatz entfernen!)<br>- Bedingung aktivieren<br>- Abfragetyp: Text<br>- Formel: gleich<br>- Abfrage: {&nbsp;{user::gender}&nbsp;}&nbsp;(beim Kopieren die Leerzeichen entfernen!)<br>- Wert: "Weiblich" bzw. "Männlich"</li> <li>Wenn das Geschlecht bei den Mitgliedern auch leer sein kann, muss noch ein Fallback geschaffen werden. Dazu als dritten Insert-Tag anlegen:<br>- Platzhalter: "liebeanrede"<br>- Beschreibung "Anrede als Hallo"<br>- Ersatz: "Hallo"<br>- TinyMCE deaktivieren (anschließend die p-Tags aus dem Ersatz entfernen!)<br>- Keine Bedingung aktivieren</li> <li>Verwendet die Webseite mehrere Sprachen müssen die Einträge sprachspezifisch pro Sprache angelegt werden.</li> <li> <div>Nun kannst du das Insert-Tag {&nbsp;{custom::liebeanrede}&nbsp;} verwenden um die Anrede "Liebe" bei weiblichen Mitgliedern bzw. "Lieber" bei männlichen Mitgliedern zu erhalten. Nutze also beispielsweise {&nbsp;{custom::liebeanrede}&nbsp;} {&nbsp;{user::firstname}&nbsp;} (Auch hier die Leerzeichen entfernen, wenn ihr die Insert-Tags kopiert!)</div> </li> </ol><ul class="tagged"> 	<li>mitglied</li> 	<li>inserttag</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/geschlechtsspezifische-anrede-von-mitgliedern-per-insert-tag.html</link><pubDate>Thu, 17 Nov 2011 01:49:00 +0100</pubDate><guid>http://www.contao-anleitungen.de/post/geschlechtsspezifische-anrede-von-mitgliedern-per-insert-tag.html</guid></item><item><title>Formulare oder Seiten (von Gewinnspielen) nur einmal aufrufbar machen</title><description><![CDATA[<p><strong>Bei einigen Funktionen von Webseiten, beispielweise Gewinnspielformularen, ist es gewünscht, dass der Seitenbesucher diese nur einmal aufrufen darf. Zumindest um technische Laien von mehrfachen Einsendungen abzuhalten und bei allen Zielgruppen eine versehentliche mehrfache Nutzung zu verhindern, können sehr einfach und effektiv Cookies eingesetzt werden.<br></strong></p> <h2>Benötigt:</h2> <ul> <li>Erweiterung <a href="http://www.contao.org/de/extension-list/view/ce-tracking.de.html">ce-tracking</a></li> <li>Erweiterung <a href="http://www.contao.org/de/extension-list/view/zCheckCookie.de.html">zCheckCookie</a></li> </ul> <h2>Anleitung:</h2> <ol> <li><strong>Installiere</strong> die Erweiterungen <a href="http://www.contao.org/de/extension-list/view/ce-tracking.de.html">ce-tracking</a> und <a href="http://www.contao.org/de/extension-list/view/zCheckCookie.de.html">zCheckCookie</a>.</li> <li>Erstelle eine <strong>Seitenstruktur mit drei Seiten</strong>: Der zu prüfenden Seite (hier: Gewinnspielformular), die Seite nach dem Durchführen der Aktion (hier: Teilnahmebestätigung) und eine Seite mit der entsprechenden Fehlermeldung. Alle Seiten müssen auf einer Hierarchieebene liegen, weil wir sonst einen Endlos-Loop von Weiterleitungen erzeugen. Hier ein Beispiel:<br><img title="Beispiel Seitenstruktur" src="http://www.contao-anleitungen.de/tl_files/images-anleitungen/gewinnspiel-pruefung/seitenstruktur.png" alt="Beispiel Seitenstruktur" width="600" height="158"></li> <li>Füge nun zunächst in den Artikel der Bestätigungsseite ein <strong>neues Content-Element vom Typ "Tracking Cookie"</strong> ein. Verwende dabei einen eindeutigen einen eindeutigen Cookienamen, den Wert "1" und eine Laufzeit, die derjenigen der Aktion entspricht. Die Angabe ist in Sekunden, bei 7 Tagen also 60480 Sekunden (7*24*60*60). Da wir einen zweiten Aufruf dieser Seite ja gerade verhindern wollen, spielt die Option zum Überschreiben bestehender Cookies keine Rolle.</li> <li>Editiere als nächstes die Seiteneinstellungen der Seite, die nur einmal durchgeführt werden darf. Unter "Zugriffsschutz" finden sich dort nun einige zusätzlichen Felder. Aktiviere "Weiterleiten wenn Cookie fehlt (bzw. vorhanden ist)" und "Weiterleiten wenn Cookie existiert". Trage nun den oben gesetzten Cookie-Name und den Wert "1" ein und wähle als "Weiterleitungsseite" die oben angelegte Fehlerseite.</li> </ol> <p>Beim ersten Aufrufen der Seite ist nun alles in Ordnung: Der Cookie ist noch nicht gesetzt, es wird nicht weitergeleitet. Nach der Durchführung der Aktion wird auf der Bestätigungsseite der Cookie gesetzt. Bei einem zweiten Zugriff wird bei der Prüfung auf das Vorhandensein des Cookies dieses entdeckt und direkt auf die Fehlerseite weitergeleitet.</p><ul class="tagged"> 	<li>gewinnspiel</li> 	<li>formular</li> 	<li>cookie</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/formulare-oder-seiten-von-gewinnspielen-nur-einmal-aufrufbar-machen.html</link><pubDate>Thu, 17 Nov 2011 00:27:00 +0100</pubDate><guid>http://www.contao-anleitungen.de/post/formulare-oder-seiten-von-gewinnspielen-nur-einmal-aufrufbar-machen.html</guid></item><item><title>Google Analytics datenschutzkonform einsetzen</title><description><![CDATA[<p><strong>Für den datenschutzrechtlich korrekten Betrieb von Google Analytics sind verschiedene Voraussetzungen notwendig, die kürzlich zwischen dem Hamburger Datenschutzbeauftragten und Google vereinbart worden sind. Eine ausführliche<a href="http://rechtzweinull.de/index.php?/archives/186-Datenschutzkonforme-Nutzung-von-Google-Analytics-nun-auch-nach-Auffassung-der-Datenschutzbehoerden-moeglich-und-die-Erkenntnisse-fuer-den-Facebook-Like-Button.html"> rechtliche Betrachtung</a> gibt es bei Carsten Ulbricht. Die Erweiterung <a href="http://www.contao.org/de/extension-list/view/googleanalytics.de.html">googleanalytics</a> vereinfacht die Umsetzung der Vorgaben durch konkrete Einstellungsmöglichkeiten und einen Insert-Tag.</strong></p> <p>Hinweis: Die Umsetzung ist auch durch manuelle Anpassungen an dem Template moo_analytics und Einstellen und weiteres Pflegen des Datenschutzhinweises möglich. Ich denke aber, dass es auf diesem Weg doch einfacher geht. ;-)</p> <h2>Benötigt:</h2> <ul> <li>Erweiterung <a href="http://www.contao.org/de/extension-list/view/googleanalytics.de.html">googleanalytics</a> <strong>ab Version 1.3.1</strong> (in vorherigen Versionen steht der Insert-Tag nicht zur Verfügung!)</li> </ul> <h2>Anleitung:</h2> <ol> <li><strong>Installiere </strong>die Erweiterung <a href="http://www.contao.org/de/extension-list/view/googleanalytics.de.html">googleanalytics</a>.</li> <li><strong>Lösche alle alten Daten deines Kontos</strong>, weil diese unrechtmäßig gesammelt worden sind. (Dazu musst du das alte löschen und ein neues anlegen.)</li> <li>Wenn du <strong>bislang das Template moo_analytics</strong> zum Tracking verwendet hast, entferne dieses aus allen Seitenlayouts.</li> <li>Öffne jeden <strong>Startpunkt einer Webseite</strong> in der Seitenstruktur und trage dort deine neue Analytics-ID ein. Aktiviere unbedingt die Option&nbsp;<strong>IP anonymisieren</strong>. Das aktiviert die in Deutschland nötige <a href="http://www.google.com/support/analytics/bin/answer.py?hlrm=en&amp;answer=181782">IP-Maskierungs-Funktion</a> von Google Analytics.</li> <li>Lege - wenn noch nicht vorhanden - eine Seite zu den Datenschutzhinweisen an (ähnlich dieser <a href="http://www.contao-anleitungen.de/datenschutz.html">Seite</a>). Verwendet dort das <strong>Insert-Tag { {ga::privacytext} }</strong>. Es enthält den jeweils aktuellen Text aus den <a href="http://www.google.com/intl/de/analytics/tos.html">Google Analytics Nutzungsbedinungen</a> für Deutschland inklusive dem notwendigen Link auf die OptOut-Möglichkeit.</li> <li>Fülle folgenden <a href="http://static.googleusercontent.com/external_content/untrusted_dlcp/www.google.de/de/de/intl/de/analytics/tos.pdf">Vertrag</a> aus und sende ihn an Google</li> </ol> <p><strong>ACHTUNG:</strong> Diese Anleitung basiert auf den aktuellen rechtlichen Einschätzungen anhand öffentlich zugänglicher Artikel. Er stellt keine Rechtsberatung dar. Der absolut rechtssichere Einsatz von Google Analytics kann auch bei der Einhaltung aller hier von mir beschriebener Schritte nicht garantiert werden! Der Autor dieses Artikels schließt daher grundsätzlich jegliche Haftung in Zusammenhang mit dieser Anleitung aus!</p><ul class="tagged"> 	<li>googleanalytics</li> 	<li>google</li> 	<li>datenschutz</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/google-analytics-datenschutzkonform-einsetzen.html</link><pubDate>Mon, 24 Oct 2011 13:06:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/google-analytics-datenschutzkonform-einsetzen.html</guid></item><item><title>Prüfen ob eine Contao-Erweiterung installiert ist</title><description><![CDATA[<p><strong>Bei der Entwicklung von eigenen Contao-Erweiterungen gibt es teilweise Abhängigkeiten von anderen Erweiterungen. Handelt es sich um die Notwendigkeit, dass diese installiert ist, kann man das im Contao Extension Repository eintragen. Möchte man nur das Verhalten der eigenen Erweiterung anpassen, wenn eine andere Erweiterung vorhanden bzw. nicht vorhanden ist, muss dies selbst geprüft werden. Diese Anleitung erklärt, wie dies geht.</strong></p> <h2>Benötigt:</h2> <ul> <li>PHP-Kenntnisse</li> </ul> <h2>Anleitung:</h2> <h3>Über das Contao-Framework</h3> <p>Innerhalb des Contao-Frameworks beschreibt Glen in seiner <a href="http://www.contao.glen-langer.de/extension-xyz-installiert.html">Anleitung</a> eine einfach und elegante Möglichkeit:</p> <p>if (in_array('XYZ', $this-&gt;Config-&gt;getActiveModules()))<br>{<br>&nbsp;&nbsp;// Code wenn Erweiterung vorhanden und aktiviert ist<br>} <br>else<br>{<br> &nbsp;&nbsp;// Code wenn Erweiterung nicht vorhanden bzw. deaktiviert ist<br>}</p> <p>Der <strong>Nachteil dieser Methode</strong> besteht lediglich darin, dass sie nur funktioniert, wenn $this bereits entsprechend vorhanden ist. Möchte man die Abfrage beispielsweise bereits in der DCA vornehmen, ist dies nicht möglich.</p> <h3>Über einen Dateizugriff</h3> <p>An solchen Stellen verwende ich die Prüfung, ob eine Datei existiert und über die Konfiguration, ob die Erweiterung deaktiviert ist - hier am Beispiel der Erweiterung "xtmembers":</p> <p>if ((!file_exists(TL_ROOT . '/system/modules/xtmembers/dca/tl_member.php')) || (in_array("xtmembers", deserialize($GLOBALS['TL_CONFIG']['inactiveModules']))))<br>{<br>&nbsp;&nbsp;// Code wenn Erweiterung installiert ist<br>}&nbsp;<br>else<br>{<br>&nbsp;&nbsp;// Code wenn Erweiterung nicht installiert ist<br>}</p> <p>Auch diese Methode hat einen <strong>Nachteil</strong>: Der Dateizugriff dauert natürlich länger, so dass die erste Variante aus Performance-Gründe zu bevorzugen ist.</p><ul class="tagged"> 	<li>php</li> 	<li>erweiterung</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/pruefen-ob-contao-erweiterung-installiert-ist.html</link><pubDate>Mon, 17 Oct 2011 10:06:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/pruefen-ob-contao-erweiterung-installiert-ist.html</guid></item><item><title>CSS von Contao optimieren</title><description><![CDATA[<p><strong>Der Contao-Core bietet einige Optionen zur Reduzierung der CSS-Ausgaben, so dass die Webseite schneller geladen und dargestellt werden kann. Diese sollten in vollem Umfang genutzt und zusätzlich einige weitere Optimierungen der CSS-Ausgaben vorgenommen werden, beispielsweise das Entfernen der contao.css und des Inline-CSS.<br></strong></p> <h2>Benötigt:</h2> <ul> <li>Einige der folgenden Punkte stehen erst ab Contao 2.10 zur Verfügung und sind entsprechend markiert</li> <li>Erweiterung <a href="http://www.contao.org/de/extension-list/view/holygrail.de.html">holygrail</a></li> </ul> <h2>Anleitung:</h2> <h3>CSS-Dateien zusammenfassen (nur bis Contao 2.9.5)</h3> <p>Für alle Layouts unter "Stylesheets" die Option "<strong>Stylesheets zusammenfassen</strong>" aktivieren. Dadurch werden alle CSS-Dateien in einer einzigen Datei zusammengefasst und als solche dem Webbrowser zur Verfügung gestellt. (Aber Version 2.10 wird dies automatisch durchgeführt.)</p> <h3>CSS-Dateien komprimieren (ab Contao 2.10)</h3> <p>In den Einstellungen gibt es unter "Globale Einstellungen" ab Contao 2.10 die Option "<strong>Skripte komprimieren</strong>". Dabei werden alle unnötigen Zeichen (z.B. Kommentare, Leerzeichen und Zeilenumbrüche) aus CSS- und Javascript-Dateien entfernt. Dadruch werden die Dateien teilweise deutlich kleiner.</p> <p>Allerdings kann dies zu Fehlern bei Javascript-Code führen, daher sollte nach dem Aktivieren der Option geprüft werden, ob genutzte Javascript-Funktionen noch alle funktionieren.</p> <h3>Zusätzlichen Aufruf von contao.css und Inline-CSS entfernen</h3> <ol> <li><strong>Installiere </strong>die Erweiterung <a href="http://www.contao.org/de/extension-list/view/holygrail.de.html">holygrail</a>.</li> <li>Kopiere die CSS-Datei <em>/system/modules/holygrail/html/holygrail.css</em>&nbsp;nach <em>tl_files</em>.</li> <li>Öffne den Seitenquelltext und kopiere dort das von Contao erzeugte Inline-CSS heraus. (Deaktiviere dazu die Markup-Komprimieurng in den Einstellungen oder nutze Tools wie Firebug. Das macht das Kopieren leichter.) Speichere dieses als <em>tl_files/inline.css</em>. Wiederhole diesen Vorgang mit anderen Dateinamen für jede alternative Einstellung von Spaltenbreiten und/oder Kopf- bzw. Fußzeilenhöhe.</li> <li>Importiere die <em>holygrail.css</em> und <em>inline.css</em> (und ggf. weitere CSS-Dateien) in die CSS-Einstellungen jedes Themes.</li> <li>Lösche die Dateien unter <em>tl_files</em> wieder.</li> <li>Füge in allen Seitenlayouts die neue CSS-Datei <em>holygrail</em> überall als erste Datei hinzu. Als zweite Datei fügst du überall die passende <em>inline</em>-Variante hinzu. Zusätzlich aktivierst du unter "Experten Einstellungen" im Seitenlayout die Optionen "CSS nicht einbinden" und "Inline-CSS nicht einbinden".</li> </ol> <p>Bei Updates ist nun ggf. die holygrail.css neu zu importieren, wenn sich diese geändert hat. Beim Ändern von Spalte-Breiten bzw. der Höhe von Kopf- oder Fußzeilen muss die Ersetzung des Inline-CSS entsprechend angepasst werden.</p><ul class="tagged"> 	<li>optimierung</li> 	<li>geschwindigkeit</li> 	<li>css</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/contao-css-optimieren.html</link><pubDate>Tue, 30 Aug 2011 15:23:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/contao-css-optimieren.html</guid></item><item><title>Große Hintergrundbilder nicht für mobile Endgeräte laden</title><description><![CDATA[<p><strong>Großflächige Hintergrundbilder, die auf vielen Webseiten genutzt werden (Beispiel: <a href="http://kurvenkoenig.de/">Kurvenkoenig.de</a>), verzögern bei mobilen Endgeräten wie etwa Handys den Seitenaufbau erheblich und können dort nur unzureichend oder gar nicht dargestellt werden. Daher empfiehlt sich große Hintergrundbilder per CSS für solche Geräte zu deaktivieren. Ein möglicher Weg hierzu ist die Nutzung der Body-Klasse "mobile". <br></strong></p> <h2>Benötigt:</h2> <ul> <li>Erweiterung <a href="http://www.contao.org/de/extension-list/view/browsercss.de.html">browsercss</a> (bis Contao 2.9, ab Version 2.10 im Core vorhanden)</li> </ul> <h2>Anleitung:</h2> <ol> <li><strong>Installiere </strong>die Erweiterung <a href="http://www.contao.org/de/extension-list/view/browsercss.de.html">browsercss</a> wenn du eine Contao bis Version 2.9 einsetzt. (Ab 2.10 stehen die zusätzlichen Body-Klassen im Core zur Verfügung.)</li> <li>Lege eine <strong>neue CSS-Anweisung</strong> an, die nur für das Hintergrundbild genutzt wird. Nutze für diese den Selektor "body:not(.mobile)", also beispielsweise folgenden Code:<br> <em>body:not(.mobile)</em><br><em> {</em><br><em> &nbsp;&nbsp;background-color:#f0f0f0;</em><br><em> &nbsp;&nbsp;background-image:url("tl_files/foo/bar.jpg");</em><br><em> &nbsp;&nbsp;background-repeat:no-repeat;</em><br><em> }</em></li> <li>Da es sich um einen <strong>CSS3-Selektor</strong> handelt, versteht der <strong>Internet Explorer</strong> die Anweisung leider in älteren Versionen nicht. Daher muss dieser CSS-Block nochmals kopiere werden und den Selektor "body.ie" erhalten.</li> <li>Führe diese Schritte <strong>für jedes Layout</strong> aus, wenn du mehrere Layouts nutzt.</li> </ol><ul class="tagged"> 	<li>mobile</li> 	<li>css</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/grosse-hintergrundbilder-nicht-fuer-mobile-endgeraete-laden.html</link><pubDate>Wed, 03 Aug 2011 12:52:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/grosse-hintergrundbilder-nicht-fuer-mobile-endgeraete-laden.html</guid></item><item><title>Google-Plus-1-Button neben Twitter und Facebook einfügen</title><description><![CDATA[<p><strong>Contao stellt von Haus aus einen Button zur Integration von Twitter und Facebook bereit. Der Google-Plus-1-Button fehlt jedoch noch im Contao-Core, so dass wir diesen manuell nachrüsten müssen um Nutzer von Google+ zu bedienen und etwas Einfluss auf die Trefferliste von Google zu nehmen. Dabei soll die Integration natürlich unmittelbar neben den bestehenden Buttons erfolgen. <br></strong></p> <h2>Benötigt:</h2> <ul> <li>Erweiterung <a href="http://www.contao.org/de/extension-list/view/googleplus1.de.html">googleplus1</a></li> </ul> <h2>Anleitung:</h2> <ol> <li><strong>Installiere </strong>die Erweiterung <a href="http://www.contao.org/de/extension-list/view/googleplus1.de.html">googleplus1</a>.</li> <li>Öffne die Einstellungen und trag dort unter "Google+1 Einstellungen" die gewünschte Sprache ein. Aktiviere zudem die Checkbox "Initialisierung immer hinzufügen".</li> <li>Lege ein neues Modul vom Typ "Google+1 Knopf" an. Wähle dir Größe "klein" damit der Button zu den anderen passt und nach Wunsch die Zählereinstellung. Merke dir die ID des angelegten Moduls. (Diese wird bei Editieren des Moduls ganz oben angezeigt als "Datensatz ID xx bearbeiten".)</li> <li>Falls noch nicht vorhanden, lege eine Kopie des Templates mod_article an.</li> <li>Editiere das Template mod_article und füge folgende neue rot markierte Zeile an der gezeigten Stellen ein. Ersetze dabei XX mit der oben gemerkten Id des Moduls und entferne die Leerzeichen von der insert_module-Anweisung.<br>&lt;?php if ($this-&gt;twitterButton): ?&gt;<br>&nbsp; &lt;a href="http://www.contao-anleitungen.de/share.php?p=twitter^[...]&gt;&lt;/a&gt;<br>&lt;?php endif; ?&gt;<br><span style="color: #ff0000;">{ { insert_module::XX } }</span><br>&lt;/div&gt;</li> <li>Jetzt wird der Google+1 Button bereits angezeigt, befindet sich aber noch in einer Zeile unterhalb der anderen Buttons. Je nach CSS für den Rest der Seite sollte in derRegel folgende CSS-Einstellung den Button in die selbe Zeile "heben":<br>Selektor: ".mod_googleplus1button"<br>Eigenschaft: "display:inline;"</li> <li>Führe die Schritte 3 bis 6 für jedes Theme aus, wenn du mehrere Themes verwendest.</li> </ol><ul class="tagged"> 	<li>google+</li> 	<li>google</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/google-plus-1-button-einfuegen.html</link><pubDate>Fri, 29 Jul 2011 10:18:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/google-plus-1-button-einfuegen.html</guid><enclosure url="http://:/tl_files/images-anleitungen/beispiel-integration.png" length="12277" type="image/png" /></item><item><title>Hinweisseite für Internet-Explorer-6-Benutzer einrichten</title><description><![CDATA[<p><strong>Der Aufwand, spezielle Layouts für den Internet Explorer 6 zu erstellen, lohnt sich für viele Webseiten nicht. Dennoch haben auch diese Webseiten noch Besucher, die diesen alten Browser einsetzen. Ein möglicher Weg ist es, diesen Personen beim ersten Seitenaufruf einen entsprechenden Hinweis anzuzeigen. Anschließend können sie die Seite dennoch betreten und wissen warum die Darstellung so „kaputt“ aussieht.<br></strong></p> <h2>Benötigt:</h2> <ul> <li>Erweiterung <a href="http://www.contao.org/de/extension-list/view/ce-tracking.de.html">ce-tracking</a></li> <li>Erweiterung <a href="http://www.contao.org/de/extension-list/view/redirect.de.html">redirect</a></li> </ul> <h2>Anleitung:</h2> <p>Diese Anleitung kann <strong>nicht nur für den Internet Explorer 6</strong> sondern auch für zahlreiche andere Browser vorgenommen werden.</p> <ol> <li><strong>Installieren</strong> Sie die Erweiterungen <a href="http://www.contao.org/de/extension-list/view/ce-tracking.de.html">ce-tracking</a> und <a href="http://www.contao.org/de/extension-list/view/redirect.de.html">redirect</a>.</li> <li>Erstellen Sie ein <strong>spezielles Seitenlayout</strong>, welches nur für die Hinweisseite verwendet wird. Zumindest dieses sollte der IE6 ordentlich anzeigen können.</li> <li>Legen Sie eine <strong>Hinweisseite</strong> für Nutzer des Internetexplorer (z.B. mit dem Alias „ie6“) und eine <strong>zweite Seite</strong> an die nach dem Hinweis aufgerufen wird (z.B. mit dem Alias “ie6bestaetigung”). Stellen Sie bei beiden Seiten das soeben angelegte Seitenlayout ein. Die Seite sollte nicht über Suchmaschinen zu finden sein, weshalb Sie auch noch die folgenden Einstellungen vergeben sollten: Robots-Tag: „noindex,follow“, „Nicht durchsuchen“, „Im Menü verstecken“ und „In der Sitemap anzeigen“ auf „nie anzeigen“. (Weitere Werte je nach installierten Erweiterungen.)<br><img title="Seiten in der Seitenstruktur" src="http://www.contao-anleitungen.de/tl_files/images-anleitungen/iex6-hinweisseite/contao-seitenstruktur.png" alt="Seiten in der Seitenstruktur" width="620" height="78"></li> <li>Legen Sie auf der <strong>Hinweisseite</strong> einen entsprechenden <strong>Hinweistext</strong> an, warum Sie den Internet Explorer 6 nicht mehr unterstützen. Fügen Sie am Ende einen Bestätigungslink ein, den Sie mit der Bestätigungsseite verknüpfen. (<a href="http://www.etes.de/ie6/">Beispiel</a> für eine solche Seite.)</li> <li>Fügen Sie der <strong>Bestätigungsseite</strong> ein neues <strong>Content-Element vom Typ „Tracking Cookie</strong>“ hinzu. Dieses definiert einen Cookiename, dessen Wert und seine Laufzeit. Verwenden Sie eine sehr lange Laufzeit (die Angabe ist in Sekunden), einen Namen wie “ie6accept” und einen Wert wie “true”. Leiten Sie zudem auf Ihre Startseite weiter.<br><img title="Beispiel für den Tracking-Cookie" src="http://www.contao-anleitungen.de/tl_files/images-anleitungen/iex6-hinweisseite/cookie-setzen.png" alt="Beispiel für den Tracking-Cookie" width="620" height="432"></li> <li>Damit steht die Hinweis- und Bestätigungsseite. Nun müssen noch alle Zugriffe mit dem Internet Explorer 6 dorthin weitergeleitet werden.<br>Dazu legen wir ein <strong>neues Modul</strong> an. Dieses benennen Sie enstprechend (z.B. „Browser: Redirect IEX 6“) und wählen den <strong>Typ „Weiterleitung bestimmter Browser“</strong> aus. Tragen Sie dann in der Modulkonfiguration den weiterzuleitenden Browser sowie dessen Version ein und schließen Sie Borowser mit dem soeben definierten Cookie aus. Schließlich wählen Sie noch als Weiterleitungsziel in Schritt 2 angelegte Hinweisseite.<br><img title="Browser-Weiterleitung" src="http://www.contao-anleitungen.de/tl_files/images-anleitungen/iex6-hinweisseite/browser-weiterleitung.png" alt="Browser-Weiterleitung" width="696" height="713"></li> <li>Weisen Sie dieses neue Modul allen <strong>Seitenlayouts</strong> bis auf das oben angelegte Seitenlayout für die Hinweisseite zu.</li> <li>Ab sofort werden alle Zugriffe des Internet Epxlorer 6 auf die Hinweisseite geleitet. Wird auf dieser einmal der Hinweis angeklickt, wird ein Cookie gesetzt und die Seite diesem Besucher auf diesem Browser nicht mehr angezeigt.</li> </ol> <h2>Testen:</h2> <p>Zum Test der Weiterleitung wird der weiterzuleitende Browser benötigt. Alternativ kann mit dem Firefox-Plugin <a href="https://addons.mozilla.org/de/firefox/addon/59/">User Agent Switcher</a> ein alternativer Browser simuliert werden.</p><ul class="tagged"> 	<li>redirect</li> 	<li>internet explorer</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/hinweisseite-fuer-internet-explorer-6-benutzer-einrichten.html</link><pubDate>Tue, 05 Oct 2010 16:32:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/hinweisseite-fuer-internet-explorer-6-benutzer-einrichten.html</guid></item><item><title>Formularfelder über GET-Parameter in der URL vorbelegen</title><description><![CDATA[<p><strong>Es ist oft eine Erleichterung für Webseitenbesucher, wenn Formulare bereits mit situationsabhängigen Werten vorbelegt sind. Beispielsweise wenn bereits das gewünschte Thema oder der richtige Ansprechpartner vorbelegt sind - jeweils abhängig von der Seite, von der aus man das Formular aufgerufen hat. Diese Anleitung beschreibt, wie dies auf einfachem Weg mittels GET-Parameter realisiert werden kann.<br></strong></p> <h2>Benötigt:</h2> <ul> <li>Erweiterung <a href="http://www.contao.org/de/extension-list/view/inputvar.de.html">inputvar</a></li> </ul> <h2>Anleitung:</h2> <p><strong>WICHTIG:</strong> Bitte bei den Insert-Tags die Leerzeichen zwischen den beiden geschweiften Klammern entfernen.</p> <ol> <li>Installieren Sie die Erweiterung <a href="http://www.contao.org/de/extension-list/view/inputvar.de.html">inputvar</a>.</li> <li>Öffnen Sie in dem zuvor angelegten Kontaktformular die Felder die vorbelegt werden können sollen. Tragen Sie dort unter Experten-Einstellungen/Standard-Wert ein: { {get::feldname} } (Wenn dieses Feld nicht vorhanden ist, siehe Beschreibung des Sonderfalls unten.) Dabei ist "feldname" eine eindeutige Bezeichnung des Feldes, die keine Sonderzeichen enthalten darf. <br>In dem folgenden Beispiel gehen wir davon aus, dass es zwei solche Felder gibt: "ansprechpartner" und "thema".</li> <li>Öffnen Sie nun in dem Artikel, aus dem Sie auf ein vorbelegtes Kontaktformular verlinken möchten, das entsprechende Content-Element. Erstellen Sie im Text-Editor einen ganz normalen Link auf die Kontaktformular-Seite.</li> <li>Wechseln Sie in die HTML-Ansicht des Editors und suchen Sie dort den Link. Er sieht etwa so aus: &lt;a href="http://www.contao-anleitungen.de/{ {link_url::XXX} }"&gt; (Dabei ist XXX die Contao-Id der Seite.)</li> <li>Diesen Link können Sie nun um soegenannte GET-Parameter ergänzen. Diese werden jeweils als "feldname=wert" angefügt. Der Wert darf dabei keine Sonderzeichen enthalten, auch keine Leerzeichen.<br>Sollten Sie Sonderzeichen benötigen, muss der Text beispielsweise <a href="http://www.albionresearch.com/misc/urlencode.php">hier</a> mittels urlencode "kodiert" werden. Aus "Manfred Müller" wird dabei beispielsweise "Manfred+M%FCller".<br>Die erste Angabe wird am Ende der URL angehängt und durch ein ? angetrennt, die weiteren Angaben durch ein &amp;.<br>Beispiel mit einem Parameter:<br>&lt;a href="http://www.contao-anleitungen.de/{ {link_url::XXX} }?ansprechpartner=Manfred+M%FCller"&gt;<br>Beispiel mit zwei Parametern:<br>&lt;a href="http://www.contao-anleitungen.de/{ {link_url::XXX} }?ansprechpartner=Zentrale&amp;thema=Test"&gt;</li> <li>Wechseln Sie zurück in die normale Ansicht und speichern Sie ihre Anpassungen.</li> </ol> <h2>Externe Aufrufe</h2> <p>Auch bei externen Aufrufen kann das Formular über GET-Parameter vorbelegt werden. Diese müssen wie oben beschrieben an die ganz normale URL angehängt werden. Beispiel:<br>http://www.firmenbezeichnung.de/kontakt.html?ansprechpartner=Zentrale&amp;thema=Test</p> <h2><strong>Sonderfall: Felder ohne Default-Wert</strong></h2> <p>Einige Feldtypen haben in Contao keine Einstellung für den Default-Wert. In diesem Fall die Anleitung von oben bis auf Schritt 2 durchführen und statt dessen:</p> <ol> <li>Ein neues Modul vom Typ "Eigener HTML-Code" anlegen.</li> <li>Dort folgen JavaScript-Code eintragen:<br>&lt;script type="text/javascript"&gt;&lt;!--<br>document.getElementById("ctrl_XX").value = { {get::feldname} };<br>--&gt;&lt;/script&gt;<br>Dabei muss "ctrl_XX" durch die HTML-Id des Feldes und "feldname" durch den Feldname für den Get-Parameter (wie oben beschreiben) ersetzt werden.<br>Sollen mehrere derartige Felder vorbelegt werden, die mittlere Zeile für jedes Feld eintragen.</li> <li>Dieses neue Modul nach dem Formular einfügen.</li> </ol><ul class="tagged"> 	<li>vorbelegen</li> 	<li>url</li> 	<li>get</li> 	<li>formular</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/formularfelder-get-url-vorbelegen.html</link><pubDate>Wed, 25 Aug 2010 12:25:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/formularfelder-get-url-vorbelegen.html</guid></item><item><title>Sprachabhängige Inhalte in Templates bereitstellen</title><description><![CDATA[<p><strong>Bei mehrsprachigen Projekten ist es oft notwendig, in einem Template sprachabhängig unterschiedliche Inhalte darzustellen. </strong><strong>Doch viele Templates gibt es in Contao nur einmal. Sie können nicht pro Sprache jeweils ein neues Template anlegen. Und an den Stellen, bei denen dies geht, ist es oft ein deutlicher Mehraufwand.<br></strong></p> <p><strong>Also müssen Sie in einem Template je nach Sprache des Betrachters unterschiedliche Inhalte ausgeben können. Das kann Contao, es gibt sogar drei Möglichkeiten dafür.</strong></p> <p>In den folgenden Beispielen gehen wir von einer Tabelle aus, die sprachabhängige Spaltenüberschriften erhalten soll.<strong></strong></p> <p><strong>Für alle drei Methoden gilt:</strong> Die Sprache richtet sich nicht unbedingt nach der Browsersprache des Benutzers, sondern stets und bei allen drei Methoden nach der Einstellung der Seite in der Seitenstruktur.</p> <p>Wenn Ihr Benutzer je nach Browsersprache unterschiedliche Inhalte sehen soll, müssen Sie für verschiedene Sprachen verschiedene Startpunkte anlegen, und komplett eingene Seitenbäume betreiben.</p> <h2>Inserttag</h2> <p>Contao stellt das <a href="http://www.contao.org/de/extension-list/view/inserttags.de.html">Inserttag</a> {&shy;{iflng}} zur Verfügung. Über die Ergänzung durch ein Sprachkürzel funktioniert das beispielsweise so: {&shy;{iflng::de}}Hallo Welt!{&shy;{iflng}}{&shy;{iflng::en}}Hello World!{&shy;{iflng}}. Wenn die Sprache nun Englisch ist, wird nur „Hello World!“ ausgeben, bei Deutsch ensprechend „Hallo Welt!“.</p> <p>Auf die Tabelle bezogen sieht das etwa so aus:</p> <pre>&lt;table&gt;<br>&lt;thead&gt;<br>&lt;tr&gt;<br>&lt;th&gt;{&shy;{iflng::en}}Heading 1{&shy;{iflng}}{&shy;{iflng::de}}Überschrift 1{&shy;{iflng}}&lt;/th&gt;<br>&lt;th&gt;{&shy;{iflng::en}}Heading 2{&shy;{iflng}}{&shy;{iflng::de}}Überschrift 2{&shy;{iflng}}&lt;/th&gt;<br>&lt;/tr&gt;<br>…</pre> <h2>Logik im Template</h2> <p>Für umfangreichere sprachabhängige Bereiche kann das Inserttag ungünstig sein, reines PHP wäre vielleicht geschickter. Wer also mit if und else, oder break und case arbeiten möchte, kann im Template auch so auf die Sprache zugreifen: <code>&lt;?php echo $GLOBALS['TL_LANGUAGE']; ?&gt;</code>.</p> <p>Auf die Tabelle bezogen könnte das so aussehen:</p> <pre>&lt;table&gt;<br>&lt;thead&gt;<br>&lt;tr&gt;<br>&lt;?php if($GLOBALS['TL_LANGUAGE'] == 'en'): ?&gt;<br>&lt;th&gt;Heading 1&lt;/th&gt;<br>&lt;th&gt;Heading 2&lt;/th&gt;<br>&lt;?php elseif($GLOBALS['TL_LANGUAGE'] == 'de'): ?&gt;<br>&lt;th&gt;Überschrift 1&lt;/th&gt;<br>&lt;th&gt;Überschrift 2&lt;/th&gt;<br>&lt;?php endif; ?&gt;<br>&lt;/tr&gt;<br>…</pre> <h2>Globale Labels</h2> <p>Manchmal bietet es sich an, die sprachabhängigen Inhalte auch auszulagern, damit sie global verfügbar sind, oder damit das Template nicht zu voll wird. Außerdem hilft es, Logik im Template zu reduzieren.</p> <p>Dafür gibt es in Contao die Datei system/config/langconfig. Ähnlich wie ihre Schwestern localconfig.php und dcaconfig.php wird sie bei Updates nicht überschrieben, und kann somit sicher angepasst werden. In dieser Datei kann für jede Sprache eine „Beschriftung“ definiert werden, die im Template ausgelesen wird.</p> <p>Eine solchermaßen angepasste Datei könnte so aussehen:</p> <pre>if ($GLOBALS['TL_LANGUAGE'] == 'de')<br>{<br>	$GLOBALS['TL_LANG']['meinetabelle']['spalte1'] = 'Deutsches Label';<br>}<br>elseif ($GLOBALS['TL_LANGUAGE'] == 'en')<br>{<br>	$GLOBALS['TL_LANG']['meinetabelle']['spalte1'] = 'Englisches Label';<br>}<br>else<br>{<br>	$GLOBALS['TL_LANG']['meinetabelle']['spalte1'] = 'Fallback-Label';<br>}</pre> <p>In jedem beliebigen Template kann nun auf das Label zugegrifften werden, was tatsächlich ausgegeben wird, entscheidet sich in der langconfig.php.</p> <pre>&lt;table&gt;<br>&lt;thead&gt;<br>&lt;tr&gt;<br>&lt;th&gt;&lt;?php echo $GLOBALS['TL_LANG']['meinetabelle']['spalte1']; ?&gt;&lt;/th&gt;<br>… </pre> <p>Dabei kann die Bezeichnung dieses Labels frei vergeben werden („meinetaballe“ und „spalte1“). Verwenden Sie dabei statt „meinetabelle“ möglichst eine projektbezogene Bezeichnung. Dadurch schließen Sie Namenskonflikte mit installierten Modulen oder ähnlichem aus.</p> <div id="_mcePaste" class="mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"> <pre>meinetabelle</pre> </div><ul class="tagged"> 	<li>template</li> 	<li>sprache</li> 	<li>inhalt</li> 	<li>content</li> 	<li>abhängigkeit</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/sprachabhaengige-inhalte-in-templates-bereitstellen.html</link><pubDate>Fri, 06 Aug 2010 15:28:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/sprachabhaengige-inhalte-in-templates-bereitstellen.html</guid></item><item><title>Feedburner mit Contao nutzen</title><description><![CDATA[<p><strong>Googles Dienst "Feedburner" bietet viele nützliche Funktionen für Ihren RSS-Feed: Sie können die Anzahl der Feedabonnenten erfahren, diese dynamisch in Ihrer Seite anzeigen, sehen, woher Ihre Leser kommen, und vieles mehr. Die Einrichtung ist denkbar einfach: Den in Contao aktivierten Feed bei Feedburner angeben, schon läuft er auf Googles Servern. Doch für eine bessere Nutzung sollten noch einige Punkte beachtet werden.</strong></p> <p>Der erste Punkt ist, dass im Quellcode der Seite weiterhin der eigene XML-Feed verlinkt wird. Ein RSS-Reader wird also weiterhin diesen verwenden statt den von Feedburner. Auch bestehende Abonnenten werden weiterhin Ihren Feed verwenden und nicht in den Statistiken von Feedburner auftauchen. Zum anderen empfiehlt sich, nicht offiziell den Feedburner-Feed zu veröffentlichen sondern immer den eigenen Feed und diesen auf Feedburner umzuleiten. Das hat den Vorteil, dass man später von Feedburner zu einem anderen Dienst wechseln kann, ohne das sich die Feed-URL ändet.</p> <p>Diese Anleitung beschreibt, wie man <strong>Feedburner nutzt</strong> und dennoch <strong>mit der eigenen Feed-URL</strong> arbeitet.</p> <h2>Benötigt:</h2> <ul> <li>Zugriff auf die .htaccess-Datei im Root-Verzeichnis von Contao</li> <li>Ein Google-Konto</li> </ul> <h2>Anleitung:</h2> <ol> <li>Aktivieren Sie den Feed für Ihr Nachrichtenarchiv in Contao – Es können auch mehrere sein.</li> <li>Melden Sie sich mit Ihrem Google-Account bei <a href="http://feedburner.google.com/">Feedburner</a> an.</li> <li>Richten Sie für jeden Ihrer Feeds einen neuen Feed bei Feedburner ein, und geben Sie dort die URL Ihres von Contao generierten Feeds an.</li> <li>Leiten Sie in Ihrer .htaccess-Datei alle Aufrufe des alten Feeds auf Feedburner um. Wichtig dabei ist, dass Feedburner selbst den originalen Feed abrufen kann. Also muss Feedburner von der Umleitung ausgenommen werden. Das geht mit folgendem Code in der .htaccess, der nach der Zeile mit der RewriteBase-Anweisung eingefügt werden muss. Pro Feed kopieren Sie die letzte Zeile und ändern "ihrfeed" und "feedname" entsprechen den URLs des Feeds ab.<br /> <pre># FeedBurner XML Rewrite<br />RewriteCond %{HTTP_USER_AGENT} !FeedBurner<br />RewriteRule ihrfeed.xml$ http://feeds.feedburner.com/feedname [R=302,L]</pre> </li> <li>Nutzen Sie die Statistiken von Feedburner.</li> </ol><ul class="tagged"> 	<li>statistik</li> 	<li>rss</li> 	<li>google</li> 	<li>feedburner</li> 	<li>feed</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/feedburner-mit-contao-nutzen.html</link><pubDate>Wed, 07 Jul 2010 15:12:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/feedburner-mit-contao-nutzen.html</guid></item><item><title>Vermeidung von Duplicate Content der Startseite</title><description><![CDATA[<p><strong>Mit der Standardkonfiguration von Contao (vormals TYPOlight), jedoch mit eingeschalteter URL-Umschreibung, ist die Startseite einer Website unter zwei verschiedenen URL erreichbar:<br></strong><strong><em>&nbsp;&nbsp;http://www.firmenbezeichnung.de/</em><br>und <em><br>&nbsp;&nbsp;http://www.firmenbezeichnung.de/alias-der-startseite.suffix</em>.<br>Dies ist ein unerwünschter Umstand, denn Google und andere Suchmaschinen mögen es nicht, wenn die gleichen Inhalte unter mehreren Adressen erreichbar sind (sogenannte Duplicate-Content-Problem). Für Ihre SEO-Bemühungen ist es also unerlässlich, dieses Fehlverhalten abzustellen.</strong></p> <p><strong>Profihinweis: Die Seite ist bis TYPOlight 2.8.x auch über http://www.firmenbezeichnung.de/index.php erreichbar, das hat sich jedoch mit Contao 2.9.0 geändert. </strong></p> <h2>Benötigt:</h2> <ul> <li>Erweiterung <a href="http://www.contao.org/de/extension-list/view/googlesitemap.de.html">googlesitemap</a></li> <li>Zugriff auf die Seitenstruktur</li> </ul> <h2>Anleitung:</h2> <ol> <li>Installieren Sie die Erweiterung <a href="http://www.contao.org/de/extension-list/view/googlesitemap.de.html">googlesitemap</a>.</li> <li>Bearbeiten Sie die Startseite Ihrer Website in der Seitenstruktur.</li> <li>Setzen Sie den Haken beim Feld "Erste Seite".</li> <li>Nun werden alle Links innerhalb Ihrer Website, die auf die Startseite verlinken, mit dem Linkziel http://www.firmenbezeichnung.de/ ohne angehängten Seitenalias und Suffix generiert</li> </ol> <p><strong>Achtung!</strong> Diese Maßnahme ändert nichts an der Erreichbarkeit der Startseite unter mehreren Adressen, aber wenn Sie dieser Anleitung von Beginn an folgen, ist eine Aufnahme der alternativen Schreibweisen in den Google-Index sehr unwahrwscheinlich, da diese nirgends auftauchen.</p><ul class="tagged"> 	<li>startseite</li> 	<li>start</li> 	<li>seo</li> 	<li>inhalt</li> 	<li>google</li> 	<li>erweiterung</li> 	<li>duplicate content</li> 	<li>dopplung</li> 	<li>doppelt</li> 	<li>content</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/duplicate-content-der-startseite-vermeiden.html</link><pubDate>Fri, 11 Jun 2010 20:51:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/duplicate-content-der-startseite-vermeiden.html</guid></item><item><title>Administrator-Passwörter und gesperrte Konten zurücksetzen</title><description><![CDATA[<p><strong>Auch dem besten Administrator kann es passieren, dass er das Backend-Passwort vergisst, oder dass ein Benutzer zu oft ein falsches Passwort eintippt, und das Konto gesperrt wird. Auch eine fehlerhafte Dokumentation des Administrator-Passworts kann vorkommen. Diese Anleitung beschreibt, wie man Administratorpasswörter zurücksetzen und gesperrte Backendkonten wieder entsperren kann.</strong></p> <h2>Benötigt:</h2> <ul> <li>Erweiterung <a href="http://www.contao.org/de/extension-list/view/backend_password.de.html">backend_password</a> (optional)</li> <li>Datenbankzugriff über phpMyAdmin (oder ähnliches Tool)</li> </ul> <h2>Anleitung:</h2> <ol> <li>Vergessene Administratorpasswörter lassen sich auf zwei Weisen zurücksetzen: Durch die klugerweise im Vorraus installierte Erweiterung <a href="http://www.contao.org/de/extension-list/view/backend_password.de.html">backend_password</a>, oder durch das Ändern des Passwortes in der Datenbank.</li> <li><strong>Ist die Erweiterung installiert</strong>, erscheint in der Login-Maske des Backends ein Link, über den sich jeder Benutzer ein neues Passwort per Mail zuschicken lassen kann. Das Passwort kann dann nach dem Anmeldevorgang mit dem Interims-Passwort über das Benutzerprofil wieder geändert werden.</li> <li><strong>Ist die Erweiterung nicht installiert</strong>, lässt sich das Passwort dennoch direkt über die Datenbank zurücksetzen. Öffnen Sie dazu phpMyAdmin.</li> <li>Navigieren Sie zur Tabelle "tl_user" und bearbeiten Sie den Datensatz des Adminstrators.</li> <li>Neben dem <strong>Feld "password"</strong> sollte über ein Select-Menü eine Verschlüsselung auswählbar sein. Ist dies nicht der Fall, überspringen Sie bitte diesen Punkt und fahren Sie mit Punkt 6 fort.<br>Wählen Sie aus dem Select-Menü die Verschlüsselungsart "SHA1" aus, und geben Sie in das Feld rechts daneben ihr gewünschtes neues Passwort ein.</li> <li>Sollte Ihnen das Select-Menü nicht zu Verfügung stehen, tragen Sie "8e0107bf1c7fbeef6538dff7173aa458e7dd585e:8c37627a0e2c606189e7765" in das Feld ein. Dadurch wird Ihr Passwort auf "reset123" zurückgesetzt.</li> <li>Sollten Sie durch zu viele Login-Versuche auch Ihr Backend-Konto gesperrt haben, können Sie die <strong>Wartezeit von fünf Minuten reduzieren</strong>. Suchen Sie dazu das Feld "loginCount" und setzen Sie den Inhalt auf "3". Das Feld "locked" darunter leeren Sie bitte.</li> <li>Klicken Sie unten auf "OK". Ihr Passwort sollte nun zurückgesetzt sein, ihr Konto entsperrt.</li> </ol> <h2>Anwendungsbeispiele:</h2> <ul> <li>Zu häufig eingegebenes falsches Backend-Passwort</li> <li>Vergessenes Administrator-Passwort</li> </ul><ul class="tagged"> 	<li>vergessen</li> 	<li>phpmyadmin</li> 	<li>passwort</li> 	<li>erweiterung</li> 	<li>datenbank</li> 	<li>benutzer</li> 	<li>administrator</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/administrator-passwort-zuruecksetzen.html</link><pubDate>Wed, 19 May 2010 20:07:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/administrator-passwort-zuruecksetzen.html</guid></item><item><title>Vortragsfolien: Contao-Erweiterungen für SEO</title><description><![CDATA[<p>Beim Contao-Usertreffen in Essen 2010 habe ich einen Vortrag über Contao-Erweiterungen zur Suchmaschinenoptimieurng gehalten. Hier die die entsprechenden <a href="http://www.contao-anleitungen.de/tl_files/download/typolight-erweiterungen-fuer-seo.pdf">Vortragsfolien als PDF-Datei</a> (PDF, 7,3 MB).</p> <p>Einige Hinweise für alle, die den Vortrag nicht live erlebt haben:</p> <ul> <li>Es sind zahlreiche <strong>Erweiterungen im Vortrag enthalten, die sich am Besucher orientieren</strong>. Denn die Erstellung von Seiten für Seitenbesucher statt Suchmaschinen ist oft die beste Suchmaschinenoptimierung.</li> <li>Selbst wenn du alle vorgestellten Contao-Erweiterungen installierst, ist das noch kein SEO sondern nur eine Sammlung von Modulen. <strong>Sie müssen sinnvoll eingesetzt werden.</strong></li> <li>Nicht jede <strong>Erweiterung ist für jede Webseite geeignet</strong>. Stimmt euch mit jemandem ab, der sich mit Suchmaschinenoptimieurng beschäftigt.</li> <li>Die Module sind <strong>Stand 15.5.2010</strong> zusammengestellt und teilweise noch im <strong>Alpha- oder Beta-Stadium</strong>.</li> <li>Danke auch an <a href="http://www.p3consult.de/">Guido Pelzer</a> für den vorangehenden Vortrag zu SEO allgemein.</li> </ul><ul class="tagged"> 	<li>seo</li> 	<li>erweiterung</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/typolight-erweiterungen-seo.html</link><pubDate>Sat, 15 May 2010 17:23:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/typolight-erweiterungen-seo.html</guid></item><item><title>Ein Favicon in eine Contao-Website einbinden</title><description><![CDATA[<p><strong>Zur Wiedererkennung von Webseiten ist es sinnvoll diesen ein sogenanntes Favicon zuzuweisen. Dieses wird beispielsweise in den Bookmarks bzw. Favoriten im Webbrowser oder auch in den Browser-Tabs angezeigt. Diese Anleitung beschreibt, wie ein Favicon auf einer Contao-Webseite manuell oder mit Hilfe einer Erweiterung eingebunden werden kann.<br></strong></p> <h2>Benötigt:</h2> <ul> <li>Erweiterung <a href="http://www.contao.org/de/extension-list/view/Favicon.de.html">Favicon</a> (optional)</li> </ul> <h2>Anleitung:</h2> <ol> <li>Bei Contao-Installationen, die ursprünglich <strong>mit einer Version vor TYPOlight 2.8.3 installiert </strong>worden sind, sind in der Standardkonfiguration keine ICO-Dateien zum Upload in der Dateiverwaltung zugelassen. In diesem Fall muss in den Einstellungen die Endung "ico" in die Liste der erlaubten Upload-Dateitypen aufgenommen werden.</li> <li>Eine geeignete Icon-Datei erstellen. Dabei handelt es sich um eine Pixelgrafik im Format 16x16 Pixel anlegen und als Icon-Datei speichern. Wenn keine Anwendung hierzu vorhanden ist, kann beispielsweise diese <a href="http://www.favicon.cc/?action=import_request">Onlinekonvertierung</a> genutzt werden. Die Datei <strong>favicon.ico</strong> benennen.</li> <li>Die fertige favicon.ico über die Dateiverwaltung hochladen.</li> <li><strong>Einbindung ohne Favicon-Erweiterung:</strong> Entweder die <a href="http://www.contao.org/de/extension-list/view/Favicon.de.html">Erweiterung</a> über die Erweiterungsverwaltung installieren und mit folgendem Punkt fortfahren. Alternativ in allen betroffenen Seitenlayouts unter "Zusätzliche &lt;head&gt;-Tags" folgende Zeilen eintragen und dabei den Pfad zur Datei anpassen:</li> <li>&lt;link rel="icon" href="http://www.contao-anleitungen.de/tl_files/pfad/favicon.ico" type="<span class="sc2"><span class="st0">image/vnd.microsoft.icon</span></span>" /&gt;</li> <li>&lt;link rel="shortcut icon" href="http://www.contao-anleitungen.de/tl_files/pfad/favicon.ico" type="<span class="sc2"><span class="st0">image/vnd.microsoft.icon</span></span>" /&gt;</li> <li><strong>Einbinden mit Favicon-Erweiterung:</strong> In der Seitenstruktur im "Startpunkt einer neuen Webseite" unter Favicon die entsprechende Datei auswählen. Diese wird nun in alle Seiten der Webseite integriert.</li> <li>Den Browser-Cache leeren und die Seite neu laden.</li> </ol> <h2>Anwendungsbeispiele:</h2> <ul> <li>Ein Favicon in bestehende oder neue Contao-Webseiten einfügen</li> </ul><ul class="tagged"> 	<li>icon</li> 	<li>favicon</li> 	<li>erweiterung</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/favicon-typolight-einbinden.html</link><pubDate>Fri, 07 May 2010 14:14:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/favicon-typolight-einbinden.html</guid></item><item><title>Nur Teile einer Webseite mit Contao realisieren</title><description><![CDATA[<p><strong>In zwei Szenarien ist es notwendig Contao (vormals TYPOlight) zu einer bestehenden Webseite parallel zu installieren. Zum einen wenn nur Teile der Seite mit Contao realisiert werden sollen (z.B. weil das bestehende CMS bestimmte Funktionen nicht unterstützt) oder wenn eine bestehende Seite im Sinne einer sanften Migration nach und nach umgestellt werden soll. Dabei ist der parallele Einsatz von zwei Systemen meistens kein Problem.</strong></p> <h2>Benötigt:</h2> <ul> <li>Erweiterung <a href="http://www.contao.org/de/extension-list/view/folderurl.de.html">folderurl</a></li> <li>Webserver mit Rewrite-Unterstützung in der .htaccess</li> </ul> <h2>Anleitung:</h2> <p>Der einfachste Weg zum Betrieb von Contao (vormals TYPOlight) neben einem andern System ist es natürlich, dieses <strong>in einen Unterorder zu installieren</strong>. In diesem Fall kann eine ganz normale Installation vorgenommen werden und alle von Contao (vormals TYPOlight) bedienten URLs haben anschließend den Namen des Unterorders vorne anstehen. Das kann aber unerwünscht sein, insbesondere bei einer sanften Migration wobei bestehende URLs weitergeführt werden sollen. Außerdem liegt die Installation für einen vollständigen Wechsel bereits an der richtigen Stelle.</p> <p>Hier ist eine Anleitung zur vollständigen Integration auch was die URLs angeht.</p> <ol> <li>Erstelle ein <strong>Backup</strong> der bestehenden Webseite!</li> <li><strong>Entpacke</strong> die aktuelle Version von Contao (vormals TYPOlight).</li> <li>Prüfe ob sich <strong>Unterordner</strong> (etwas "system") mit der bestehenden Installation überschneiden. Wenn ja prüfe ob sich darin gleichnamige Unterverzeichnisse oder Dateien befinden. In diesem Fall wäre die Installation in ein Unterverzeichnis (siehe oben) der einfacherer Weg.</li> <li>Prüfe, ob es bereits eine <strong>index.php</strong> gibt. Wenn ja, benennen die von Contao (vormals TYPOlight) nach index_tl.php um.</li> <li>Prüfe, ob es bereits eine <strong>cron.php</strong> gibt. Wenn ja, benenne diese nach cron_tl.php um und passe später das fe_page.tpl-Template entsprechend an oder lösche die Datei und nutze statt dessen echte Cronjobs.</li> <li><strong>Lade</strong> deine Installation ohne die .htaccess Datei auf deinen Webspace.</li> <li>Durchlaufe die <strong>Contao-Installation</strong> wie gewohnt.</li> <li>Lege deine <strong>neuen Seiten</strong> an. Wichtig: Gliedere diese so, dass sie an der URL eindeutig erkannt werden können. Am besten legst du sie in einigen Unterordnern ab. Dazu bietet sich das Modul <strong>folderurl</strong> an.</li> <li>Aktiviere die <strong>Option "URLs umschreiben"</strong> in den Einstellungen.</li> <li>Füge in deine <strong>.htaccess </strong>für jede URL, die umgeschrieben werden soll, folgende Zeile möglichst direkt nach der Anweisung "RewriteEngine on" ein. Fehlt diese, muss diese ergänzt werden.<br>RewriteRule ^/(aktionen.*)$ /index.php/$1 [L]<br>RewriteRule ^/(newsletter.*)$ /index.php/$1 [L]<br>Hast du vorhin deine index.php in index_tl.php umbenannt, musst du hier natürlich die index_tl.php angeben.</li> <li>Bei einer <strong>sanften Migration</strong> später nach und nach entsprechende Zeilen hinzufügen.</li> </ol> <h2>Anwendungsbeispiele:</h2> <ul> <li>Paralleler Betrieb von Webseitenteilen zu einem anderen System in Contao (vormals TYPOlight).</li> <li>Sanfte Migration einer bestehenden Webseite nach Contao (vormals TYPOlight).</li> </ul><ul class="tagged"> 	<li>installation</li> 	<li>htaccess</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/teile-einer-webseite-mit-typolight.html</link><pubDate>Mon, 26 Apr 2010 10:51:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/teile-einer-webseite-mit-typolight.html</guid></item><item><title>Vergessenes Installationspasswort zurücksetzen</title><description><![CDATA[<p><strong>Wenn man mal schnell eine neue Contao-Installation aufsetzt, kann es schon mal vorkommen, dass man das Passwort nicht dokumentiert. Hat man aus diesem oder anderen Gründen das Installationspasswort vergessen, kann man es wie folgt zurücksetzen:</strong></p> <h2>Benötigt:</h2> <p>Keine Voraussetzungen</p> <h2>Anleitung:</h2> <p>Je nachdem ob du per FTP arbeitest oder direkten Zugriff auf die Dateien hast, unterscheidet sich das Vorgehen minimal.</p> <ol> <li>Lade per FTP die Datei "system/config/localconfig.php" aus deiner TYPOlight-Installation herunter. (Nur FTP.)</li> <li>Lösche aus der localconfig.php nur die Zeile, die wie folgt beginnt:<br>$GLOBALS['TL_CONFIG']['installPassword'] = ...</li> <li>Lade die Datei wieder per FTP an die gleiche Stelle auf dem Server. (Nur per FTP.)</li> <li>Rufe den TYPOlight-Installer unter &lt;deine URL&gt;/contao/install.php" auf.</li> <li>Nun ist das Standardpasswort "contao" (früher "typolight") wie bei der Erstinstallation von Contao (vormals TYPOlight)gesetzt.</li> <li>Setze ein neues Passwort und dokumentiere dies an einem sicheren Ort.</li> </ol> <h2>Anwendungsbeispiele:</h2> <ul> <li>Installationspasswort vergessen</li> <li>Übernahme einer schlecht dokumentierten Contao-Installation</li> </ul><ul class="tagged"> 	<li>zurücksetzen</li> 	<li>vergessen</li> 	<li>passwort</li> 	<li>installation</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/installationspasswort-zuruecksetzen.html</link><pubDate>Tue, 20 Apr 2010 14:04:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/installationspasswort-zuruecksetzen.html</guid></item><item><title>Bildauswahl in Formularen</title><description><![CDATA[<div class="level3"> <p><strong>Oftmals ist es in Formularen sinnvoll, Bilder statt Text zur Beschreibung von Radiobuttons zu verwenden. Diese Anleitung beschreibt, wie mittels der Erweiterung efg in Contao (vormals TYPOlight) eine solche Bildauswahl als Formularfeld erzeugt werden kann.</strong></p> <h2>Benötigt:</h2> Modul <a href="http://www.contao.org/de/extension-list/view/efg.de.html">efg - Extended Formular Generator</a> <h2>Anleitung:</h2> <p><img style="float: right; margin: 0px 0px 10px 10px;" title="tl_files/images-anleitungen/bildauswahl.png" src="http://www.contao-anleitungen.de/tl_files/images-anleitungen/bildauswahl.png" alt="tl_files/images-anleitungen/bildauswahl.png" width="357" height="183">Ein Formularfeld Bild&shy;aus&shy;wahl-Menü lässt sich mit der Er&shy;weiterung <a onclick="window.open(this.href); return false;" href="http://www.contao.org/de/extension-list/view/efg.de.html">Extended Form Generator</a> (kurz: efg) ganz einfach er&shy;stellen. Nach In&shy;stallation der Er&shy;weiterung steht im Formular&shy;generator ein <strong>neuer Feldtyp „Bild-Auswahl-Menü“ </strong>zur Aus&shy;wahl (sieht Bild).</p> <ol> <li>Installiere das Modul <a onclick="window.open(this.href); return false;" href="http://www.contao.org/de/extension-list/view/efg.de.html">efg</a> falls dies noch nicht der Fall ist.</li> <li>Lade die Bilder für die Bildauswahl über die Dateiverwaltung hoch. Dabei empfiehlt es sich ein eigenes Verzeichniss pro Bildauswahl anzulegen, um die Dateien später leichter zuordnen zu können.</li> <li>Lege ein Formular an falls dieses noch nicht vorhanden ist.</li> <li>Füge ein neues Feld vom Typ "Bild-Auswahl-Menü" ein.</li> <li>Wähle die hochgeladenen Daten oder das Verzeichniss in dem sich die Dateien befinden in der Dateiauswahl aus.</li> <li>Zusätzlich können weitere Bildeinstellungen wie sie zum Beispiel aus der Gallerie bekannt sind vorgenommen werden.</li> </ol> <h2>Anwendungsbeispiele:</h2> <ul> <li>Auswahl von Designs</li> <li>Auswahl von Druckmotiven</li> <li>Auswahl von Produkten als Bilder</li> </ul> </div><ul class="tagged"> 	<li>formular</li> 	<li>efg</li> 	<li>bild</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/bildauswahl-in-formularen.html</link><pubDate>Thu, 01 Apr 2010 11:44:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/bildauswahl-in-formularen.html</guid></item><item><title>Start des Weblogs Contao-Anleitungen.de</title><description><![CDATA[<p>Wir freuen uns, euch mit <a href="http://www.contao-anleitungen.de/">Contao-Anleitungen.de</a> eine neue inoffizielle Contao-Fanpage vorstellen zu dürfen.</p> <p>Als offizieller Contao-Partner treten bei uns im Betrieb immer wieder Aufgabenstellungen auf, die unserer Ansicht nach für viele Anwender interessant sind. Diese wollen wir versuchen als <strong>Anleitungen zum Open-Source-CMS Contao</strong> (vormals TYPOlight) zu veröffentlichen. Dabei werden wir keine Themenbereiche vollständig abdecken sondern immer nur gezielt einzelne Aufgabenstellungen herausgreifen und diese in einer Anleitung beschreiben.</p> <p>Diese Seite soll eine Ergänzung zur offiziellen <a href="http://www.contao.de/">Contao-Webseite</a> und der <a href="http://www.contao-community.de/">Contao-Community</a> darstellen. Wir hoffen mit den hier vorgestellten Anleitungen die Verbreitung und Nutzung von Contao (vormals TYPOlight) nachhaltig zu fördern. </p> <p>Contao-Anleitungen.de ist ein freies Angebot des <a href="http://www.etes.de/">ETES Systemhaus</a> aus Stuttgart. Wir arbeiten seit Ende 2008 mit Contao (vormals TYPOlight) und sind offizieller Contao-Partner in den Bereichen Design, Entwicklung und Hosting.</p><ul class="tagged"> 	<li>start</li> </ul>]]></description><link>http://www.contao-anleitungen.de/post/start-typolight-anleitungen-de.html</link><pubDate>Thu, 01 Apr 2010 11:29:00 +0200</pubDate><guid>http://www.contao-anleitungen.de/post/start-typolight-anleitungen-de.html</guid></item></channel></rss>

