blog.bartlweb - a technologist's external brain

Thema: Webentwicklung

einfaches auslesen von ganzen Datensätzen aus der Datenbank anhand der UID in Typo3-Extensions

Um einen ganzen Datensatz eines Elementes aus einer Datenbank-Tabelle (Vorraussetzung ist das existieren der Spalte uid) in Typo3 auszulesen, bedarf es keiner komplexen Datenbankabfragen. Ein einfacher Befehl der als Parameter den Tabellennamen und die UID des Datensatzes annimmt genügt.

$row = $this->pi_getRecord(<Tabellenname>, <UID>); 

Flexform-Daten in Typo3-Extension auslesen

Um die Flexform-Daten eines Plugins zu nutzen benötigt man in seiner eigenen Extension etwas PHP-Code. Dabei kann nicht nur auf Flexform-Daten des aktuellen Plugins sondern auch auf jene jedes beliebigen (soweit der Datensatz bekannt ist) zugegriffen werden.

Flexform-Daten des aktuellen Plugins

$this->pi_initPIflexForm();
$this->flexform = array();
 
// get flexform data
$piFlexForm = $this->cObj->data['pi_flexform'];
$sDef = current($piFlexForm['data']);
foreach ( $piFlexForm['data'] as $sheet => $data ) {
    foreach ($data['lDEF'] as $key => $val ) {
        $this->flexform[$key] = $this->pi_getFFvalue($piFlexForm, $key, $sheet, 'lDEF');
    }
}

fremde Flexform-Daten

$row=$this->pi_getRecord(tt_content, $this->conf['foreignFlexformContentElementID']); 
$flexformData = t3lib_div::xml2array($row['pi_flexform']);
 
$foreignFlexform = array();
 
$piFlexForm = $flexformData;
$sysLanguage = $GLOBALS['TSFE']->sys_language_uid;
$sDef = current($piFlexForm['data']);
$lDef = array_keys($sDef);
foreach ( $piFlexForm['data'] as $sheet => $data ) {
    foreach ( $data as $lang => $value ) {
        foreach ( $value as $key => $val ) {
            $foreignFlexform[$key] = $this->pi_getFFvalue($piFlexForm, $key, $sheet);
        }
    }
}

eingeloggte Benutzer in Typo3-Extension abfragen

Um in einer Typo3-Extension abzufragen ob ein Frontend-Benutzer angemeldet ist genügt die Abfrage der folgenden boolschen Variable:

$GLOBALS['TSFE']->loginUser

Des weiteren liest Typo3 falls ein Benutzer eingeloggt ist immer den kompletten Datensatz des Benutzers aus der Tabelle fe_users aus. Somit entfällt hier eine Datenbankabfrage und alle Spalten können bequem über das Array $GLOBALS['TSFE']->fe_user->user ausgelesen werden. So ist z.B. in folgender Variable das Passwort des Benutzers gespeichert:

$GLOBALS['TSFE']->fe_user->user['password']

Funktionsaufruf mit Parametern für setTimeout

Des öfteren würde man gerne einer per setTimeout oder setInterval aufgerufenen Funktion Parameter mitübergeben. Das folgende Konstrukt hilft dabei.

setTimeout(
   function(){
      ownFunction(param1, param2);
   },1000
);

Caching einer Extension per Typoscript deaktivieren

Die meisten Extensions benutzen das Typo3-interne Cachingsystem. Dieses lässt sich entweder durch umschreiben der Extension deaktivieren oder auch ganz einfach jederzeit per Typoscript.

plugin.tx_pluginname_pi1 = USER_INT

Cross-Site Scripting (XSS) mit Hilfe von iFrames

Will man zwischen einem iFrame und der Hauptseite Daten mittels JavaScript austauschen oder Funktionen auf der anderen Seite aufrufen benötigt man den ansatz von Cross-Site Scripting (XSS).

Dabei gibt es allerdings von Anfang an folgende Einschränkungen:

  • Die Hauptseite und der iFrame müssen von der selben Domain aufgerufen werden.
  • Dabei ist es auch nicht erlaubt zwischen Subdomains zu kommunizieren
  • und zuletzt muss auch der Port (also http/https) übereinstimmen.

Erfüllt man diese Bedingungen steht einem Regen austausch nichts mehr im Wege. Dabei kann dann aus dem iFrame heraus eine Funktion der Hauptseite mittels folgendem Code aufgerufen werden:

Datein aus dem SVN-Repository ausnehmen

Hin und wieder gibt es den einen oder anderen Grund einzelne Dateien nicht mit ins SVN-Repository einzuchecken. Für diesen Fall gibt es die SVN-Eigenschaft svn:ignore.

svn:ignore wird für einzelne Dateien oder Ordner gesetzt und kann sowohl vollständige als auch mit Wildcard versehene Dateinamen aufnehmen.

Beispiele

* -> alles ausnehmen
test.txt -> Die Datei "test.txt" ausnehmen
*.txt -> Alle Dateien mit der Endung ".txt" ausnehmen
cache_* -> Alle Datein die mit "cache_" beginnen ausnehmen

Typo3-Cache aus einer Extension heraus löschen

In Ausnahmesituation kann es erforderlich sein den Frontend-Cache einer Seite oder auch aller Seiten aus einer Typo3-Extension heraus zu löschen. Setzen Sie diese Lösung mit bedacht ein, da bei zu häufigem Einsatz die Ladezeiten Ihrer Website stark steigen können.

alle Cache-Tabellen leeren

$TCE = t3lib_div::makeInstance('t3lib_TCEmain');
$TCE->admin = 1;
$TCE->clear_cacheCmd('all');

gesamten Seiten-Cache löschen

$TCE = t3lib_div::makeInstance('t3lib_TCEmain');
$TCE->admin = 1;
$TCE->clear_cacheCmd('pages');

Cache einer bestimmten Seite löschen

$TCE = t3lib_div::makeInstance('t3lib_TCEmain');
$TCE->clear_cacheCmd(<pid>);

Beispiel: Cache für die Seite mit ID 3 löschen

$TCE = t3lib_div::makeInstance('t3lib_TCEmain');
$TCE->clear_cacheCmd(3);

Automatisches Ersetzen von Sonderzeichen in WordPress deaktivieren

WordPress ersetzt gewisse Satzzeichen wie Anführungszeichen durch spezielle "hübschere" Sonderzeichen. Diese Verhalten mag für reinen Text vielleicht gewünscht sein, für Code-Schnippsel ist Sie aber meistens nicht gewünscht. Des weiteren kann es bei der Darstellung im Browser zu Problemen kommen.

Um WordPress dieses Verhalten abzugewöhnen ist ein kleiner Eingriff in den Quellcode nötig (Achtung: bei einem Update muss der Vorgang wiederholt werden)

 

Kommentieren Sie dazu in der Datei wp-includes/formatting.php im oberen Abschnitt die folgenden Zeilen aus:

nützliche Firefox-Extensions

Firefox-Extensions gibt es wie Sand am Meer. Aus dieser Flut die wirklich nützlichen zu Filtern ist oft gar nicht so einfach. Darum hier eine kleine Liste mit Extensions für Alltag und Webentwicklung.

Extensions für den Alltag

Flashblock

Flashanimationen werden beim Aufruf der Seite standardmäßig geblockt und erst durch Anklicken dieser geladen und abgespielt.

Undo Closed Tab

ergänzt die Navigationsleiste um einen Button mit dem kürzlich geschlossene Tabs komfortabel wieder hergestellt werden können.

PDF Download

fragt bei PDF's nach ob diese heruntergeladen, im Browser oder im externen Reader geöffnet werden sollen.