Ergebnis 1 bis 13 von 13

Thema: Mobile Layout - Useragent

  1. #1
    Contao-Nutzer Avatar von Nook
    Registriert seit
    09.09.2010.
    Ort
    Regensburg
    Beiträge
    122
    Partner-ID
    9262

    Standard Mobile Layout - Useragent

    Hallo,

    Contao entscheidet ob mobile oder nicht mobile, so wie ich es sehe, anhand des Useragent.
    Kann man selber in Contao anpassen, welche Useragents als mobile betrachtet werden?

    Wenn ich das richtig getestet habe, werden Tablets wie iPads oder Blackberry Playbook nicht als "mobile" betrachtet.
    Gut so, weil Tablets sind groß genug und kleine Anpassungen reichen hier meist. Wohingegen z.B. eine JQ Mobile Seite auf einem Tablet evtl. nicht so toll wirkt.

    Jedoch ist mir aufgefallen, dass das Nexus 7 als mobile betrachtet wird.
    Bug oder Feature?


    Nexus 7 Useragent:
    Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19

    Grüße,
    Martin

  2. #2
    Contao-Fan Avatar von neophron
    Registriert seit
    12.06.2010.
    Ort
    Berlin
    Beiträge
    290

    Standard

    Kann man selber in Contao anpassen, welche Useragents als mobile betrachtet werden?
    Würde ich auch gerne wissen.

    Gut so, weil Tablets sind groß genug und kleine Anpassungen reichen hier meist. Wohingegen z.B. eine JQ Mobile Seite auf einem Tablet evtl. nicht so toll wirkt.
    Solange man ein Gerät mit Fingern bedient, sollte es als »mobile« deklariert werden. Letztens habe ich folgendes gelesen: Apple recommends a minimum of 44x44px for any element the user is expected to interact with.
    Wenn unsere Vorfahren Echsen wären, müsste man diese 44x44px nach unten korrigieren.

    Mit der Extension [redirect] kann man vieles selber bestimmen. Für C3 ist sie leider noch nicht verfügbar.

  3. #3
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Das wird normalerweise in der agents.php gemacht. So was es zumindest unter Contao 2.x. Wie es in Contao 3 aussieht habe ich mir noch nicht angesehen, aber ich denke auch dort gibt es irgendwo eine agents.php.

    PS: Ich finde auch ein iPad ist ein mobile. Mobile dürfte nicht an der Auflösung festgemacht werden sondern an der Verbindung zum Internet - alles was über LTE, UMTS, EDGE und GRPS raus geht ist mobile. Da es aber leider nicht möglich ist das zu tracken zieht man irgendwelche Grenzen.

  4. #4
    Contao-Nutzer Avatar von Nook
    Registriert seit
    09.09.2010.
    Ort
    Regensburg
    Beiträge
    122
    Partner-ID
    9262

    Standard

    Ich denke, dass man hier irgendeine Steuerungsmöglichkeit benötigt.
    Eine Möglichkeit Useragents hinzuzufügen oder zu entfernen.

    Zunächst wäre es aber interessant, zu wissen, was laut Contao mobile ist und was nicht.
    So wie mein aktueller Wissensstand ist, kann ich mich nicht auf dieses mit Vorfreude erwartete Feature verlassen, da ich nicht weiß, wann welches Layout gewählt wird.

    Datenübertragung:
    Ich denke man kann davon ausgehen, dass der überragende Anteil der Tablets im WLan betrieben wird.

    Zu den Touch Events:
    Touch Fähigkeit kann man doch auch über JavaScript (zB modernizer) erfragen und die gewünschten Funktionen dann entsprechend einbinden.

    Hier geht es eher um das Template.
    Eine Einbindung eines angepassten Templates macht vermutlich für übliche Smartphones den größten Sinn.
    Ein Nexus 7 würde ich jedoch eher als Tablet bezeichnen, welches noch nicht unter das gesonderte mobile Template fallen sollte.
    Auf einem 7 Zoll Gerät benötige ich keine speziell angepasste Dropdown Navigation oder Dinge wie jQuery Mobile.
    Hier reichen Ansätze wie HolyGrail, Schriftgröße oder Modifizierung der Menüs noch gut aus.

    Ich vermute also, dass die Differenzierung über die Displaygröße den meisten Sinn machen, zumindest aus UI Sicht.
    Geändert von Nook (20.12.2012 um 17:42 Uhr)

  5. #5
    Contao-Nutzer
    Registriert seit
    01.11.2012.
    Ort
    Kiel
    Beiträge
    109

    Standard

    Die Liste, welche UserAgents für Contao "mobile devices" sind, steht in der Datei system/config/agents.php:
    PHP-Code:
    $GLOBALS['TL_CONFIG']['os'] = array
    (
        
    'Macintosh'     => array('os'=>'mac',        'mobile'=>false),
        
    'Windows CE'    => array('os'=>'win-ce',     'mobile'=>true),
        
    'Windows Phone' => array('os'=>'win-ce',     'mobile'=>true),
        
    'Windows'       => array('os'=>'win',        'mobile'=>false),
        
    'iPad'          => array('os'=>'ios',        'mobile'=>false),
        
    'iPhone'        => array('os'=>'ios',        'mobile'=>true),
        
    'iPod'          => array('os'=>'ios',        'mobile'=>true),
        
    'Android'       => array('os'=>'android',    'mobile'=>true),
        
    'Blackberry'    => array('os'=>'blackberry''mobile'=>true),
        
    'Symbian'       => array('os'=>'symbian',    'mobile'=>true),
        
    'WebOS'         => array('os'=>'webos',      'mobile'=>true),
        
    'Linux'         => array('os'=>'unix',       'mobile'=>false),
        
    'FreeBSD'       => array('os'=>'unix',       'mobile'=>false),
        
    'OpenBSD'       => array('os'=>'unix',       'mobile'=>false),
        
    'NetBSD'        => array('os'=>'unix',       'mobile'=>false),
    ); 
    Die Erkennung läuft dann in system/modules/core/library/Contao/Environment.php:
    PHP-Code:
        protected static function agent() {
    [...]
            foreach (
    $GLOBALS['TL_CONFIG']['os'] as $k=>$v)
            {
                if (
    stripos($ua$k) !== false)
                {
                    
    $os $v['os'];
                    
    $mobile $v['mobile'];
                    break;
                }
            } 
    Contao geht also nicht nach Auflösung oder Browser-Features (wie Touch Events), sondern nach dem laufenden Betriebssystem.

    Daher müsste eigentlich das Nexus 7 als Android und somit als "mobile device" erkannt werden, merkwürdig...
    (Da dessen UserAgent "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) [...]" das Wort "Android" enthält und die Schleife das Array nach dem ersten Treffer abbricht)

    Um eigene Agents als "mobile device" zu deklarieren, müsste es ausreichen, wenn du der Variable $GLOBALS['TL_CONFIG']['os'] einen Wert hinzufügst - am Besten an den Anfang des Arrays.

  6. #6
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    Hier wird generell nur auf Android geprüft und nicht ob es mobile oder nicht ist...
    Laut schneller Suche ist der Unterschied ein "Mobile" für Smartphones... Bei Tablets fehlt das einfach.

    Beispiel:
    Code:
    Mozilla/5.0 (Android; Mobile; rv:16.0) Gecko/16.0 Firefox/16.0


    Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03S) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19


    Alternativ wird da z. T. auch noch ein "Tablet" mit reingeworfen, aber das ist wohl unterschiedlich und vom Browser abhängig...

    Dementsprechend müsste man bei Android eigentlich eine zweite Subprüfung unternehmen ob ein Mobile mit drin ist oder nicht.

  7. #7
    Contao-Nutzer Avatar von Nook
    Registriert seit
    09.09.2010.
    Ort
    Regensburg
    Beiträge
    122
    Partner-ID
    9262

    Standard

    Oder man prüft einfach nach Android UND Mobile.

    Leider bin ich kein Coder und hab daher keinen plan, wie man das updatesicher umsetzten kann.
    Ist das evtl etwas für den Core?

  8. #8
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    Leider erlaubt stripos() keinen Array als Nadel und es gibt keine genauen Regeln wie und wo das Mobile auftauchen muss (sofern ich das jetzt richtig gesehen habe...), von daher ist das mit der jetzigen Form schwer umsetzbar.
    Wäre eventuell also ein Ticket auf Github wert.

  9. #9
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

  10. #10
    Contao-Nutzer Avatar von Nook
    Registriert seit
    09.09.2010.
    Ort
    Regensburg
    Beiträge
    122
    Partner-ID
    9262

    Standard

    @Andreas: Comments zu geschlossenen Issues werden doch gar nicht gelesen, oder?

    Google Statement welches Aussage von Flex unterstreicht:
    https://developers.google.com/chrome...ocs/user-agent

    Android = Tablet
    Android + Mobile = Phone

    Eben noch festgestellt, dass das Samsung Galaxy S3 mit dem UserAgent:
    Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; SGH-T999 Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
    Nicht erkannt wird und das Desktop Template ausgeliefert bekommt.
    Ich selber habe kein S3, habe jetzt nur den UserAgent simuliert. Evtl. kann das jemand bestätigen.
    Geändert von Nook (21.12.2012 um 10:46 Uhr)

  11. #11
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Doch werden sie und das Ticket ist auch nicht geschlossen

  12. #12
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    Sry, dass ich dieses Thema nochmal hochhole - hab aber grad ein ähnliches wenn nicht fast das selbe Problem.

    Bei einer Contao 2.11.16 Installation möchte der Kunde dass auf Tablets das normale Design angezeigt wird (Bitte keine Diskussionen über Sinn oder Unsinn - es ist halt so).

    Code:
    	'Macintosh'     => array('os'=>'mac',        'mobile'=>false),
    	'Windows CE'    => array('os'=>'win-ce',     'mobile'=>true),
    	'Windows Phone' => array('os'=>'win-ce',     'mobile'=>true),
    	'Windows'       => array('os'=>'win',        'mobile'=>false),
    
    	'iPad'          => array('os'=>'ios',        'mobile'=>false),
    
    	'iPhone'        => array('os'=>'ios',        'mobile'=>true),
    	'iPod'          => array('os'=>'ios',        'mobile'=>true),
    	'Android'       => array('os'=>'android',    'mobile'=>true),
    	'Blackberry'    => array('os'=>'blackberry', 'mobile'=>true),
    	'Symbian'       => array('os'=>'symbian',    'mobile'=>true),
    	'WebOS'         => array('os'=>'webos',      'mobile'=>true),
    	'Linux'         => array('os'=>'unix',       'mobile'=>false),
    	'FreeBSD'       => array('os'=>'unix',       'mobile'=>false),
    	'OpenBSD'       => array('os'=>'unix',       'mobile'=>false),
    	'NetBSD'        => array('os'=>'unix',       'mobile'=>false),
    Hier konnte ich zumindest schon mal Ipad auf False setzt. Leider hab ich nach langer recherche keinen Weg gefunden wie man das ganze für andere Wichtige Tablets auf false setzten kann. Nicht mal "GT-N8010" würde für Galaxy Tab 10 funktioniert. (was aber auch ein zu großer aufwand wäre wenn man bedenkt wieviele Tablets das wären)

    Gibt es einen Weg wie man das ganze anders machen könnte? Sowas wie "handheld" => false?

    Würde mich über Unterstützung freuen!

  13. #13
    Gesperrt
    Registriert seit
    20.10.2011.
    Beiträge
    163

    Standard

    Gibt es hier schon etwas neues?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •