Seite 1 von 1

Template Switch

Verfasst: 1. Nov 2016, 19:12
von sebhecht
Hallo,

ich würde gerne einen Template-Switch einbauen, der wie folgt aussieht:

1. Auf der Seite ist ein Link, mit dem man die Seite so switched, dass man alle Seiten mit Template2 aufruft (Template mit anderem Stylesheet)
2. Bei diesem Template gibt es auch einen Link, mit dem man wieder zurück zu Template1 kommt.

Ich habe mir zwar schon ein paar Beispiele angeschaut, aber nichts hinbekommen (Bspe. sind leider in der Regel nicht kommentiert), z. B. hier:

Code: Alles auswählen

<?php
  session_start();
  $template['default']=1;
  $template['this']=rex_session('template', 'integer', $template['default']);
  $template['new']=rex_get('template', 'integer', $template['this']);
  $template['switch']=($template['new']!=$template['this']?true:false);
  if($template['switch'])
  {
    rex_set_session('template',$template['new']);
    $template['this']=$template['new'];
  }
  $tmpl = new rex_template($template['this']); 
  include $tmpl->getFile();
?>
Da ich mich mit sessions nicht richtig auskenne, versuche ich zu verstehen, wie das ganze funktioniert, aber wenn ich es ausprobiere, klappt es nicht.
Wahrscheinlich haben sich in Rex5 ja auch einige Befehle geändert, aber das durchschaue ich leider noch nicht.
Beispielsweise macht auch der "Switcher" Probleme:

Code: Alles auswählen

<?php
echo " <li><a href='". rex_getUrl( '', '', '&template=3') ."'>None [ID: 3]</a></li>";
echo " <li><a href='". rex_getUrl( '', '', '&template=2') ."'>Bootstrap [ID: 2]</a></li>";
?>
Hat sich die Funktion rex_getUrl geändert?

Kann mir vielleicht jemand erklären, wie ich das in Redaxo 5 hinbekomme?

Vielen Dank im Voraus
Sebastian

Re: Template Switch

Verfasst: 3. Nov 2016, 09:21
von darwin
HI,
rex_getURL hat sich in R5 (soviel ich weiß) nicht geändert...

Dein Vorhaben sollte jedoch etwas anders laufen:
Zumindest mal der Switcher:

Code: Alles auswählen

<?php
echo ' <li><a href="' .rex_geturl(rex_article::getCurrentId(), rex_clang::getCurrentId() , array("template" => 3)) ."'>None [ID: 3]</a></li>";
echo ' <li><a href="'. rex_geturl(rex_article::getCurrentId(), rex_clang::getCurrentId() , array("template" => 2)) ."'>Bootstrap [ID: 2]</a></li>";
?>
Damit solltest du zumdindest schon mal die Template Vars abrufen können:

Code: Alles auswählen

$get_template = rex_request("template", int, 0);
grz. Chris

*ungetestet*

Re: Template Switch

Verfasst: 3. Nov 2016, 11:48
von sebhecht
Hey Chris,

vielen Dank für die Antwort. Hab jetzt weiter probiert und es hinbekommen. :D

Im Header:

Code: Alles auswählen

<?php
  	session_start();
  	//Standard-Template, wenn nichts geändert wurde
	$template['default']=13;
	// Template-Übergabe auslesen
  	$template['this']=rex_session('template', 'integer', $template['default']);
  	$template['new']=rex_get('template', 'integer', $template['this']);
	$template['switch']=($template['new']!=$template['this']?true:false);
  	// Wenn Template-Übergabe abweicht, dann neue id übernehmen
	if($template['switch']) {
    		rex_set_session('template',$template['new']);
    		$template['this']=$template['new'];
  	}
	// Standardtemplate oder anderes einfügen
  	$tmpl = new rex_template($template['this']); 
  	include $tmpl->getFile();
>
Den Switch habe ich einfach rechts in die Breadcrumb eingebunden:

Code: Alles auswählen

<?php
// Durch &template=id wird die gewünschte Temmplate-id übergeben und im Session-Abschnitt verarbeitet
switch ($template['this']) {
	case '13':
		echo ' <a href="'. rex_getUrl().'&template=14" class="switch" title="Touch-freundliches Menü"><img src="/resources/css/images/touch.png" title="Touch-freundliches Menü"></a>';
		break;
	case '14' :
		echo ' <a href="'. rex_getUrl().'&template=13" class="switch" title="Normale Version"><img src="/resources/css/images/mouse.png" title="Normale Version"></a>';
		break;
}
>
Bei der touch-freundlichen Version wird dann dass stylesheet für ein jquery-Klick-Menü eingebunden, bei der normalen Version das hover-Menü verwendet.

Vielen Dank nochmal
Sebsatian

Re: Template Switch

Verfasst: 3. Nov 2016, 16:11
von Oliver.Kreischer
Hey Sebastian,

poste doch mal die URL wenn die Seite online ist.

LG
Oliver