PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Custom Template aufrufen



Gargi
16.11.2009, 22:58
Normalerweise rufe ich ja in vb4 ein Template innerhalb eines Templates mit

{vb:raw template_name}

auf. Ich habe also ein neues Template (custom template) angelegt. Der aufruf mit dem vb:raw klappt allerdings nicht. Mache ich da etwas falsch oder geht das gar nicht?

cu
Gargi

AA_
16.11.2009, 23:00
Normalerweise rufe ich ja in vb4 ein Template innerhalb eines Templates mit

{vb:raw template_name}

auf. Ich habe also ein neues Template (custom template) angelegt. Der aufruf mit dem vb:raw klappt allerdings nicht. Mache ich da etwas falsch oder geht das gar nicht?

cu
Gargi

wie kommst du denn darauf, dass das so gemacht wird? die variablen, die du in templates einsetzt, müssen natürlich auch registriert werden, bevor sie dort angezeigt werden.

leider zuwenig informationen, um dir konkret helfen zu können :)

Gargi
16.11.2009, 23:05
Irgendwie sowas denke ich auch. Ne ganz einfach. Ich habe beispielsweise einen einfachen html Code um die Banner darzustellen. Diesen packe ich in ein Template "my_advert" . Das mache ich bei den Styles unter add Template. Dann möchte ich an verschiedenen Stellen der Page immer mal genau diesen einen Code mit einbauen, damit ich nur an einer Stelle mal was ändern muss und nicht an 5 anderen Ecken, wo eben die Banner angezeigt werden.

cu
Gargi

AA_
16.11.2009, 23:09
nein, das ist nicht möglich auf diesem weg. dafür müssen plugins geschrieben werden, welche dein template einlesen in eine variable, die dann in den entsprechenden templates mit {vb:raw ...} benutzt werden kann.

Gargi
16.11.2009, 23:22
Hmmm... okay, da muss ich mich nochmal eingehender mit befassen.

Gargi
16.11.2009, 23:54
Okay, dann wollen wir mal (bin hier fündig geworden http://www.vbulletin.org/forum/showthread.php?t=227892 ):

1.) Style Manager: Add Custom Template
(ich nenne das mal advert)
Dort den HTML Code rein.

2.) Plugin Manager -> Add New Plugin
a) Forumdisplay soll es z.B. rein. Hook: forumdisplay_start
b) Title: meine Werbung
c) php Code

$advert = vB_Template::create('advert')->render();
vB_Template::preRegister('FORUMDISPLAY', array('my_advert' => $advert));

3.) In Template FORUMDISPLAY dann mit
{vb:raw my_advert}
aufrufen.

Danke Dir für den Hinweis so klappt das super!! Wieder was gelernt heute:)

cu
Gargi

PS.: Da ich das TMS nutze habe ich jetzt im TMS natürlich das advert als Modifikation drin und kann an der Stelle jetzt die Banner ändern und wird dann für alle übernommen wo es eben gelinkt ist.

AA_
17.11.2009, 10:22
das verfahren stimmt erstmal so. nur sollte man aufpassen, dass man nicht allzusehr mit dem arbeitsspeicher rumkleckert.

vB_Template::preRegister und vB_Template::register legen den übergebenen inhalt der variablen im kontext des objektes unter dem angegebenen schlüssel ab (welcher im template verwendet wird).

soll heissen, der inhalt existiert dann 2mal. einmal in deiner variablen $advert und einmal als objekt-eigenschaft vB_Template::$pre_registered['my_advert'].

nachdem man den inhalt registriert hat, kann man die vorher erstellte variable löschen, falls sie nachfolgend nicht nochmal verwendet wird.


$advert = vB_Template::create('advert')->render();
vB_Template::preRegister('FORUMDISPLAY', array('my_advert' => $advert));
unset($advert);

in deinem konkreten beispiel, werden im template 'advert' keine variablen registriert, so dass man das ganze auch ohne die zwischenspeicherung in eine variable lösen könnte:


vB_Template::preRegister('FORUMDISPLAY', array(
'my_advert' => vB_Template::create('advert')->render(),
));

Gargi
17.11.2009, 11:01
Ah okay, das werde ich entsprechend noch Umbasteln :) Da das dann bei jeden Forenklick umgesetzt wird ist eine Optimierung dahingegen sicherlich mehr als ratsam.

Danke Dir!

cu
Gargi

Gargi
17.11.2009, 19:34
Funzt auf alle Fälle. Danke nochmal für Deine Hilfe!

cu
Gargi