[Panels + Browscap] Bedingung "ismobile" wird ignoriert

am 12.01.2015 - 00:30 Uhr in
Hallo zusammen,
um meine Website mobil etwas angenehmer darzustellen, sollen Panels ausgeblendet werden, wenn der User mit einem mobilen Gerät die Seite besucht. Das wollte ich mit den Modulen „Panels“, „Browscap", "Browscap CTools" lösen. Angefangen hab ich mit der Optimierung meiner Startseite. Die Panel-Seite hat zwei Varianten, eine mobile und eine nicht mobile Variante. Als Bedingung für die Anzeige ist der Parameter „ist Mobile“ entsprechend jeweils gesetzt (einmal mit „not“ und einmal ohne).
Die Browscap-Datenbank ist auf dem neuesten Stand und trotzdem wird – wenn ich die Website mit dem Smartphone oder mit einem Emulator aufrufe – immer nur wird die nicht mobile Variante angezeigt.
Hattet ihr das Problem auch schon?
Wo muss ich ansetzen, das gewünschte Ergebnis zu erhalten?
Gibt es Alternativen zu Browscap?
Wie habt ihr eure Website mobil fit gemacht?
P. S. Als Theme setze ich das "AdaptiveTheme" Starter-Theme ein.
Danke schon jetzt für eure Antworten.
Viele Grüße
Philipp
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich kann jetzt wenig dazu
am 12.01.2015 - 12:08 Uhr
Ich kann jetzt wenig dazu sagen, wie das Browscap Modul genau arbeitet und ermittelt, ob es sich um einen mobilen Besucher handelt. Grudnsätzlich würde ich dringend dazu abraten, die mobile Ansicht an einem vom Browser übermittelten Wert zu orientieren, wie Browscap es macht. Viel sicherer und einfacher ist es, die Seite einfach an der Bildschirmgröße per CSS auszurichten und anzupassen. Nur wenige Seiten machen es wirklich notwendig, eine Art "zweite" Mobile-Version zu erstellen, in der Regel reicht es eigentlich, die bestehende Seite mit CSS und vielleicht etwas JavaScript per Media Queries anzupassen.
Danke für deine Antwort
am 12.01.2015 - 16:30 Uhr
Danke für deine Antwort :-)
Browscap ist eine Erweiterung der get_browser() Funktionalität von PHP. Das Modul speichert die Browserstrings in der Drupal-Datenbank zwischen und frägt dann bei jedem Besuch den Browser-String des Besuches ab, vergleicht und zeigt dann den Status "is Mobile" oder "is not mobile" an.
Je nachdem, ob ich Rules, Panels, Display-Suite oder ein sonst kompatibles Modul einsetze, kann ich dann bestimmte Aktionen auslösen. In meinem Fall werden dann bestimmte Bereiche bei mobilen Benutzern nicht angezeigt und manche Felder in Nodes „anders“ dargestellt als in der Desktop-Variante.
Natürlich lässt sich sowas auch mit purem CSS und Media Queries dementsprechend anzeigen, aber mir geht es darum, dass die Bestandteile nicht nur ausgeblendet werden, sondern auch gar nicht erst von Drupal gerendert werden.
Ein Ausblenden mit „display:hide“ wäre für mich nur die absolute Notlösung, da Google den Befehl nicht gerne mag und Die Inhalte ja trotzdem heruntergeladen werden. Dies würde ich gerne gerade bei der mobilen Variante so schlank wie möglich halten.
Ich werde mich jetzt noch einmal mit „Breakpoints“-Modul beschäftigen, nur hat da bis jetzt das Javascript im Firefox Probleme gemacht. Das ist vom Ansatz her genauso wie du es beschrieben hast. Im Theme oder in der Datenbank werden Breakpoints/Mediaqueries festgelegt. Das Modul frägt diese nun ab, vergleicht und löst wiederum entsprechende Aktionen aus. Das „Breakpoints“-Modul ist soweit ich weiß auch im Core von Drupal 8.
meine Drupal-Websites:
http://www.mathetreff-online.de
http://www.globewheeler.com
Deine Intention dahinter
am 12.01.2015 - 18:48 Uhr
Deine Intention dahinter verstehe ich schon, nur ist ein bisschen ausgeblendetes HTML oft nicht so wahnsinnig ausschlaggebend in der gesamten Datenmenge... deswegen meinte ich, dass es oft nicht wirklich nötig ist, serverseitig aktiv zu werden. Ich frage mich halt, ob der Gewinn bei Deinem Projekt diesen Aufwand hier für Dich wirklich rechtfertigt und ob nicht display: none doch die bessere Alternative ist... und Google sieht das alle Augenblicke, deswegen würde ich mir da keine Sorgen machen ;-)
Hast Du das mal auf verschiedenen Geräten mit verschiedenen Browsern getestet? Browscap halte ich für eine schlechte Lösung, wenn Du serverseitig mobile Endgeräte testen möchtest: die verwendete Datenbank deckt eigentlich fast sicher zu keinem Zeitpunkt 100%ig alle möglichen mobilen Browser ab.
Browscap requires that your server be able to "phone out" (make a http request) to retrieve and update its user agent database.
Vielleicht ist Dein aktueller Browser nicht in der Datenbank, die da abgefragt wird?! Oder vielleicht funktionier das bei Deinem Provider einfach nicht? Gibt es Meldungen unter "Berichte" > "Statusbericht" ?
Vielleicht machst Du mal folgendes:
In browscap.module in Zeile 91 gib mal
dpm($user_agent);
ein (und aktiviere das Devel Modul). Wenn das Devel Modul nicht zu Hand ist, gib
var_dump($user_agent);
ein und rufe die Seite auf. Dann sollte in Meldungen-Box oder irgendwo im Browser der Wert dieser Variables ausgegeben werden. Das ist der User Agent, der von Deinem Browser übergeben wird - den würde ich dann mal direkt in der Tabelle (browscap) suchen um zu sehen, ob der da enthalten ist und welche Daten dazu gespeichert sind.
Danke für den Tipp :) Das
am 13.01.2015 - 01:16 Uhr
Danke für den Tipp :) Das Updaten von meinem Server aus ist möglich, hab ich schon mal gemacht. Hab über var_dump deinen Vorschlag gleich mal ausprobiert und so wie es aussieht (außer ich hab was übersehen), kennt browscap mein Smartphone (noch) nicht.
Laut PHPmyAdmin ist die Tabelle 150 MiB groß - viel zu aufgebläht wie ich finde. Drupal an sich ist ja schon eine "kleine Raupe Nimmersatt". Ich denke ich werde mich nach Alternativen umsehen.
meine Drupal-Websites:
http://www.mathetreff-online.de
http://www.globewheeler.com