Jan 26

Da ich während der Arbeit schon mehrmals auf das Problem gestoßen bin, würde ich es gerne hier skizzieren, damit sich jemand anders die Arbeit vielleicht nicht mehr machen muss. Das Problem ist folgendes: In einem TYPO3-Plugin soll die Seiten-ID ermittelt werden um sie weiterzuverwenden, zum Beispiel um Records eines bestimmten Typs aus der Datenbank zu laden die an dieser Seite hängen.

Unsaubererweise gibt es global verfügbare Variablen im TYPO3-Pluginkonstrukt, die diese Information enthalten. So kann über $GLOBALS['TSFE']->id die ID der aktuell AUFGERUFENEN Seite ermittelt werden. Das funktioniert so lange, bis es einen Unterschied macht, welche Seite aufgerufen und welche angezeigt wird. Es gibt zum Beispiel die Möglichkeit der internen Links (Shortcuts) oder auch die der Mountpoints (Seiteninhalt einer anderen Seite anzeigen). Kommt man auf so eine Seite, dann funktioniert die Methode von vorhin nicht, denn die Inhalte die angezeigt werden, liegen nicht auf der Seite die aufgerufen wurde. Dieses Manko lässt sich nun dadurch beheben, dass man einfach die Seiten-ID der Inhaltselemente abfragt: $this->cObj->data['pid'] Das Array "data" enthält alle Felder aus der Tabelle tt_content und damit auch die ID der Seite zu der das Element gehört.

Vielleicht ist das ja hilfreich wenn jemand sich mal fragt, warum diese IDs verschieden sind...

Sep 13

Da habe ich ja nun auf der T3CON gehört, dass es bei TYPO3 bald Ext.JS geben wird, da wollte ich es natürlich auch mal ausprobieren und anschauen. Deshalb hab ich es mir gleich runtergeladen, leider ging die Dokumentation erst gar nicht...

Aus Zeitmangel hab ich leider nicht weiter rumprobiert, aber schade ich finde ich es doch.

Screenshot mit Fehlermeldung von Ext.JS

Sep 13

Der 2. Tag der Konferenz ging glücklicherweise etwas später los, denn das "social event" am Samstag ging doch relativ lange :-) Obwohl ich nicht allzulang da war, kam ich auch etwas später, denn ich habe verschlafen (Wecker nur an Arbeitstagen klingeln lassen ist eben manchmal keine Einstellung im Handy). Ich war leider nicht länger auf der Party am Samstag, da die Location deutlich zu wenig Sitzplätze hatte und ich nach 3 Stunden stehen mit meinem kaputten Fuß einfach nicht mehr konnte. Weiterlesen »

Sep 11

Nach dem 1. Tag auf der T3CON '09 möchte ich gerne mal die Sachen ansprechen, die mir hier am meisten gefallen bzw. nicht gefallen haben. Natürlich ging es bei vielen Vorträgen um FLOW3 oder TYPO3v5, also gibt es natürlich auch viel über die Dinge zu sage, die in diesen beiden Sachen in Zukunft entstehen/eingebaut werden sollen. Gerade höre ich mir zum Beispiel einen Vortrag über Ext.JS an, welches in der neuen TYPO3 Version verwendet werden soll. Weiterlesen »

Aug 29
  • english
  • german

At least I have encountered this problem on bigger websites I realized myself oder for my employer. If you then use tools like PageSpeed or YSlow to analyze those websites, you will soon realize that the number and filesize of those external files is often too big. For images CSS-sprites will help you out there for sure. But additionally there is a lot of CSS and JavaScript being loaded, especially on bigger websites. You will easily have 20 files or more! Now I wrote queo_speedup, a TYPO3 extension to improve this very problem. Without too much user interaction needed, of course! Weiterlesen »

Nov 14

Da predigen die Deppen den ganzen Tag was von Sicherheit und tollen Konzepten und speichern dann die Passwörter im Klartext.

Das passt ein bisschen zu meinem Post von gestern...

DANKE nochmal, liebes TYPO3(.org)-Team.

Hätte man sich vielleicht mal an die eigene Nase fassen sollen bevor man sich die Zeit nimmt und fremde Extension prüft!

(Jaja, überspitzt, blabla, keine Ahnung blabla, komplexe Strukturen blabla - mich nervt es nur einfach grad)

Nov 13

Ich habe gerade eine TYPO3-Installation von TYPO3 4.1.x auf 4.2.3 geupdated, was mir promt die ganze Seite zerschossen hat. PHP5 ist mit der Fehlermeldung abgebrochen, dass die Methode array_merge_recursive_overrule in der Klasse "t3lib_div" einen Parameter vom Typ "array" erwartet, jedoch "null" bekommen hat. Auslöser des Problems war bei mir die Extension "dam". Wenn ich sie im BE deaktiviere läuft es wieder, natürlich mit eingeschränkter Funktionalität.

Ich habe aus diesem Grund die Parameterdefinition in t3lib_div in der Methode entfernt (das "array" bei $arr1 und $arr2 weglöschen) damit es wieder geht.

Liebe Core-Entwickler, bevor ihr solche tollen PHP5-Features in den Core integriert, solltet ihr das den Extension-Autoren sagen, damit die ggf. ein Update bereitstellen können!!!

DANKE!

UPDATE: Die Extension "date2cal" scheint mit 4.2.3 ebenfalls NICHT zu laufen!

Nov 07

Um die Absender eines Mailformulars im TYPO3 besser verfolgen zu können, ist es manchmal nötig deren IP-Adresse zu speichern. Da ich eine Weile für die Lösung gebraucht hab, möchte ich sie hier kurz vorstellen:

Die TYPO3-Extension th_mailformplus bietet bereits die Möglichkeit eigene Marker im Template zu definieren. Man kann sich also im Template in verstecktes Feld anlegen, und einen Marker in das value-Attribut setzen. Diesen kann man nun mit folgenden TypoScript befüllen (###ip###):

plugin.tx_thmailformplus_pi1 {
fieldConf {
...
}
markers.ip = TEXT
markers.ip.data = getIndpEnv:REMOTE_ADDR
}

Über diese Methode lassen sich auch weitere Umgebugsvariablen auslesen und versenden. Für mehr Informationen sei hier auf die TSref verwiesen. Ich hoffe, dem einen oder anderen hilft das vielleicht.

Okt 27
  • english
  • german

I just had the task to render litte NEW icons after every new TYPO3 page in the main menu. You can edit this by changing the value "new until" in the page properties dialog. After some trying I found a solution:

NO.stdWrap.append = HTML
NO.stdWrap.append {
value = &nbsp;<img src="fileadmin/img/new.png" alt="NEW" style="vertical-align: middle;"/>
value.if.value.data = date: U
value.if.isGreaterThan.field = newUntil
}

Okt 01
  • english
  • german

Sometimes, you might need to check whether a string has already been urlencoded with PHP or not. Sadly, PHP doesn't offer such a function but because I recently needed it, I tried this one:

/**
 * Returns true if given string is url encoded
 *
 * @param string $string
 * @return boolean
 */
function is_urlencoded($string) {
	return $string === urlencode(urldecode($string));
}

This works fine for me (as far as I have tested), so maybe it is a litte help for anyone with the same problem