Mit der Zeit sammeln sich diverse Code-Schnippsel, Infos, Links etc. an. Einige davon könnten für andere auch interessant sein und daher gibt es hier eine kleine Auswahl.
Wenn in einer Contao-Installation unter Einstellungen "Anfrage-Tokens deaktivieren" nicht angehakt ist, wird jeder POST-Request geprüft, ob ein Request Token dabei ist. Wenn nicht, gibt es einen Error 500...
Beim Provider Hostingwerk kann man nicht wie bei anderen Hostern wie Strato oder Host Europe zeitgesteuerte Programmaufrufe (Cronjobs) im Hosting-Backend zusammen klicken. Man muss via Shell auf dem Server die User's Crontab setzen bzw. ergänzen.
In vielen Foren-Beiträgen ist zu lesen, dass Contao nicht auf Shared-Hosting-Paketen ohne SSH zu installieren bzw. zu nutzen sei oder kein Update (via Composer) möglich sei. U.U. geht es doch.
Offenbar erst in Contao 4 wird das Newsletter-Abonnement (subcribe und unsubscribe) mit einer Captcha-Sicherheitsabfrage (optional) geschützt. Eine bestehendes Contao-3-Projekt absichern ...
Problem: meine Website verkleinert Bilder und rendert die Dateinamen der verkleinerten Bilder in die Seite. Die Dateien mit Formatangaben im Dateinamen wurden leider vom (Firefox) AdBlock ausgeblendet. Doof.
Manche CMS-Systeme (z.B. Magnolia, Red Dot) bieten zur Pflege der Inhalte alternativ oder ausschließlich das "Surf and Edit"-Prinzip bzw. "Inline Editing" oder "Frontend Editing" an: Ich navigiere durch die Website und kann beim Element, das ich bearbeiten möchte, auf einen Button klicken und es öffnet sich ein Popup oder Fenster, wo ich genau diesen Inhaltsblock bearbeiten kann. Hier eine Idee, wie man so etwas mit Contao im Ansatz machen kann.
Selnium-IDE warf nach Upgrade auf 1.6.0 und Firefox 10.0 bei waitForPageToLoad einer Seite mit Facebook-Like-Button Exceptions, die das wait abbrachen. Alle Tests schlugen daher fehl. Hier mein Workaround.
Bei der slimbox (Lightbox, Bilder-Galerie, Gallery-Modul) von Contao sind die Labels (prev, next, close, Image x of y) standardmäßig auf englisch. Ich möchte sie aber sprachabhängig haben, z.B. auf deutsch - je nachdem, welche Sprache im Frontend gerade aktiv ist.
Mit der PHP-Funktion parse_ini_file hatte ich in PHP 5.2 und 5.3 so meine Probleme. Auf Basis eines in der PHP-Online-Doku beschriebenen Tokenizers habe ich mir dann eine eigene Lösung zusammengeschraubt.
Manche Konfigurationswerte in der php.ini können nicht im PHP-Script via ini_set() überschrieben werden. Bei manchen Providern geht es dann in der Datei .htaccess mit php_value, bei anderen wieder über eine eigene php.ini-Datei.
Kleiner Hack für spezielles Spezialproblem: Ich betreibe eine Website (mit CMS Contao/Typolight), bei der die Seiten für Login etc. via https aufgerufen werden, andere Seiten normal via http.
Ich bin korrekt eingeloggt und klicke im Menü auf eine Seite, die mit http aufgerufen wird. Auf dieser Seite bin ich auf einmal ausgeloggt bzw. sind der User und der Login-Status offenbar nicht mehr in der Session gehalten.
Hatte bis eben Probleme bei der HTML-Ausgabe eines selbst geschriebenen Typolight-(Contao-)Moduls: Der Artikel bzw. das Content-Element mit seiner H1-Überschrift im main-Container wurde auf Teufel komm raus um eine Zeile nach unten verschoben. Dachte, ich hätte irgendeine CSS-Eigenschaft, irgendeinen Style übersehen, der noch eine top-margin einbaut oder was, aber das war's nicht. Es war das BOM...
Lustige PHP-Fehlermeldung "Fatal error: Exception thrown without a stack frame in Unknown on line 0", als ich eine eigene Frontend-Klasse für Typolight (jetzt Contao) schreiben wollte. Lösung: richtige Reihenfolge von import() und contruct()...
Typolight bietet als Sicherheitseinstellung an, bei jedem POST-Request einen Referer-Check durchzuführen. Nur wenn der Request von der eigenen Website kommt, wird er akzeptiert, sonst gibt eine Fehlermeldung ("Empty referer address!") und den HTTP-Status 400 (Bad Request).
Sofern man diese Einstellung nicht im Backend deaktiviert ("Einstellungen/Referer-Prüfung deaktivieren") oder einen Hack einbaut, kann das Probleme geben z.B. bei der Rückkehr einer Paypal-Bezahlung und bei der IPN (Instant Payment Notification) von Paypal.
Im Web kursieren Code-Teile und Klassen in PHP, mit denen man die Auflösung (Druckauflösung, DPI, dots per inch) aus einer JPEG-Datei lesen kann. Hat leider nicht oft nicht funktioniert. Habe es noch etwas optimiert.
Die PHP-Funktion imagepng() speichert keine Druckgrößeninformation in der resultierenden PNG-Datei (keine Angabe über Auflösung bzw. Durckgröße in DPI/dots per inch oder cm). Hier eine mögliche Lösung.
PHP speichert offensichtlich mit der Funktion imagepng($image) ohne weitere Angaben eine PNG-Bild-Datei mit der Kompressions-Stufe 6 (Stufen von 0=verlustfrei bis 9=maximal komprimiert). Die Kompressionsrate kann im 3. Parameter angegeben werden.
Problem: Ich würde gerne eine der Typolight-(Contao-)Core-Klassen oder andere Klassen aus Modulen überschreiben bzw. ableiten, um Kleinigkeiten anzupassen, kann ich aber nicht, weil ich nirgendwo definieren kann, dass meine abgeleiteten Klassen herangezogen werden sollen und nicht die Originale.
Skurriles Verhalten beim MSIE 6: Der Internet Explorer 6 rendert bestimmte Style-Eigenschaften von Blöcken einer bestimmten CSS-Klasse falsch, z.B. background-color, border, padding etc. Offenbar hat er Probleme mit der Reihenfolge von mehreren CSS-Klassen-Namen in einer Definition.
Im Web kursieren Code-Teile und Klassen in PHP, mit denen man Bilddateien im Windows-BMP-Format auslesen kann, was ich aber nicht gefunden habe, ist, wie ich an die Druckgröße herankomme (DPI, dots per inch). Hier eine Lösung.
Mit PHP kann man direkt eine PNG-Bild-Datei einlesen, aber man bekommt nur die Pixel und die Größe, aber keine Information über die Druckauflösung (DPI, dots per inch). Man muss noch einmal selbst die PNG-Datei öffnen und die Information auslesen.
Problem: Verschiedene PHP-Versionen bzw. verschiedene Apache-Webserver parallel auf meinem Rechner laufen lassen für unterschiedliche Websites mit unterschiedlichen PHP-Versionen.
Wenn man eine Website verlässt - mit einem Formular darauf - möchte man (via JavaScript) gefragt werden, ob man die Seite wirklich verlassen will, denn dann würden ggf. Eingaben in der Eingabemaske verloren gehen.