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
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 ...
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?)
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
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.
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
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
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;
}
}
Hallo,
der Schnipsel von freshman liefert dir nur die AKTUELLE Seiten-ID, das bringt in diesem Context nichts.
Ja, wahrscheinlich ist ein anderer Ansatz besser. Schau dir mal diese Userfunction für dein (T)MENU an:
itemArrayProcFunc
https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/ContentObjects/Hmenu/Tmenu/Index.html#menu-common-properties
Da bekommst du das ganze Menü als Array und kannst da nach Lust und Laune drin ändern.
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];
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
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)
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