Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste
Dynamisch Funktion ausführen - Ausgabe in Template
#11
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...
Zitieren
#12
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
Zitieren
#13
Innerhalb einer Funktion musst du dei Variable dann auch erstmal Global machen.

PHP-Code:
global $tag_cloud
Zitieren
#14
Damit ist es auch noch nicht getan. Kannst du mir sagen, was mir noch fehlt?
Zitieren
#15
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.
Zitieren
#16
(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.
Zitieren
#17
Ist das Plugin denn aktiviert?
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#18
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.
Zitieren
#19
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); 
Zitieren
#20
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.
Zitieren