php befehle in templates-- !?

blubber

Erfahrenes Mitglied
Hi,

ich hab ja auch dieses vBulletin Board, und das basiert ja auf Templates. Schön und gut, aber wie kann ich in so nem Template einen einfachen php Befehl ausführen? <?php echo ... ?> funktioniert mal nicht, es kommt keine fehlermeldung, sondern wird einfach ignoriert.

bye
 
worin ist denn dann bitte der sinn von templates, wenn du innerhalb eines templates php code stehen hast? der eigentliche sinn is ja der, design und code zu trennen. :rolleyes:

cyas,
chino
 
probiers mal so:

$string = preg_replace("/\<\?(.*?)\?\>/i", eval("$1"), $string);

ich hoffe, dass das geht. ich bin mir nämlich
a) nicht sicher, ob < und > escaped werden müssen und
b) nicht sicher, ob der code bei eval() ankommt, da regex bei variablenübergabe gern mal rumbockt
 
Zuletzt bearbeitet:
naja, chino, es ist eben so, dass der komplette kopf dieses forums über das header-template realisiert wird, und ich im kopfbereich ein selbst geschriebenes php script einbauen möchte. und das würd ich halt irgendwie includen wollen an der richtigen stelle...

@socke, wie meinst das jetzt? also wenn ich einfach den php befehl

PHP:
include("mein_script");
ausführen will.
 
probier einfach mal aus obs geht, wenn du ins template schreibst...

<html>
<head>
<was auch immer>
<? echo "hallo"; ?>
</html>
 
-

Ich glaube, du hast noch nicht so richtig verstanden, wie man mit Templates umgeht.
Du fügst dein selbstgeschriebenes Script ist den Code vom Board und setzt noch im Template "header" einen Platzhalter, wo dann später die Ausgabe deines Scripts platznimmt. Lies dir vielleicht nochmal mein Tutorial über Templates durch, das ist nach dem Prinzip vom vBulletin geschrieben.
 
Ich glaube, du hast noch nicht so richtig verstanden, wie man mit Templates umgeht.
da kann ich dir nur zustimmen...
Du fügst dein selbstgeschriebenes Script ist den Code vom Board und setzt noch im Template "header" einen Platzhalter.......
öhm...hä? :) hab ich das jetzt net verstanden, oder ist das komisch geschrieben? ;)
Lies dir vielleicht nochmal mein Tutorial über Templates durch, das ist nach dem Prinzip vom vBulletin geschrieben.
ok mach ich. hab mir zwar schon einiges über templates reingezogen von der site hier (ältere threads etc), aber hatte es aufgegeben, weil ichs absolut net gepeilt hab...

bye

achja, @ socke. hatte ja schon geschrieben, dass dies nicht funktioniert....
 
Zuletzt bearbeitet:
öhm...hä? :) hab ich das jetzt net verstanden, oder ist das komisch geschrieben? ;)

hm, ne, eigentlich verständlich ;)

ich übersetz mal: anstatt deinen eigenen php code im template einzubinden, packst du das script einfach in den anderen code vom board. so, und damit dieser code auch angezeigt wird, definierst du im template einfach noch einen weiteren platzhalter (z.b. {MEINCODE} ), und an dessen stelle sollte dann dein script stehen!

diese variante fände ich auch sauberer, weil du dann wie gesagt immer noch den code vom layout getrennt hast (was ja der eigentliche sinn ist) :)

cyas,
chino
 
ALso die Templates im wbb sind eigentlich ganz normale HTML Dateien und werden auch so bearbeitet, nur dass alles in einen echo befehl gestezt wird (mit der eval-Funktion) und alle " zu einem \" erstetzt werden (str_replace("\"", "\\\"", usw...)).
Wird im vbb net viel anders sein!

Also ist es möglich, Variablen in die Templates reinzubringen, abba keine Befehle (geht ja im echo Befehl (auch) nicht!)
Einzige Möglichkeit wäre, dass du spezielle Anführungszeichen verwendest (z.B. '#', und die Template-Funktion dann so umschreibst, dass diese dann als echo-Begrenzungsbefehle benutzt werden ;) .
Beispiel:
PHP:
$string = str_replace("'#'", "\"", $string)

Dann könntest du folgendermassen Befehle in dein Template einfügen:
Code:
blabla...
'#'.round(5,2111).'#'

...blablub...

'#'; for($i=0; $i<5; $i++) {
echo '#'test<br>'#';
}

echo '#'

so müssts ungefär funzen!
 
Zuletzt bearbeitet von einem Moderator:
hmmm....aha..
nungut, bleibt nurnoch die frage, wie und wo bei dem vbulletin boards die templates definiert sind...
kennst du dich damit aus, caminus?

und thx für die bisherigen antworten.
 
Zurück