Zum Inhalt springen

Mit externem php-script auf typo3 zugreifen

Erstellt am 27. April 2007 · 22 Antworten · letzte Antwort am 11. Mai 2007 · Seite 1 von 2

Tags: Frage

mad1200 ·

OK, das funtioniert soweit.
Das Script läßt sich aufrufen.
Jetzt möchte ich in diesem Script aber Werte aus dem Flexform
benutzen.
Wie z.B. storagepid, dbName,dbPasswort usw.

Das muß dann doch irgendwie so gehen, wie in der Klasse der Extension.

Das habe ich jetzt eingebaut in dem aufzurufenden Sciipt.
require_once(t3lib_extMgm::extPath('extName').'pi1/class.tx_extname_pi1.php');
$this->flexValues= t3lib_div::makeInstance('tx_extename_pi1');
´
$pid=$this->flexValues->pi_getFFvalue($this->tslib_cObj->data['pi_flexform'], 'storagepid', 'sDEF');

Wie geht'n das?

webzigartig ·

Hm, da muss ich passen. Mit Flexforms habe ich mich noch nie beschäftigt. Ich könnte Dir höchstens sagen, wie Du auf im TS-Setup definierte Variablen (bzw. Constants) in Deinem "externen" Skript zugreifen kannst - denn die Variable $conf steht hier ja leider nicht zur Verfügung...

webzigartig ·

Das ginge dann so:

1.) Im Ordner der Extension die Datei "ext_typoscript_constants.txt" anlegen.
2.) In der Datei die nötigen Konstanten nach folgendem Muster definieren:

#cat=meinekategorie;type=;label=meinekonstante:meinerklärungstext plugin.user_meineextension_pi1.meinekonstante = meinwert

3.) Die Konstante müßte jetzt im Constant-Editor im T3-Backend zu sehen und editierbar sein (evtl. Cache leeren vorher)
4.) Im Ordner der Extension die Datei "ext_typoscript_setup.txt" anlegen.
5.) In der Datei die nötigen Variablen nach folgendem Muster definieren:

plugin.user_meineextension_pi1 {
      meinekonstante = {$plugin.user_meineextension_pi1.meinekonstante}
}

6.) Im externen PHP-Skript kann man auf die Variable nun wie folgt zugreifen:

$conf=$GLOBALS["TSFE"]->tmpl->setup["plugin."]["user_meineextension_pi1"."."];
echo $conf["meinekonstante"];
steffenk ·

das dürfte schwierig werden - Du müsstest ja die richtige Seite mit dem Plugin aufrufen.

Ich nutze eine andere Möglichkeit. Als Grundlage dient das php cronscript aus direct_mail - das lädt das komplette T3-Framework. Jetzt braucht man nur die ID des CEs, um die Flexform auszulesen:

$res=$GLOBALS['TYPO3_DB']->exec_SELECTquery('*','tt_content','uid='.$cid);
$row=$GLOBALS['TYPO3_DB']->sql_fetch_assoc($res); 
$flex=t3lib_div::xml2array($row['pi_flexform']);

Jetzt hat man die Flexform im Array und kann sie auswerten - die manuelle Methode.

mad1200 ·

Hallo Babyschlumpf,

constants- und setup.txt sind schon vorhanden.
Wenn ich jetzt irgendeine Konstante auslesen will, passiert nichts.

Im BE constant-editor steht was drin.

Hallo steffenk

habe ich auch versucht.
Wo kommt "$cid" her?

$res=$GLOBALS['TYPO3_DB']->exec_SELECTquery('*','tt_content','uid='.$cid);

mad1200 ·

Hardcoded alles schön und gut

$res=$GLOBALS['TYPO3_DB']->exec_SELECTquery('*','tt_content','uid='.$cid);

aber welche ziffer von 1 bis ? trage ich da ein?
Wo kommt diese her? Wie kann man die evtl auslesen?

steffenk ·

ich versteh nicht, wie Du einen Cron hinbekommen willst, wenn Du mit ID eines CEs nichts anfangen kannst.

Die ID wird Dir beim Mouseover im BE angezeigt, ausserdem steht sie da, wenn man das Plugin bearbeitet.

mad1200 ·

Aha, beim Bearbeiten des CE steht ganz oben Pagecontent [100].

Den Cron bekomme ich ja hin, der Funktioniert auch.
Das was ich brauche, sind Variablen aus der Konfig.

Nun muß ich nur noch checken, weshalb ein Fehler beim Aufruf dieser Methode
kommt.
$flex=t3lib_div::xml2array($row['pi_flexform']);

mad1200 ·

Jetzt funktioniert es, so wie ich es haben will.
Danke steffenk

Aus danp_documentdirs habe ich mir zwei Funktionen geliehen, die genau den Feldnamen auslesen, welcher beötigt wird.