Développer avec RBS Change : Version Mobile

  • 87735.1

    27/07/2015 13:46


    jaxx
    Rang : Nouveau Membre
    Bonjour,

    J'aimerai savoir si dans RBS Change v3.6.6 il existe des méchanismes permettant d'avoir plusieurs versions d'affichage, notamment pour les appareils mobiles (smartphones, tablettes, etc.) ?

    Dans mes gabarits, je souhaiterai appeler des templates ou blocks différents en fonction de l'appareil utilisé.

    J'ai vu que RBSChange est capable de détecter le User-agent et offre la possibilité d'appeler des feuilles de styles en fonctions de ce user agent. Il y-a-t-il un système similaire pour les vues (templates) ?

    Et au sujet de la détection du user-agent, se fait-elle en JavaScript ou en PHP ?

    Si celà n'est pas géré, auriez-vous des idées à me soumettre ? Je précise que le site dans sa version desktop (affichage sur ordinateurs de bureau, "grande résolutions") est déjà développé et que nous souhaitons maintenant mettre en place une version mobile sans avoir à dupliquer tous nos gabarits.

    Cordialement,

    Jaxx

  • 87735.2 en réponse à 87735.1 écrit par jaxx

    28/07/2015 10:44


    jaxx
    Rang : Nouveau Membre
    J'ai vu qu'il est possible de déclarer des templates sous cette forme:
    nomdutemplate.mobile.all.html et que si il existe 2 templates pour un même bloc avec un nommé .mobile et l'autre .all, comme par exemple:

    monTemplate.all.all.html
    monTemplate.mobile.all.html

    Alors le .mobile sera appelé pour les mobiles. je ne sais pas encore comment rbschange passe en mode mobile.

    A priori pour passer en mode mobile rbschange ne se base pas sur la résolution de l'image mais sur le user-agent, celà reste à confirmer.

    Avec la console (F12 - déboggueur) dans Firefox si on passe en mode responsive design rien ne passe, par contre avec Chrome en mode responive design le template .mobile est bien appelé.

    Et je précise qu'il faut (au moins en dev) lancer la commande change.php clear-all (vider le cache) avant de tester en mode responsive design.


    La différence entre Chrome et Firefox est que Firefox (par défaut) ne précise apparemment pas le User-agent (celà est peut-être possible avec un plugin), ce qui tend à confirmer que Rbs se base sur le user -agent. Si c'est le cas le fait-il en JavaScript ou en PHP, ? pour celà il faudrait investiguer le code, peut-être le fichier frontoffice.js



    Édité par jaxx 28/07/2015 10:50

  • 87735.3 en réponse à 87735.2 écrit par jaxx

    11/08/2015 15:53


    Georges Njock-Bôt
    Rang : Membre
    Bonjour jaxx.

    jaxx a dit :
    J'ai vu que RBSChange est capable de détecter le User-agent et offre la possibilité d'appeler des feuilles de styles en fonctions de ce user agent. Il y-a-t-il un système similaire pour les vues (templates) ?

    Oui tout à fait.
    En ce qui concerne la nomenclature de template, vous y étiez presque.
    Le nommage suit globalement la règle suivante

    {templateName}.{userAgentType}.{userAgentVersion}.{contentTypeId}

    • templateName : nom complet du template

    • userAgentType : gecko, trident, khtml, etc

    • userAgentVersion : 1,2,3, etc. "all" pour toutes les versions (valeur par défaut)

    • contentTypeId : html, xul, php, txt, etc.



    Concernant les blocks de page, le nom du template ({templateName}) possède la structure suivante par défaut :

    {moduleName}-Block-{blockName}-{viewName}
    • moduleName : nom du module (Website, Users, Media, etc)

    • blockName : ConfigurableMenu, Editprofil, ImageList, etc)

    • viewName : Success, Input, Backoffice, etc.


    N.B.: Les valeurs de variables sont en camel case.

    Ceci dit, quelques remarques à présent:

    jaxx a dit :
    Alors le [template monTemplate.mobile.all.html] .mobile sera appelé pour les mobiles.

    Pas exactement. Il sera appelé pour tout userAgent dont le type est détecté comme "mobile".

    jaxx a dit :
    je ne sais pas encore comment rbschange passe en mode mobile.

    Comme vu précédemment, il n'y a pas véritablement de notion de "mobile" mais plutôt une notion de User-Agent. RBSChange utilise pour cela une classe de détection qui s'appelle Browscap (cf. fichier framework/object/Browscap.class.php). Par la suite, pour chaque requête, le framework détermine les templates/styles à utiliser selon le User-Agent (type + version) détecté. Cela est fait par la classe RequestContext (cf. méthode RequestContext::getBrowser() du fichier framework/object/RequestContext.class.php).

    jaxx a dit :
    A priori pour passer en mode mobile rbschange ne se base pas sur la résolution de l'image mais sur le user-agent, celà reste à confirmer.

    Je confirme modulo le fait que ce n'est pas "pour passer en mobile" pour les raisons citées plus haut.

    jaxx a dit :
    Et au sujet de la détection du user-agent, se fait-elle en JavaScript ou en PHP ?

    Elle se fait en PHP (côté serveur donc). Autrement un certain nombre de choses deviendraient impossibles de fait. Comme dit plus haut elle utilise la classe Browscap. Plus précisément, cette classe Browscap utilise un mapping entre autres à base d'expressions régulières pour déterminer les {userAgentType} et {userAgentVersion} vus plus haut. Les éléments de ce mapping sont mis en cache dans un fichier php accessible dans cache/{profileName}/cache_browscap.ini.php

    jaxx a dit :
    Si celà n'est pas géré, auriez-vous des idées à me soumettre ?

    Au vu des remarques précédentes, je dirais que dans votre cas le plus simple serait d'avoir une approche responsive se basant plutôt sur des seuils de viewport/taille d'écran plutôt que la détection de User-Agent.
    Maintenant si vous estimez que vous avec tout de même besoin d'un spécifique "mobile", avec les éléments vus plus haut vous devriez être en mesure d'altérer le fonctionnel standard pour arriver à vos fins. Je rajoute cependant le bémol que cela n'est pas sans risque de régression fonctionnelle pour peu que vous ne maîtrisiez pas totalement les impacts des modifications effectuées.


    Cordialement.

    "La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information"

    Albert Einstein
 
Merci de prendre connaissance et de respecter les règles des forums.
 
1471 membres
Aucun membre connecté