MyBB.de Forum
Dynamisch Funktion ausführen - Ausgabe in Template - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Entwicklung (https://www.mybb.de/forum/forum-74.html)
+--- Thema: Dynamisch Funktion ausführen - Ausgabe in Template (/thread-27596.html)

Seiten: Seiten: 1 2


Dynamisch Funktion ausführen - Ausgabe in Template - ps915 - 01.03.2013

Hallo Forum,

ich bin gerade dabei ein Tag-Cloud Plugin zu schreiben. Ich habe alle Funktionen fertig und möchte es nun komfortabel als Plugin umsetzten.

Die Tag-Cloud wird aus den Suchbegriffen erstellt. Die Häufigkeit des Suchwortes wird gespeichert sowie die letzte Suche. Als Zusatz kann man die Suchbegriffe noch explizit freischalten, damit kein Spam in der Tag-Cloud erscheint.

Die Ausgabe erfolgt in 30 Tags (die dreißig meist gesuchten - Schriftgröße proportional nach deren Suchanzahl). Die Ausgabe wird durch gemischt, sodass eine typische Tag-Cloud entsteht.

Nun zu meinem Problem:
Ich habe vor einigen Jahren meine letzten Plugins für MyBB programmiert und habe deshalb nur noch Grundwissen. PHP Wissen habe ich und die Funktionen sind ja auch fertig.

Die Tag-Cloud soll nun an beliebiger Stelle im Forum platziert werden. Ich weiß nun aber leider nicht, wie man zum Beispiel die Funktion in das Template bekommt.

Ich würde gerne in einem Template "{tag_cloud}" mit der Ausgabe der Funktion aus dem Plugin ausführen lassen.

Kann mir jemand die Grundstruktur nennen bzw es anhand eines simplen Beispiels erklären. "{tag_cloud}" soll erst mal per Hand in das Template eingetragen werden.

Schöne Grüße,
ps915


RE: Dynamisch Funktion ausführen - Ausgabe in Template - Jockl - 02.03.2013

Hast Du Dir schon mal Plugins angesehen, die Templateänderungen vornehmen? Das sollte Dir eigentlich weiter helfen können. Siehe hier z.B. die Funktion find_replace_templatesets()


RE: Dynamisch Funktion ausführen - Ausgabe in Template - ps915 - 03.03.2013

Ja, die Funktion kenne ich, aber damit kann ich ja nicht dynamisch eine Funktion bei jedem Aufruf ausführen lassen, oder?


RE: Dynamisch Funktion ausführen - Ausgabe in Template - Jockl - 03.03.2013

Das ist schon richtig, aber darin kannst Du doch Deine Variable packen und diese dann über einen Hook entsprechend füllen.


RE: Dynamisch Funktion ausführen - Ausgabe in Template - ps915 - 04.03.2013

Ich habe mir das "Hooks" Plugin angesehen und verstehe auch das Prinzip dahinter. Nur dieses Plugin verwendet ja hooks in den .phps und nicht im Template.

Muss ich im Template also einen eigenen Hook erstellen und ihn im Plugin ansprechen?
Könntest du mir kurz erklären wie das funktioniert?


RE: Dynamisch Funktion ausführen - Ausgabe in Template - Jockl - 04.03.2013

Warum im Template mit PHP arbeiten? Das geht eh nur mit einem extra Plugin und wenn Du eh schon eines erstellst, dann kannst Du das ja darin vornehmen. Wenn Du die Tags z.B. auf der index-Seite ausgeben möchtest, dann könntest Du Dich an den entsprechenden Hook hängen. Hier gibt es übrigens eine Übersicht der existierenden Hooks.


RE: Dynamisch Funktion ausführen - Ausgabe in Template - ps915 - 05.03.2013

Ich glaube wir reden aneinander vorbei. Mir ist klar dass ich kein PHP Code in ein Template schreibe.

In das Template möchte ich lediglich "{tag cloud}" an beliebiger Stelle einfügen und der Rest macht das Plugin bzw meine Funktionen. Mir ist nur nicht klar, wie ich dem Plugin erklären soll, dass er die Ausgabe/Rückgabewert meiner Funktion an die Stelle im Template fügen soll.
Verstehst du jetzt mein Problem?


RE: Dynamisch Funktion ausführen - Ausgabe in Template - StefanT - 05.03.2013

{tag cloud} ist keine PHP-Variable. {$tag_cloud} wäre beispielsweise eine.


RE: Dynamisch Funktion ausführen - Ausgabe in Template - ps915 - 05.03.2013

Okay, und wie setzte ich im plugin den inhalt der {$tag_cloud}


RE: Dynamisch Funktion ausführen - Ausgabe in Template - Jockl - 05.03.2013

Kommt darauf an, was Du an die Variable übergeben möchtest....
PHP-Code:
$tag_cloud "...."
oder per eval
PHP-Code:
eval("\$tag_cloud = \"".$templates->get("DEIN_TAG_CLOUD_TEMPLATENAME")."\";"); 
oder mit dem Ergebnis einer MySQL Abfrage....