TYPO3weblog.de

Das Blog zu TYPO3, JavaScript und openSource

Entries for Dezember, 2008

Adventskalender 2008: Türchen 17

Tim Georg hat Euch gestern im Türchen 16 gezeigt, wie man mit TypoScript und einem cObj einen Login erzeugt. Mein heutiges Türchen ist sehr kurz, aber sehr interessant wie ich finde.

In letzter Zeit habe ich sehr oft mit AJAX und JSON gearbeitet. Leider gibt es dabei immer ein Problem mit cc_debug, weil sich dieser immer hinter die Ausgabe des JSON Codes klemmt und damit ein kaputtes JSON erzeugt. Nachdem ich heute mit meinem Kollegen Michael zusammen gesessen habe um dieses Problem zu lösen, sind wir auf eine sehr einfache Lösung gestoßen:

$GLOBALS['errorList']->clear();
die(json_encode($result));

Die Zeile 1 direkt vor der Ausgabe des JSON Codes eingebaut, verhindert, dass cc_debug noch seinen JavaScript-Code hinter her ausgibt. Und wer jetzt sagt: naje, ein die() oder exit() sollte es auch tun, der irrt sich. Versucht es gerne selber mal ;)

Comments (6)

Adventskalender 2008: Türchen 15

Nachdem das Türchen 13 aus persönlichen Grunden leider ausfallen musste, hat Tim gestern im Türchen 14 erklärt, wie man im Backend die Framebreite anpassen kann.

Heute im Türchen 15 möchte ich Euch die Verwendung des Command Line Interface (CLI) von TYPO3 näher bringen. Das CLI bietet sich immer an, wenn man Prozesse automatisieren möchte. Dies gilt z.B. für tägliche Erinnerungsmails, welche jeden morgen um 9 Uhr versendet werden sollen. Genau an diesem Beispiel möchte ich Euch nun zeigen, wie sowas geht:

Es sind nur 5 einfach Schritte nötig:

1. Backend User
Wir benötigen einen Backend-User, welcher für die Ausführung benötigt wird. Dieser sollte mit “_cli_” beginnen. Wir nennen ihn mal “_cli_myext”, das Passwort ist eigentlich egal, da das CLI sich nicht ins Backend einloggt, jedoch könnte dieser User bei einem schwachen Passwort böswillig verwendet werden. Aus diesem Grund sollten ein sehr kryptisches Passwort gewählt werden.

2. Registrierung des CLI Scripts
Um das CLI nutzen zu können, müssen wir nun unser Script registrieren, dazu ist folgender Eintrag in der Datei ext_localconf.php notwendig:

if (TYPO3_MODE=='BE') {
  $TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['cliKeys'][$_EXTKEY] = array(
    'EXT:'.$_EXTKEY.'/class.tx_myext_cli.php',
    '_cli_myext'
  );
}

Hierbei ist zu beachten, dass der Backend-User mit angeben wird.

3. Das CLI Script selbst
Als nächstes benötigen wir das CLI Script selbst:

< ?php
if (!defined('TYPO3_cliMode'))  die('You cannot run this script directly, only from the command line!');

require_once(PATH_t3lib.'class.t3lib_cli.php'); 

class tx_myext_cli extends t3lib_cli {
    function tx_myext_cli() {
      parent::t3lib_cli();
      $this->cli_help['name'] = 'Reminder-Mailings';
      $this->cli_help['synopsis'] = '###OPTIONS###';
      $this->cli_help['description'] = 'send reminder mailings';
      $this->cli_help['examples'] = '/.../cli_dispatch.phpsh myext sendMails';
      $this->cli_help['author'] = 'Frank Nägler, (c) 2008';
    }

    function cli_main($args) {
      // extract task
      $task = (string) $this->cli_args['_DEFAULT'][1];
      switch ($task) {
        case 'sendMails':
            $this->sendMails();
        break;
        default:
          $this->cli_validateArgs();
          $this->cli_help();
          exit;
        break;
      }
    }

    function sendMails() {
    	// send some mails
    }
}

// Call the functionality
$cliObj = t3lib_div::makeInstance('tx_myext_cli');
$cliObj->cli_main($_SERVER['argv']);

?>

4. Der Aufruf
Möchte man das CLI jetzt testen, dann brauchen wir nur die folgende Zeile in einer Shell aufrufen:

/path/to/typo3/cli_dispatch.phpsh myext sendMails

5. Der cronJob
Da wir die Mails ja jeden morgen um 9 Uhr versenden möchte, brauchen wir noch einen Eintrag in der cronTab:

0 9 * * * /path/to/typo3/cli_dispatch.phpsh myext sendMails

Das war es schon, die Möglichkeiten sind quasi unerschöpflich. Viel Spaß und viel Erfolg mit dem nächsten cronJob ;)

Comments (12)

Adventskalender 2008: Türchen 11

Gestern hat Euch Tim Tobias im Türchen 10 erklärt, wie man eine TYPO3 Installation auf utf-8 umstellt, ein sehr schönes Tutorial wie ich finde.

Immer wieder erlebe ich es, dass der Kunde Texte selber ändern möchte, klar dafür hat er ja auch von uns TYPO3 bekommen. Leider Zum Glück, möchte der Kunde aber manchmal alles pflegen, also auch Texte die aus LocalLang-Dateien oder Templates kommen.

Eine sehr einfache aber durchaus effektive Lösung dafür ist mal wieder ein wenig TypoScript:

plugin.tx_myplugin_pi1.searchError = RECORDS
plugin.tx_myplugin_pi1.searchError {
  tables = tt_content
  source = 123
}

Jetzt noch das ContentElement mit der UID 123 im Seitenbaum anlegen und folgenden PHP Code in der Extension verwenden:

$marker['###ERR_SEARCH###'] = $this->cObj->cObjGetSingle(
  $this->conf['searchError'],
  $this->conf['searchError.']
);

Das war es schon, jetzt enthält der Marker ###ERR_SEARCH### den Content, den der Kunde selbst eingepflegt hat. Natürlich muss man kein RECORD nehmen, sondern kann auch alle anderen TS-Objekte wie TEXT oder IMAGE.

Comments (4)

Nicht gerade openSource aber kostenlos…

Für einen Backlink zu www.3dsupply.de erhält man ein cooles Feed me! T-Shirt kostenlos. Aufmerksam geworden bin ich durch einen Beitrag von Provider-Stoerung.de. Ist das jetzt Virales Marketing? SEO? Mir egal, ich bekomme kostenlos ein T-Shirt ;-)

Comments (2)

Adventskalender 2008: Türchen 9

Tim stellte Euch gestern im Türchen 8 die neue Blog-Extension vor. Ich selber bin inzwischen ein überzeugter Wordpress Blogger, habe mir fest vorgenommen mir t3blog auch mal anzusehen.

Heute möchte ich Euch drei Bücher vorstellen und ans Herz legen. Zu allen dreien kann ich sagen, dass ich diese gelesen haben und bei meiner täglichen Arbeit nicht mehr missen möchte.

Buchtip Nummer 1: TYPO3 Kochbuch

[amtap amazon:isbn=389721430X]

Buchtip Nummer 2: TypoScript – kurz & gut

[amtap amazon:isbn=3897215365]

Buchtip Nummer 3: PHP Design Patterns

[amtap amazon:isbn=3897214423]

Auch wenn es mir am Anfang etwas schwer viel die Beispiele aus dem Buch PHP Design Patterns auf TYPO3 anzuwenden, möchte ich inzwischen keine Extension mehr anders programmieren. Das Buch ist meine tägliche Bibel geworden.

Comments (10)