Zum Inhalt springen

tt_products, Marker & PHP

Erstellt am 12. Dezember 2012 · 6 Antworten · letzte Antwort am 14. Dezember 2012

Tags: Frage

toxictype ·

Hallihallo!!!

Nach einigen Versuchen habe ich es nun geschafft, ein eigenes PHP-Skript in TYPO3 einzubinden und dieses an allen gewünschten Stellen aufzurufen. Generell verwende ich TV, da aber tt_products eingesetzt wird und das wiederum mit Markern arbeitet, stehe ich zwischen zwei
Stühlen.

Das Problem:
Marker in tt_products zeigen einfach gar nichts an, wenn sie keinen Inhalt haben. Dies möchte ich mit einem PHP-Skript ändern. Allerdings versuche ich verzweifelt, den Wert eines Markers aus tt_products bzw. TYPO3 in mein PHP-Skript zu bekommen.

Ich habe folgende Ansätze:
1) Übergabe in TS

page.includeLibs.test = fileadmin/templates/php/user_functions.php
page.12 = USER
page.12.userFunc = user_functions->testFunction
page.12.gimme < plugin.tt_products.marks.PRODUCT_HERSTELLER

Ich dachte, ich kann den Inhalt des Markers so übergeben. Fand ich clever, funktioniert aber nicht! 😉
Mache ich etwas falsch oder ist es so einfach nicht möglich?

2) Aufruf des Markers im PHP-Skript

...
hersteller = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tt_products.']['marks']['hersteller'];
...

Funktioniert so natürlich nicht, aber ich habe auch nach langem Durchforsten des Netzes nichts gefunden!
Wie muss der "Pfad" lauten, wenn es so überhaupt möglich ist?

3) im PHP-Skript den Wert direkt aus der Datenbank auslesen.
Die Frage ist, ob ich da nicht ein wenig übers Ziel hinaus schieße...

Was meint ihr? Ich würde mich wahnsinnig freuen, wenn jemand mir bei meinem Problem helfen kann.
Ich bin mit meinen Versuchen am absoluten Ende.

Ich danke euch!
gruß
tox

vince ·

hallo,

Um Marker anzupassen gibt's bei tt_products einen Hook.

getItemMarkerArray (&$parent, &$markerArray, $item, $catTitle, $imageNum, $imageRenderObj, $forminfoArray, $theCode, $id)

da kann man dann das MarkerArray bearbeiten

das Teil heißt $TYPO3_CONF_VARS['EXTCONF']['tt_products']['PRODUCT']

Gruß,
Vince.

toxictype ·

Hi Vince,

ich hoffe, Du meinst nicht Captain Hook! 😉
Ne, Brüller beiseite!

Wenn ich mich richtig erinnere, kann ich damit neue Datenfelder anlegen.
Ich möchte aber Datenfelder in meinem PHP-Skript auslesen bzw. auf Inhalt überprüfen.

Wie funktioniert das damit?

thx & gruß
tox

vince ·
toxictype schrieb

Wenn ich mich richtig erinnere, kann ich damit neue Datenfelder anlegen.

nö, mit dem hook (heißt wirklich so) kannst Du auch Datenfelder auslesen. Dann kann man halt Markerinhalte überschreiben und/oder neue Marker hinzufügen.

toxictype ·

Das war schnell!

Ich habe momentan keine Vorstellung, wie ich das in mein PHP-SKript einbringen soll.
Hast Du vielleicht ein Beispiel, wie man z.B. das Datenfeld "delivery" in tt_products ausliest?

vince ·

also wenn du es mit einem Hook machst:
1) dann muss zuerst der Hook zuerst eingetragen werden (z.B. in der ext_localconf von einer extension)

require_once('pfad/zur/php/datei/class.klassenname.php');
$TYPO3_CONF_VARS['EXTCONF']['tt_products']['PRODUCT'][] = klassenname

2) dann die Klasse "klassennameerstellen": dateiname muss mit class. beginnen, Klassenname mit tx_
also die Datei heißt dann z.B. class.tx_irgendwas und die Klasse heißt tx_irgendwas

dann folgendes in die Datei schreiben:

class tx_irgendwas{
	public function getItemMarkerArray (&$parent, &$markerArray, $item, $catTitle, $imageNum, $imageRenderObj, $forminfoArray, $theCode, $id) {

	}
}

weiß jetzt auch nicht genau, was die einzelnen Parameter für Zeugs enthalten. Ich vermute mal, dass in $item der DB-Eintrag drinnsteht. Sprich auf "delivery" kannst du dann mit $item['delivery'] zugreifen.

Wenn das nicht klappt, kannst du anhand der uid den Eintrag auslesen

t3lib_BEfunc::getRecord('tt_products',$uid);

eventuell musst du dann mal mit var_dump oder print_r schauen, was in den Variablen drinnsteht. Aber die uid wird auf jeden Fall irgendwo drinnstehen, sonst wäre der Hook ja relativ sinnfrei.

Dann kannst Du sowas scheiben wie

$markerArray['###MEIN_MARKER###'] = "bla";

auf die gleiche Art können bestehende Marker überschieben werden.

gruß,
Vince

toxictype ·

Hi Vince,

vielen Dank für die Tipps.
Der erste Versuch hat sich mit einem "whitescreen" bedankt! :-(
Schuld war ein fehlendes Semikolon.
Ich denke, ich warte besser bis morgen damit.

Ich habe den Hook mit absoluten Pfad in der ext_localconf.php von tt_products angelegt.
Kann ich ihn auch in die (Haupt-)localconf.php im Verzeichnis typo3conf packen?

tox