Template über PHP aufrufen / einfügen

Wie verwendet man Templates oder erstellt Navigationen und passt diese an.

Template über PHP aufrufen / einfügen

Beitragvon Markus.Lorch » 24. Mai 2011, 10:25

Hi,

ich muss ne relativ komplexe Template-Weiche bauen. Für Mobile oder für Tablets oder für unterschiedliche Artikel dynamisch andere Templates.

Ich hab schon über die rex_template Klasse probiert aber das wollte nicht so recht. einfach über REX_TEMPLATE[] einbinden find ich unübersichtlich und hinderlich weil ich dann php schließen und wieder öffnen muss. Würd das gern rein mit PHP realisieren (liese sich dann auch in eine eigene Klasse als AddOn auslagern)

Code: Alles auswählen
$gettpl = new rex_template(7);
$gettpl->getTemplate();


Das war mein ansatz, hat aber nur so halb funktioniert ;)
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle
Benutzeravatar
Markus.Lorch
 
Beiträge: 636
Registriert: 21. Okt 2007, 16:22
Wohnort: Walheim

Re: Template über PHP aufrufen / einfügen

Beitragvon jeandeluxe » 24. Mai 2011, 11:14

Markus.Lorch hat geschrieben:Das war mein ansatz, hat aber nur so halb funktioniert ;)


Code: Alles auswählen
$Template = new rex_template(4);
include $Template->getFile();


hth,
Jan
RexSEO Support Checklist | Redaxo API Docu | rexdev.de | "You start with some money.."
mark your solved threads [SOLVED]™ promotion tour..
Benutzeravatar
jeandeluxe
 
Beiträge: 1941
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: Template über PHP aufrufen / einfügen

Beitragvon Markus.Lorch » 24. Mai 2011, 11:49

hm. Danke aber geht wieder nur so halb.

Wenn das Template kein PHP Quelltext hat, dann crashed es mit include, wenn ich stadessen echo verwende wird der enthaltene PHP Quelltext nicht mehr geparsed.

Hm.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle
Benutzeravatar
Markus.Lorch
 
Beiträge: 636
Registriert: 21. Okt 2007, 16:22
Wohnort: Walheim

Re: Template über PHP aufrufen / einfügen

Beitragvon jeandeluxe » 24. Mai 2011, 12:39

Markus.Lorch hat geschrieben:hm. Danke aber geht wieder nur so halb.

Wenn das Template kein PHP Quelltext hat, dann crashed es mit include, wenn ich stadessen echo verwende wird der enthaltene PHP Quelltext nicht mehr geparsed.


Weiß jetzt nicht genau was du meinst.. ich hab unterschiedliche Templates: die einen returnen ne var, die ich dann im Haupttemplate an geeigneter Stelle echoe - dann kann man den inlcude im Haupttemplate _irgendwo_ drinne haben - oder das includete Template macht selbst schon n echo.. dann muß der include Aufruf halt schon an der richtigen Stelle stehen. Die includeten Templates sind teils HTML mit irgendwo php Einsprengseln drin, oder reine php files.. je nachdem was se leisten sollen.

hth,
Jan
RexSEO Support Checklist | Redaxo API Docu | rexdev.de | "You start with some money.."
mark your solved threads [SOLVED]™ promotion tour..
Benutzeravatar
jeandeluxe
 
Beiträge: 1941
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: Template über PHP aufrufen / einfügen

Beitragvon Markus.Lorch » 24. Mai 2011, 14:14

Ja. Ich versuch gerade eine Mobile-Client, Tablet-Client, Normale Clients weiche zu bauen

Und entsprechend wahlweise dieses oder jenes Template zu wählen. Und da der Kunde zusätzlich noch für einige Artikel (Sartseite) wieder ein anderes Template will wurde das etwas komplizierter ;)

Ich bräuchte etwas a la (in Pseudocode):

Code: Alles auswählen
if($smartphone)
  if($startseite) $id = 1 else $id = 2;
elseif($tablet)
  if($startseite) $id = 3 else $id = 4;
else
  if($startseite) $id = 5 else $id = 6;

echo  getTemplate($id);
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle
Benutzeravatar
Markus.Lorch
 
Beiträge: 636
Registriert: 21. Okt 2007, 16:22
Wohnort: Walheim

Re: Template über PHP aufrufen / einfügen

Beitragvon jeandeluxe » 24. Mai 2011, 14:17

Markus.Lorch hat geschrieben:Ich bräuchte etwas a la (in Pseudocode):
Code: Alles auswählen
if($smartphone)
  if($startseite) $id = 1 else $id = 2;
elseif($tablet)
  if($startseite) $id = 3 else $id = 4;
else
  if($startseite) $id = 5 else $id = 6;

echo  getTemplate($id);


Und das Problem liegt wo? ;->

lg,
Jan
RexSEO Support Checklist | Redaxo API Docu | rexdev.de | "You start with some money.."
mark your solved threads [SOLVED]™ promotion tour..
Benutzeravatar
jeandeluxe
 
Beiträge: 1941
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: Template über PHP aufrufen / einfügen

Beitragvon Markus.Lorch » 24. Mai 2011, 14:24

Dass, wenn ich

echo getTemplate() gibt er mir das Template richtig aus, ABER der im Template enthaltene PHP Code (sprich getArticle und co) werden auch einfach ausgegeben ohne durch den Interpreter zu gehen

