[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
(gelöst) 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/
Benutzeravatar
echi
Beiträge: 130
Registriert: 15. Aug 2011, 11:31
Wohnort: Engstingen

(gelöst) Template Switch

13. Jan 2014, 10:51

Hallo Forum,

ich würde gerne eine Template Umschalter realisieren.
Irgendwie funktioniert das aber nicht.

Ich habe im Default Template

Code: Alles auswählen

<?php
  session_start();
  if ( isset($_GET['template']) ) 
  {
    $tmpl_id = $_GET['template'];
  }
  else
  {
    $tmpl_id = '3';
  }
  $_SESSION['template']=$tmpl_id;
  $tmpl = new rex_template($mpl_id); 
  include $tmpl->getFile();
?>

Ich habe es mir so gedacht, dass also beim Aufruf der Seite mit dem Default Template geprüft wird, ob template im GET steht. Wenn nicht wird ein Defaultwert gesetzt. Die ID des gewünschten Templates steht dann in $tmpl_id.
Bis hierhin funktioniert alles wunderbar.

Aber dann soll eben das Template mit dieser ID inkludiert werden und genau das funktioniert nicht.

Kann jemand helfen?
Zuletzt geändert von echi am 24. Jan 2014, 16:44, insgesamt 1-mal geändert.
Grüße
echi

snaft

Re: Template Switch

13. Jan 2014, 12:20

Hallo Echi,

liegt es evtl. an dieser Zeile:

Code: Alles auswählen

$tmpl = new rex_template($mpl_id);
Da fehlt meiner Meinung nach ein "t" bei $mpl_id.

Schöne Grüße,
Marc

Benutzeravatar
echi
Beiträge: 130
Registriert: 15. Aug 2011, 11:31
Wohnort: Engstingen

Re: Template Switch

13. Jan 2014, 14:33

Ohhh :oops: :oops: :oops: :oops:

...du hast recht :shock:

Vielen Dank das war der Fehler :D

Fürs Protokoll, hier mein Template-Switch:

Im default Template:

Code: Alles auswählen

<?php
  session_start();
  if ( isset($_GET['template']) ) 
  {
    $tmpl_id = $_GET['template'];
    $_SESSION['template']=$tmpl_id;
  }
  elseif ( !isset($_GET['template']) )
  {
    if ( isset($_SESSION['template']) )
    {
      $tmpl_id=$_SESSION['template'];
    }
    else
    {
      $tmpl_id = '3';
    }
  }
  $tmpl = new rex_template($tmpl_id); 
  include $tmpl->getFile();
?>

und dann in jedem anderen Template:

Code: Alles auswählen

<?php
    echo " <a href='". rex_getUrl( '', '', '&template=1') ."'>1</a> |";
    echo " <a href='". rex_getUrl( '', '', '&template=2') ."'>Bootstrap</a> |";
?>
Zuletzt geändert von echi am 13. Jan 2014, 22:44, insgesamt 1-mal geändert.
Grüße
echi

NGW
Beiträge: 132
Registriert: 1. Mär 2011, 09:12
Kontaktdaten: Website

Re: Template Switch

13. Jan 2014, 17:53

Und es ist besser mit rex_get / rex_post / rex_session zu arbeiten.

Benutzeravatar
echi
Beiträge: 130
Registriert: 15. Aug 2011, 11:31
Wohnort: Engstingen

Re: Template Switch

13. Jan 2014, 22:45

NGW hat geschrieben:Und es ist besser mit rex_get / rex_post / rex_session zu arbeiten.
Hallo NGW,

kannst du mir zeigen, was du meinst?
Grüße
echi

NGW
Beiträge: 132
Registriert: 1. Mär 2011, 09:12
Kontaktdaten: Website

Re: Template Switch

14. Jan 2014, 09:37

Statt $_GET['template'] würde ich rex_get('template', 'integer', DEFAULTVALUE) nutzen um an die Template ID zu kommen.

So kannst du gleich in einem Schritt den Typ definieren und einen Defaultwert setzen. Das selbe funktioniert mit den Funktionen rex_post / rex_request / rex_session.

Gruß

Benutzeravatar
echi
Beiträge: 130
Registriert: 15. Aug 2011, 11:31
Wohnort: Engstingen

Re: Template Switch

16. Jan 2014, 14:22

NGW hat geschrieben:Statt $_GET['template'] würde ich rex_get('template', 'integer', DEFAULTVALUE) nutzen um an die Template ID zu kommen.

So kannst du gleich in einem Schritt den Typ definieren und einen Defaultwert setzen. Das selbe funktioniert mit den Funktionen rex_post / rex_request / rex_session.

Gruß
Hey - das ist ja super, danke :D
Da spart man sich das ganze if isset und Klammern...

Ich habe meinen Template Switch dementsprechend überarbeitet:

Code: Alles auswählen

<?php
  session_start();
  $template['default']=3;
  $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();
?>
Hab es auch hier gepostet: http://www.redaxo.org/de/download/templ ... ate_id=184
Grüße
echi

Zurück zu „Allgemeines [R4]“