TYPO3 Performance
There are a few nice tipps in the blog of Dmitry Dulepov to speed up the Typo3 performance you should have read. #2 was unknown to me so far.
FE-Plugin bei mehrsprachigem Typo3
Also jedes mal, wenn ich eine mehrsprachige Typo3-Seite erstellen, komme ich durcheinander mit den Sprachen. Und ich vergesse jedes mal, wie man einem Frontend-Plugin sagt, dass es die durch $this->pi_getLL($key) ausgegebenen Texte lokalisiert. Und das geht so:
class tx_extkey_piX extends tslib_pibase {
function main() {
$this->sys_language_uid = (int) t3lib_div::_GP('L');
...
}
}
TYPO3 und UTF-8 mySQL Datenbank
Manchmal ist es nötig, die Datenbank von Typo3 auf UTF-8 umzustellen, da man arabische Zeichen oder was auch immer speichern will, und wobei die Kollation der Datenbank latin1_swedish_ci, mit der sich Typo3 standardmäßig installiert, nicht taugt.
Dazu habe ich diesen nützlichen Blogeintrag von Markus Giesen gefunden: Typo3 mySQL-Datenbank auf UTF-8 umstellen bzw. konvertieren
Jedoch ist bei mir im Export nie die Kollation festgeschrieben, diesen Schritt konnte ich de facto überspringen. Auch hatte ich keinen phpMyAdmin, also mussten die Kommandos für die SQL-Konsole zum Anpassen der Kollation her:
Anzeigen der verfügbaren Kollationen auf dem Server:
SHOW COLLATION SHOW COLLATION LIKE 'utf%'
Ändern der Kollation der aktuellen Datenbank:
ALTER DATABASE DEFAULT COLLATE utf8_general_ci
Und danach weiter nach Markus Giesens Anleitung verfahren und alles wird gut
Eclipse PDT 2.0 Stable Release
Juhu - es ist da! Das erste stabile Release vom PDT Plugin für Eclipse Ganymede (na zumindest das erste, was ich da sehe ^^)
Laut Projektplan hätte gestern die M1 da sein sollen - vielleicht ist ja das Stable damit gemeint. Ich hoffe meine Vorfreude wird nicht getrübt, denn ausprobieren konnte ich es bisher noch nicht, das wird dann wohl morgen mal der Fall sein.
Symfony Latin – UTF-8 Problem
I'm currently getting into the Symfony framework and I can definitly say that I like it.
But as my site was finished after only some hours I had a problem concerning the display of special characters like the umlauts (ä, ö, ü) aso. I don't use a database created by SF/Propel but use an existing one with latin1_* encoding (the default TYPO3 db encoding). Unfortunatly all umlauts where displayed as questionmark so I started finding an solution. The characters are fuzzy because they were not correctly returned by propel. I tried all configuration directives I found (setting the encoding of the connection to utf-8 aso) but nothing worked.
Finally I found a snippet that fixes the problem for me: Setting UTF-8 for Propel with MySQL tables and now everything is just fine!
Lightbox Clones Matrix
As I'm currently validating different lightbox clones I'll advert to the brilliant "The Lightbox Clones Matrix" of PlanetOzh. It lists nearly all lightbox clones and gives the possibility to filter by features and used javascript framework. File size is displayed, too.
Eclipse 3.4 Ganymede und PDT
Unfortunatly there is no working and official version of the PDT release for the current Eclipse release, Eclipse 3.4 Ganymede. However it is possible to use both. I found the solution within the Digital Base blog: Simply download the nightly build of PDT and integrate it as local site in the Eclipse update manager and then install. Quite easy.
Javascript und Sonderzeichen.
I just found a website providing tools and information about javascript and special characters. My current problem was that I lost the special characters in an ajax call. Some trying later and it finally worked - check it out:
WordPress Update.
Finally I updated the blog to WordPress 2.5.1. Seems that everything exept the slimbox plugin is working. I have to get used to the new backend layout but it's ok. See ya!
TypoScript auslesen (eID und BE-Modul)
Manchmal muss man beim Entwickeln für Typo3 TypoScript an den unterschiedlichsten Stellen auslesen. Im folgenden zwei Beispiele, die mich gerade ein wenig auf die Probe gestellt haben.
TypoScript bei Nutzung von eID
Das Skript, welches mit eID angesprochen wird, ist ja lightweight und lädt erstmal nahezu nix vom Typo3-Kern. Nutzer und Datenbank sind schnell initialisiert, aber wenn man z.B. Werte aus dem TypoScript Setup des Plugins auslesen will geht das nicht nur mit einer Zeile Code. Dem eID-Skript muss auf irgendeine Weise die PageID übergeben werden (ich mache das mit einer Get-Variable), die braucht man nämlich, um das TSFE (das ja nicht da ist), ordentlich zu initialisieren. Man instanziiert sich eine tslib_fe Klasse, verbindet zur Datenbank, initialisiert den Nutzer, das Template und die Config und schon ist man fertig:
// eID specific initialization of user and database tslib_eidtools::connectDB(); tslib_eidtools::initFeUser(); // initialize TSFE require_once(PATH_tslib.'class.tslib_fe.php'); require_once(PATH_t3lib.'class.t3lib_page.php'); $temp_TSFEclassName = t3lib_div::makeInstanceClassName('tslib_fe'); $GLOBALS['TSFE'] = new $temp_TSFEclassName($TYPO3_CONF_VARS, $pid, 0, true); $GLOBALS['TSFE']->connectToDB(); $GLOBALS['TSFE']->initFEuser(); $GLOBALS['TSFE']->determineId(); $GLOBALS['TSFE']->getCompressedTCarray(); $GLOBALS['TSFE']->initTemplate(); $GLOBALS['TSFE']->getConfigArray();
Nun kann man altbekannt via
$GLOBALS['TSFE']->tmpl->setup['plugin.']['extensionkey.']['your_value']
auf die Daten zugreifen. Mit der letzten Codezeile kann man übrigens auch in nicht vollständig initialisierten Plugins das TypoScript beliebig auslesen.
TypoScript in Backend-Modulen
In Backend-Modulen ist es auch manchmal notwendig, auf das TypoScript Setup zuzugreifen, zum Beispiel beim Senden einer Email, um den Absender auszulesen etc. Der Ablauf ist ähnlich wie bei eID, jedoch ermitteln wir selber die RootPageID und nutzen die t3lib_pageSelect und t3lib_tsparser_ext Klassen. Ich habe das ganze in eine Funktion gepackt, da man das ja nicht unbedingt immer braucht:
/** * Loads the TypoScript for the given extension prefix, e.g. tx_cspuppyfunctions_pi1, for use in a backend module. * * @param string $extKey * @return array */ function loadTypoScriptForBEModule($extKey) { require_once(PATH_t3lib . 'class.t3lib_page.php'); require_once(PATH_t3lib . 'class.t3lib_tstemplate.php'); require_once(PATH_t3lib . 'class.t3lib_tsparser_ext.php'); list($page) = t3lib_BEfunc::getRecordsByField('pages', 'pid', 0); $pageUid = intval($page['uid']); $sysPageObj = t3lib_div::makeInstance('t3lib_pageSelect'); $rootLine = $sysPageObj->getRootLine($pageUid); $TSObj = t3lib_div::makeInstance('t3lib_tsparser_ext'); $TSObj->tt_track = 0; $TSObj->init(); $TSObj->runThroughTemplates($rootLine); $TSObj->generateConfig(); return $TSObj->setup['plugin.'][$extKey . '.']; }
Und damit hätte man wieder ein paar Typo3-Probleme weniger...
