[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Template Switch - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
sebhecht
Beiträge: 126
Registriert: 22. Feb 2008, 11:02
Wohnort: Stuttgart

Template Switch

1. Nov 2016, 19:12

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

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

Re: Template Switch

3. Nov 2016, 09:21

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*

sebhecht
Beiträge: 126
Registriert: 22. Feb 2008, 11:02
Wohnort: Stuttgart

Re: Template Switch

3. Nov 2016, 11:48

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

Benutzeravatar
Oliver.Kreischer
Beiträge: 2508
Registriert: 17. Dez 2004, 00:03
Wohnort: Velbert - LA
Kontaktdaten: Website

Re: Template Switch

3. Nov 2016, 16:11

Hey Sebastian,

poste doch mal die URL wenn die Seite online ist.

LG
Oliver
> Friends Of REDAXO Gemeinsame REDAXO-Entwicklung!
> REDAXO Agenturen. Eintragen erwünscht!
> Komm in den Slack Channel Es lohnt sich!

Zurück zu „Templates/Navigationen [R5]“