mach ich include getTemplate(), dann schmiert php gleich ab, weil der Doctype im Template natürlich kein PHP ist und per Include ja auch nix im "Muttertemplate" zu suchen hat.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle
Benutzeravatar
Markus.Lorch
 
Beiträge: 636
Registriert: 21. Okt 2007, 16:22
Wohnort: Walheim

Re: Template über PHP aufrufen / einfügen

Beitragvon jeandeluxe » 24. Mai 2011, 14:33

Markus.Lorch hat geschrieben:echo getTemplate() gibt er mir das Template richtig aus, ABER der im Template enthaltene PHP Code (sprich getArticle und co) werden auch einfach ausgegeben ohne durch den Interpreter zu gehen

mach ich include getTemplate(), dann schmiert php gleich ab, weil der Doctype im Template natürlich kein PHP ist und per Include ja auch nix im "Muttertemplate" zu suchen hat.


Ok, nomal so rum:

$Template = new rex_template($id);
include $Template->getFile();


Wenn das Template selber echot, dann spuckts an der Stelle wo obiger Aufruf steht eben aus.. wenn das Template seinen Kram in ne var (oder mehrere) packt, dann bekommst du die zurück, und kannst dann mit der weitemachen.. je nachdem was se konkret is halt echo $var, oder weiterverarbeiten, oder was auch immer.. klarer?

lg,
Jan
RexSEO Support Checklist | Redaxo API Docu | rexdev.de | "You start with some money.."
mark your solved threads [SOLVED]™ promotion tour..
Benutzeravatar
jeandeluxe
 
Beiträge: 1941
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: Template über PHP aufrufen / einfügen

Beitragvon Markus.Lorch » 24. Mai 2011, 15:18

Hm. Habs grad mit

Code: Alles auswählen
REX_TEMPLATE[<?php echo $template_id; ?>]
versucht was aber auch nicht fruchtet.

Hm. Ich seh schon, es geht halt einfach nicht anders auser die php-tags zu unterbrechen. Da die Templates die ich einbinden will eben keinen (bzw nur ein ganz kleines bischen) php Code enthalten liefert es auch keinen echo und keine Variablen zurück.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle
Benutzeravatar
Markus.Lorch
 
Beiträge: 636
Registriert: 21. Okt 2007, 16:22
Wohnort: Walheim

Re: Template über PHP aufrufen / einfügen

Beitragvon Gregor.Harlan » 24. Mai 2011, 15:31

Hallo,

eigentlich muss das so klappen, wie es Jan gepostet hat!
Eine Einschränkung gegenüber REX_TEMPLATE[] gibt es aber: REX_ARTICLE_ID/REX_CATEGORY_ID können im eingebundenen Template nicht verwendet werden.

Markus.Lorch hat geschrieben:
Code: Alles auswählen
REX_TEMPLATE[<?php echo $template_id; ?>]

Das kann nicht funktionieren, da die REXVARs ersetzt werden, bevor der PHP-Code ausgeführt wird.

Gruß, Gregor
Benutzeravatar
Gregor.Harlan
Entwickler
 
Beiträge: 825
Registriert: 4. Jun 2007, 09:35
Wohnort: Dresden

Re: Template über PHP aufrufen / einfügen

Beitragvon jeandeluxe » 24. Mai 2011, 15:32

Markus.Lorch hat geschrieben:Da die Templates die ich einbinden will eben keinen (bzw nur ein ganz kleines bischen) php Code enthalten liefert es auch keinen echo und keine Variablen zurück.


Letzter Versuch: ;_) Im Haupttemplate hab ich z.b.:
Code: Alles auswählen
$Template = new rex_template(5);
include $Template->getFile();

Template 5 sieht so aus:
Code: Alles auswählen
<div class="searchbox">
  <form action="<?php echo rex_getUrl(24,0); ?>" method="post">
    <input type="hidden" value="search_index" alt="Ergebnisseite" />
    <input type="text" name="rexsearch" id="rexsearch" value="" alt="Suche" />
    <input type="image" class="submit" src="/files/_layout/dot.gif" alt="Suchen" />
  </form>
</div>

An anderer Stelle include ich auf identische Weise mein navi-template, welches aber nicht direkt was ausspuckt, sondern folgende vars erzeugt/befüllt:
Code: Alles auswählen
$navHeader,  /*header navi*/
$navLeftCol, /*linke navi*/
$lvl1cat     /*cat-spezifische css klasse für body*/

die vars kann ich dann explizit an geeigneter Stelle des Haupttemplates echoen..

lg,
Jan
RexSEO Support Checklist | Redaxo API Docu | rexdev.de | "You start with some money.."
mark your solved threads [SOLVED]™ promotion tour..
Benutzeravatar
jeandeluxe
 
Beiträge: 1941
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: Template über PHP aufrufen / einfügen

Beitragvon Markus.Lorch » 24. Mai 2011, 15:50

Okay :lol: Ich bin schuld^^ Hab da was übersehen gehabt ;) es geht! :) mit getFile()
Danke jan.

Die Variablen nutze ich eigentlich so gut wie nie Gregor, weils mir mit php schon immer praktischer war. Aber eigentlich müsst ich diese Einschränkung mit dieser Funktion (hab sie grade nicht im kopf) aus der rex_vars Klasse auch wieder integrieren können - sollte ich das jemals brauchen.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle
Benutzeravatar
Markus.Lorch
 
Beiträge: 636
Registriert: 21. Okt 2007, 16:22
Wohnort: Walheim


Zurück zu Templates/Navigationen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast