Zum Inhalt springen

TMENU erweitern mit userfunc

Erstellt am 14. Januar 2009 · 12 Antworten · letzte Antwort am 15. Januar 2009

Tags: Frage

stereotyp ·

Hallo,

ich möcht in einem TMENU an den Seitentitel eine Ausgabe eines plugins anhängen

was ich bisher gefunden habe ist:

2.NO.stdWrap.cObject = COA
2.NO.stdWrap.cObject {
10 = TEXT
10.field = title
.
.
.
[meine Überlegung:]
40 = USER
40.userFunc = plugin.tx_meinplugin_pi1->main

}

dies funktioniert nicht......
es wird nur der Seitentitel ausgegeben
das plugin gibt bisher nur ein "test" zurück
(return "test");

Vielen Dank im voraus

meckpo ·

Hallo,

ich hab jetzt nicht näher drüber nachgedacht, ob das wirklich funktioniert, aber vielleicht hilft dir das weiter:

1) stdWrap hat selbst UserFunction-Einbindung (stdWrap.postUserFunc), den Umweg übers cObject etc. kannst du dir glaub ich sparen

2) Dein Aufruf muss (wenn überhaupt = siehe 3.) OHNE das "plugin." erfolgen, es ist der Name der Klasse! Also tx_meinplugin_pi1->main

3) Wie war das jetzt mit den userfunctions? Der Klassenname muss vorne mit "user_" beginnen. Manchmal geht aber tatsächlich auch "tx_". Könntest also Glück haben, könnte aber auch schon an der Benennung der Klasse liegen ...

stereotyp ·

Jo danke

das geht:

40 = USER
40.userFunc = tx_meinplugin_pi1->main

hmm....ich dachte das hätte ich auch schon probiert gehabt

aber schon die nächste Frage:

wie erhalte ich jetzt im plugin die seiten-uid der jeweiligen Seite?

muß ich sie im TS übergeben (wie?)

stereotyp ·

also mit:

40 = USER
40.userFunc = plugin.tx_meinplugin_pi1->main
40.value=xyz

habe ich dann im plugin
$this->conf[value]=xyz

nur wie füge ich im ts die page_uid anstatt xyz ein?

Sorry, bin nicht so der typoscripter

meckpo ·

Hallo,

wie gesagt, besser ist es mit

2.NO.stdWrap.postUserFunc =  tx_meinplugin_pi1->main

Dabei bekommst du nämlich schon 2 Werte übergeben:
$conf und $content heißen die üblicherweise schon in der Methode main() des Plugins. Laß dir den Inhalt der beiden dann mal mit

t3lib_div::debug($content);
t3lib_div::debug($conf);

anzeigen! Wahrscheinlich findest du da drin schon irgendwo die Page-ID.

stereotyp ·

habe ich probiert

bei echo t3lib_div::debug($content);
gibt er mir die 10 Seitentitel des menüs aus

bei echo t3lib_div::debug($conf);
gibt er mir 10 mal debug debug debug.....
aus

Seitentitel ist ja schonmal was aber ich brauche ja die id.....

Vielen Dank

stereotyp ·

vielleicht habe ich mich auch verrant
und es gibt ne einfache Lösung

also:
es werden Datensätze eines bestimmten typs(eigene extension)
in Seiten abgelegt
in dem TMENU dieser Seiten soll nicht nur der Seitentitel angezeigt werden
sondern dahinter die Anzahl der o.g. Datensätze auf der jeweiligen Seite
<-das wäre ja dann einfach eine mysql-Abbfrage in meinem plugin
WENN ich die uid der Seite hätte

freshman17 ·

Du mußt die PageId nicht übergeben, diese steht dir zur Verfügung wenn du in deiner Funktion das Array $TSFE einbindest.

Beispiel:

class user_Class {
	function user_function($content,$conf){
		global $TSFE;
		$pid = $GLOBALS["TSFE"]->id;
	}
}
freshman17 ·

So wie ich es versteh will er doch auch nur die aktuelle Seiten-Id haben?!

$uid = $GLOBALS["TSFE"]->page[uid];
$pid = $GLOBALS["TSFE"]->page[pid];
stereotyp ·

Ah...vielen Dank

das mit dem

global $TSFE;

wußte ich nicht

ich habe sonst in plugins auch immer Zugriff auf die uid der seite
über

$GLOBALS['TSFE']->id

gehabt
muß es jetzt also lauten:

$GLOBALS["TSFE"]->page[uid];

(plus global $TSFE)

ja freshman17..wenn ich diese uid habe dann kann ich ja eine mysql abfrage laufen lassen

werde es sofort morgen früh testen und berichten

herzlichen Dank

stereotyp ·

kurze Überlegung doch noch:

könnte doch gut sein dass es mit dem tsfe->id nicht klappt

aber die itemArrayProcFunc raff ich noch nicht ganz

hätte einer ein schnippsel für das script

und auch für die korrekte anbindung im TS

ist dies auch möglich mit einem kickstarter-plugin? (wegen der mysql funktionen die dort zur Verfügung stehen)

stereotyp ·

so jetzt aber:

itemArrayProcFunc war das richtige

ich hatte anfangs in der debug-ausgabe des übergebenen Arrays

einfach übersehen dass es zweidimensional ist

und schon hatte ich mich wieder verrant.....aber jetzt läufts wunderbar

vielen Dank nochmals