Schlagwort-Archive: TYPO3

Telefon-Links mit Grav

Meine Begeisterung für das flat-file CMS Grav steigt stetig. In einem Twig-Template habe ich gerade relativ leicht tel: links generiert:
<a href="tel:+49{{ person.telefon|regex_replace(['/[^0-9]/', '/^0/'], ['', '']) }}">{{ person.telefon }}</a>

In einem Template werden in einer for-Schleife Adressen ausgegeben. Da es alles deutsche Telefonnummern sind, kann ich sie leicht mit Ersetzungen mit regulären Ausdrücken auf das gewünschte Zielformat +4989123456 bringen. Die Telefonnummer ist im obigen Ausdruck in person.telefon gespeichert, in einem Format wie 089-123456. Sie wird zweimal verwendet, einmal im Klartext des Links, einmal verändert im href-Attribut.

Da Twig regex-Ersetzung nicht von Haus aus mitbringt, muss die php-Funktion durchgereicht werden. Meine Annahme, das habe Grav bestimmt schon gemacht, war richtig: mit regex_replace ist ein entsprechender Twig-Filter definiert. Der macht alles mit zwei Ersetzungen: Alle Nicht-Ziffern werden entfernt, die führende 0 wird entfernt. Das tel:+49 wird statisch davor gesetzt.

Nach vielen Erfahrungen mit TYPO3 und contao ist Grav für mich eine Offenbarung, da ich hier flexibel im Code arbeiten kann, aber nicht auf niedrigste php-Ebenen gehen muss. Und dies bei der Aufbereitung von Inhalten genauso wie bei der Gestaltung mit Themes. So, wie es eines Entwicklers würdig ist 🙂

XML-Sitemap für TYPO3

Gerade wieder was gelernt:
Für bessere Suche durch die Suchmaschinen Google und Bing muss man in den Webmaster-Tools eine XML-Sitemap zur Verfügung stellen.

Für TYPO3 gibt es dazu unter anderem mc_googlesitemap, das ich gerade bei 3 Sites mal probeweise installiert und an die Bots weitergereicht habe. Mal sehen ob sich dadurch was verbessert.

Upgrade auf TYPO3 Ver. 4.7.4

Der Anlass

Gestern habe ich etwas verspätet den ersten Update auf TYPO3 Ver. 4.7.4 durchgeführt. Natürlich immer bei meiner Seite http://www.tremel-computer.de, da hier Probleme auch mal sein dürfen, ohne dass ein Kunde belästigt ist. Gleichzeitig ist dies auch die älteste Installation, mit den meisten Altlasten.

Das Problem

Natürlich ging es gleich wieder schief, die Umlaute waren weg, das leidige Problem mit den Zeichencodierungen latin1 (ISO 8859-1) und UTF-8. Viele alte, früher nötige  Workarounds in TYPO3 sind weggefallen, die neue Version kann wirklich nur noch UTF-8.

Beschreibung in:

Die Lösung klingt einfach, ist sie aber nicht, da das sowohl in der MySQL Datenbank als auch in TYPO3 auf mehreren Ebenen schiefgehen kann und in der Vergangenheit eben die Bastellösungen der Workarounds für Verwirrung sorgen. Ich habe es trotzdem mit ein paar Schweißtropfen hingekriegt. 🙂

Die Lösung

Für alle Vorgänge gilt: natürlich vorher Datenbank und Installationsverzeichnis sichern.

Typo3 Update

Wie in der Upgrade-Anleitung beschrieben:

  • link the new sources from TYPO3
  • edit your localconf file if you have settings for setDBinit or forceCharset on settings any other than utf-8
    • remove the line $TYPO3_CONF_VARS[‚BE‘][‚forceCharset‘]
    • remove the line $TYPO3_CONF_VARS[‚SYS‘][’setDBinit‘]
  • Visit the Install Tool:
    • Run through „Update wizards“ which are new in 4.6 (you can now go through them using the „Next“ button)
    • Use the „Database COMPARE“ section and apply all database schema changes

Deklarationen korrigieren

Wenn dann keine Umlaute da sind, die Typo3 Installation und  Datenbank mit dem Script von Jigal van Hemert  von den Deklarationen her auf UTF-8 bringen. Das Script nach fileadmin kopieren und im Browser ausführen, es folgen ausführliche Ausgaben was er macht. Vor echter Wirkung muss man in Zeile 20 scharf schalten:
//Set to FALSE to really convert the database
define('SIMULATE', FALSE);

Inhalte korregieren

Danach ist die Datanbank inhaltlich immer noch latin1, die einzelnen Zeichen müssen konvertiert werden:

Doch iconv scheitert an irgendwelchen Problemen mit

iconv: illegal input sequence at position 13636675

Dies läßt sich jedoch mit dem Schalter -c beheben, er macht dann trotzdem weiter und läßt die kritischen Zeichen einfach weg.

mysqldump -u root -p t3_abitur1981 --default-character-set latin1 > t3_abitur1981_latin1.sql
iconv --verbose -c -f ISO-8859-1 -t UTF-8 t3_abitur1981_latin1.sql > t3_abitur1981.sql
mysql -u typo3 -p t3_abitur1981 <  t3_abitur1981.sql