Mobile Weiche / manuell auf Desktop Version umstellen
am 19.08.2015 - 12:56 Uhr in
Hallo zusammen,
ich bin am verzweifeln. Ich versuche, eine Weiche zu programmieren die zwischen "Mobil" und "Desktop" Website unterscheidet (es gibt zwei unterschiedliche Sites je nach aufrufendem Gerät). Dazu verwende ich eine PHP Klasse. Grundsätzlich funktioniert die Unterscheidung auch. Das Problem kommt, wenn ich auf der mobilen Seite "manuell" auf die Desktop Version wechseln will. Ich habe ein "$forceDesktop" eingebaut für die index.php. Jedoch springt bei jedem Link, den ich dann vom mobilen Gerät aus auf der Desktop-Version der Seite öffne dann wieder die mobile Seite an. Wie bringe ich dem ganzen bei, auf der Desktop Seite zu bleiben?
Hier mein Code:
<?php
require_once 'mobile_detect/Mobile_Detect.php';
$detect = new Mobile_Detect;
$mobile=false;
if ($detect->isMobile()) {
$mobile=TRUE;
}
if (isset($_SESSION["mobile"])) {
if ($_SESSION["mobile"]==0) {
$mobile=FALSE;
}
}
if (isset($_GET["forceDesktop"])){
// Zeige unbedingt Mobil oder Desktop
if ($_GET["forceDesktop"]==1) {
// unbedingt Desktop zeigen
$mobile=FALSE;
$_SESSION["mobile"]=0;
} else {
// unbedingt Mobil zeigen
$mobile=TRUE;
}
}
// Any mobile device (phones or tablets).
if ($mobile){
header("Location: http://www.tinahaertel.de/MobileSeite/TinaMobil.html");
exit();
} else {
/**
* Root directory of Drupal installation.
*/
define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
menu_execute_active_handler();
}
?>
Ich hoffe, ich habe mich klar ausgedrückt und es kann mir jemand helfen.
Gruß,
Matthias
- Anmelden oder Registrieren um Kommentare zu schreiben
Warum mußt Du das denn so
am 19.08.2015 - 13:58 Uhr
Warum mußt Du das denn so lösen? Das geht auch über das Modul Breakpoints. Dann bist Du nicht mehr von einem echten mobilen Gerät abhängig sondern nur noch von der Breite und kannst alles am Desktop testen. Für weitere Abhängigkeiten, wenn Du Blöcke in Abhängigkeit von der Breite des Displays zeigen möchtest, kommst Du mit den Modulen Context und Context-Breakpoints weiter. Du solltest Dann aber auf die "normale" Blockverwaltung von Drupal verzichten, da Context eine eigenständige Blockverwaltung darstellt mit mehr Möglichkeiten.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Hallo, das widerspricht
am 19.08.2015 - 14:20 Uhr
Hallo,
das widerspricht sich:
Jedoch springt bei jedem Link, den ich dann vom mobilen Gerät aus auf der Desktop-Version der Seite öffne dann wieder die mobile Seite an. Wie bringe ich dem ganzen bei, auf der Desktop Seite zu bleiben?
Du frägst ja in der Desktop Version ab, ob es ein mobiles Gerät ist und machst dann einen Redirekt zur Mobilen Seite.
Da Du ein Mobiles Gerät verwendest, funktioniert es doch.
Mit einem Desktop Browser bleibst Du auch auf der Desktop Version.
Du könntest evtl. selbst einen Link machen und eine Session setzten wo der User selber entscheiden kann, welche Seite er sehen möchte.
Gruss
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Das ist ja das Problem. Wenn
am 19.08.2015 - 17:32 Uhr
Das ist ja das Problem. Wenn ich auf der mobilen Seite explizit sage, dass ich die Desktopversion sehen möchte dann soll natürlich auch bei weiterführenden Links auf der Desktop Seite diese aktiv bleiben. Wie kann ich das mit einer Session Variablen machen? Ich versuche es ja gerade aber geht nicht. Sobald ich 'session_start()' verwende geht die Desktopseite nicht mehr ('not authorized').
Es geht um ein losgelöstes
am 19.08.2015 - 22:15 Uhr
Es geht um ein losgelöstes mobiles Seitenkonzept. Die mobile Seite soll nichts mit der Desktopseite zu tun haben.
Vielleicht versuchen im Fall
am 20.08.2015 - 10:56 Uhr
Vielleicht versuchen im Fall von Force Desktop mit header("Location: ...") auf die Drupalseite zu wechseln und damit dann die Weiche komplett zu umgehen?
Wegen session_start(): Ich denke Drupal mag das nicht wenn vorher schon eine Session gestartet wird. Du könntest ggf. auch versuchen den Session-Parameter erst in Drupal zu setzen oder nach dem Drupal-Bootstrap. Ob das geht weiß ich nicht.
wla schrieb Warum mußt Du das
am 10.07.2019 - 10:12 Uhr
Warum mußt Du das denn so lösen? Das geht auch über das Modul Breakpoints. Dann bist Du nicht mehr von einem echten mobilen Gerät abhängig sondern nur noch von der Breite und kannst alles am Desktop testen. Für weitere Abhängigkeiten, wenn Du Blöcke in Abhängigkeit von der Breite des Displays zeigen möchtest, kommst Du mit den Modulen Context und Context-Breakpoints weiter. Du solltest Dann aber auf die "normale" Blockverwaltung von Drupal verzichten, da Context eine eigenständige Blockverwaltung darstellt mit mehr Möglichkeiten.
Hallo Werner,
Ich würde gerne auch eine mobile Version meiner Drupal (7) Website erstellen. Leider ist mir noch nicht ganz klar, wie ich mit dem Modul "Context" bei Aufruf der Domain www.m.musterseite.de dann ein entsprechendes Theme starte, das speziell für Mobile Geräte gedacht ist. Ich habe ja keine Lust, die ganze Website neu parallel einzugeben...
Das müsste mit dem Modul ja irgendwie möglich sein - nur leider habe ich noch nicht entdeckt, wie das genau geht.
Danke für Hinweise!
LG
Dorothea
"Wenn der eine nicht will, können zwei nicht miteinander streiten."
Arno Backhaus
Hi. In D7 wird das Theme in
am 10.07.2019 - 11:49 Uhr
Hi.
In D7 wird das Theme in der Variablen Tabelle gespeichert.
$theme_default = 'mytheme';
// The below code would change the default active theme to 'mytheme'
variable_set('theme_default', $theme_default);
$admin_theme = 'shiny';
variable_set('admin_theme', $admin_theme);
https://stackoverflow.com/questions/8151062/change-the-active-drupal-7-t...
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
@Dorothea_Z Man nimmt für die
am 10.07.2019 - 12:38 Uhr
@Dorothea_Z
Man nimmt für die mobile Darstellung einer Webseite meist kein eigenes Theme, sondern steuert über Media Queries im CSS das Aussehen bei unterschiedlichen Geräten. Dazu verwendet man Breakpoints an denen z.B. die Bilder in einer kleineren Größe ausgegeben werden. Context geht darüber hinaus, indem es Dir mittels Context_Breakpoints erlaubt, die Anordnung von Blöcken auf der Seite zu steuern bzw. Blöcke wegzulassen oder auszutauschen. Die Inhalte sind dieselben wie in der normalen Ansicht. Der Unterschied liegt nur darin, wie und ob sie gezeigt werden.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *