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


RE: Dynamisch Funktion ausführen - Ausgabe in Template - frostschutz - 06.03.2013

Ich weiß nicht ob es das ist was du suchst, aber du kannst mit einer Klasseninstanz und __get() http://www.php.net/manual/en/language.oop5.magic.php sowas wie {$DeineKlasse->deineeigenschaft} dynamisch Inhalte in Templates bekommen, ohne daß das Plugin weiß in welchem Template / auf welcher Seite / ob überhaupt der Variableninhalt gebaut und initialisiert werden muß.

Nur die Klasse an sich mußt du erzeugen, aber das kostet ja weiters nichts.


Mit dem Hooks Plugin hat das indes nichts zu tun. Das ersetzt nur Hooks in normalen Plugins, wenn man nicht für jeden Einzeiler ein eigenes Miniplugin schreiben will...


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

Habe es noch nicht ganz verstanden.

Ich habe also "{$tag_cloud}" im Template "search" an beliebiger Stelle platziert.

Mein Plugin sieht wie folgt aus:
Zitat:<?php
if(!defined("IN_MYBB"))
{
die("You Cannot Access This File Directly");
}
function tag_cloud_info()
{
//....
}

function tag_cloud_activate()
{
//....
}

function tag_cloud_deactivate()
{
//....
}
function tag_cloud(){
global $mybb;
if ($mybb->settings['enabled_tag_cloud'] == 1){

$tag_cloud = "TEST CLOUD";

}
}
?>

Leider funktioniert es nicht. der Text wird nicht ersetzt.
Mit "$plugins->add_hook("pre_output_page", "tag_cloud");" am Anfang klappt es auch nicht.

Schöne Grüße,
ps915


RE: Dynamisch Funktion ausführen - Ausgabe in Template - frostschutz - 08.03.2013

Innerhalb einer Funktion musst du dei Variable dann auch erstmal Global machen.

PHP-Code:
global $tag_cloud



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

Damit ist es auch noch nicht getan. Kannst du mir sagen, was mir noch fehlt?


RE: Dynamisch Funktion ausführen - Ausgabe in Template - frostschutz - 08.03.2013

Wird die Funktion aufgerufen, bevor das Template evaluiert wird? Hast du denn ein Setting enabled_tag_cloud? Ansonsten die if-Abfrage raus. Bau Debugmeldungen ein.


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

(08.03.2013, 22:44)frostschutz schrieb: Wird die Funktion aufgerufen, bevor das Template evaluiert wird?
Wie gesagt, ich habe {$tag_cloud} in das Template eingefügt. So ziemlich nahe {$footer}. Ansonsten habe ich das Plugin so wie in meinem letzten Beitrag. Die Setting ist aktiv bzw enabled, sollte somit eigentlich funktionieren.


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

Ist das Plugin denn aktiviert?


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

Na klar. Aktiviert ist es der eine Setting ist richtig gesetzt! Es sind bis jetzt erst 4 Zeilen Code und eben der Eintrag in dem Template drin.


RE: Dynamisch Funktion ausführen - Ausgabe in Template - frostschutz - 09.03.2013

versuchs mal mit dem search_end hook, pre_output_page kommt zu spät

aus search.php
PHP-Code:
$plugins->run_hooks("search_end");
        eval(
"\$search = \"".$templates->get("search")."\";");
        
output_page($search); 



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

Klappt leider auch nicht. Wird so nicht in anderen Plugins auch vorgegangen? Warum klappt es denn einfach nicht, wobei es eigentlich so simpel ist. Ein einfaches Hello World würde ja ausreichen. Dann kann ich weiter mit dem Funktionen arbeiten.