Hallo, Gast! (Registrieren)

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


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Problem mit Templatecache bei Plugins
#1
Nachdem ich mich nun durch diverse Themen bei mybb.com durchgewühlt habe, aber trotz diverser Hinweise nicht zum Ziel komme, frage ich mal hier nach.

Es geht darum, dass beim Start eines Plugins, die darin erstellten Templates aus dem Cache gezogen werden und nicht jeweils neu über einen query abgefragt werden.

In den oben erwähnten Themen habe ich z.B. folgende Hinweise gefunden (Beispiel für ein Plugin, das im Benutzer-CP aufgehängt ist):
PHP-Code:
$plugins->add_hook("usercp_menu""foo");

if(
THIS_SCRIPT == "usercp.php")
{
  global 
$templatelist;
  
  if(isset(
$templatelist)){
    
$templatelist .= '';
  }
  
$templatelist .= ',abc,def,ghi';

Ich habe diverse Plugins, die z.B. über usercp.php, misc.php oder auch eine eigene php-Datei aufgerufen werden. Ich passe dann natürlich die Abfrage nach "THIS_SCRIPT" entsprechend an. Aber der o.a. Code funktioniert nicht einwandfrei. Entweder wird gar kein Template aus dem Cache gezogen oder nur ein oder zwei.

Ich steige einfach nicht dahinter, wo hier der Wurm drin ist.... Sad
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#2
Das sieht eigentlich richtig aus... Hast du einmal auf der Debug-Seite geschaut, ob die Template im Query aufgerufen werden:
Code:
SELECT title,template FROM mybb_forum_templates WHERE title IN ('' ,...
In diesem riesigen Query müssen sie auftauchen um im Cache zu landen.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
Ja, das ist es eben. Zum Teil tauchen sie dort auf, aber andere Templates des selben Plugins werden z.B. separat mit einem zusätzlichen Query abgefragt.
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#4
Dann muss ein Fehler in der $templatelist sein oder beim THIS_SCRIPT stimmt etwas nicht...
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#5
Wie ist das, wenn ein Link im Benutzer-CP nicht auf die usercp.php sondern auf eine xyz.php verweist? Da müsste sich dann auch die THIS_SCRIPT Abfrage auf die xyz.php beziehen, oder?
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#6
Ja, genau.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#7
hmm, das habe ich aber auch schon versucht. Sad
Nochmal etwas genauer nachgefragt:
(01.06.2014, 10:25)Jockl schrieb: Da müsste sich dann auch die THIS_SCRIPT Abfrage auf die xyz.php beziehen, oder?
Reicht die Abfrage nur im Plugin oder muss das auch in die Datei xyz.php?
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#8
Das reicht im Plugin vollkommen aus, die Plugin-Datei wird ja bei jedem Aufruf eingebunden und ausgeführt. Du kannst auch den Hook global_start verwenden, dort funktioniert dieser Code auch.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#9
OK, das mit global_start hat funktioniert. Wobei das vermutlich ein wenig übertrieben ist, oder? Mich wundert es, warum es bei den anderen Hooks bzw. insbesondere bei einer Weiterleitung (also an xyz.php) nicht funktioniert.
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#10
Ich finde nicht, dass das übertrieben ist, für so etwas ist der Hook ja da... Wenn du viele Templates hast, lohnt sich das schon.

Was meinst du mit Weiterleitung? (Funktion redirect?)
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren