SYSTÈMES D INFORMATIONS Développement Modx
Les systèmes de gestion de contenu Les Content Management Système (CMS) servent à simplifier le développement de sites web ainsi que la mise à jour des contenus. Une fois les besoins du site déterminé, il faut alors choisir le CMS qui correspond. A chaque CMS son domaine de compétence. - Wordpress - CMS Made Simple - Magento - Prestashop - Modx - Drupal
Modx Révolution Modx Révolution est un framework permettant de développer toutes sortes de sites internet en dissociant la partie intégration HTML et la partie programmation PHP. Pour faciliter la programmation PHP, Modx possède sa propre classe de fonctions, basée sur le système xpdo (Programmation Data Object). L utilisation des classes Modx apporte un gain de temps pendant le développement d un site, mais cela apporte aussi une couche de sécurité en permettant d éviter différentes attaques telle que les injections SQL.
Les termes à retenir Ressource - Une page du site. Modèle de page / Template - Corps HTML d une page qui permet de mettre en place le gabarit du site. Variable de modèle - Variable personnalisée assignée à un modèle de page. Elle s ajoute aux variables de bases de chaque ressource.
Les termes à retenir Chunk - Morceau de code statique utilisable à tout endroit du site. exemple d appel : [[$monchunk]] Snippet - Morceau de code PHP exécutable à tout endroit du site. exemple d appel : [[monsnippet]] ou [[!monsnippet]] Plugins - Morceau de code PHP assignable à divers évènements du site (sauvegarde d une page, ouverture d un document, connexion au manager, etc...).
Les termes à retenir Les contextes et le multi-site : - Deux contextes de base : le contexte web qui correspond au front office du site et le contexte mng (manager) qui correspond à la partie back office de votre site. L administration Modx. - Il est possible de recréer différents contextes, ce qui permet à Modx de gérer du multisite. L avantage est de pouvoir administrer différents sites qui ont accès à des ressources communes.
Sites utiles - Le RTFM Modx http://rtfm.modx.com/ - Le forum Modx http://forums.modx.com/ - Un site de tutos en français http://toutsurmodx.fr/
Objectifs du cours - Savoir définir les besoins de son site et organiser le développement de celui-ci - Apprendre à maitriser l outil Modx. - Utiliser l API Modx - Utiliser des Add-ons modx - Gérer une base de données
Exemples de snippets disponibles via les extras Partie I
[[!Wayfinder]] Paramètres &startid &level &outertpl &rowtpl ID de la page parent du menu Niveau de profondeur du menu Template du conteneur du menu (défaut : <ul></ul>) Template d un élément du menu Placeholders [[+wf.link]] [[+wf.title]] [[+wf.docid]] [[+wf.description]] [[+wf.wrapper]] [[+wf.classes]] Lien du document Titre du menu ID du document Description du document Sous-menus Différentes classes attribuées par le snippet Source : http://rtfm.modx.com/display/addon/wayfinder
[[!Wayfinder]] Exemple d appel : [[!Wayfinder? &startid=`0` &level=`1` &rowtpl=`rowtpl`]] Exemple de rowtpl : <li [[+classes]] ><a href= [[+wf.link]] title= [[+wf.title]] > [[+wf.linktext]] </a>[[+wf.wrapper]]</li>
[[!formit]] Paramètres &emailtpl Nom du chunk servant de template pour l email envoyé &emailto Destinataire(s) de l email &emailsubject Sujet de l email &submitvar Variable de soumission (un champ du formulaire) &hooks Scripts appelés lors de la soumission (ex: spam, email, redirect,...) &validate Paramètres de validation (ex: nomduchamp:required) Les placeholders du formulaire [[+fi.error.nomduchamp]] Texte d erreur lié au champ [[+fi.nomduchamp]] Valeur du champ en cas de non-validation du formulaire Les placeholders de l email permettant de récupérer les éléments du formulaire [[+nomduchamp]] Source : http://rtfm.modx.com/display/addon/formit
[[!formit]] Exemple d appel Formulaire [[!FormIt? &hooks=`email` &emailtpl=`myemailchunk` &emailto=`user@example.com` &validate=`name:required`]] <form> <fieldset> <label>nom</label> <input type= text name= nom /> <label>prénom</label> <input type= text name= prenom /> <label>email</label> <input type= text name= email /> <span class= error >[[!+fi.error.email]]</span> <button type= submit name= submitcontact >Valider</button> </fieldset> </form> Exemple de template de mail <h1>demande de contact</h1> <p>nom, prénom : [[+nom]] [[+prenom]] </p> <p>email : [[+email]]</p>
[[!getressources]] Paramètres &parents &tpl &depth &limit &sortby &sortdir &includecontent &includetvs ID de la ressource parente Template utilisé pour chaque ressource Niveau de recherche Nombre de ressources retournées Variable de tri Sens du tri : ASC ou DESC inclure le contenu inclure les variables de modèle Placeholders [[+nomduchamp]] [[+tv.nomdelavariable]] Appel d une variable de la ressource Appel d une variable de modèle Source : http://rtfm.modx.com/display/addon/getresources
[[!getressources]] Exemple d appel : [[!getresources? &parents=`[[*id]]` &tpl=`actutpl` &includetvs= 1 ]] Exemple de template <div> <h3>[[+pagetitle]]</h3> <img src= [[+tv.image]] title= [[+pagetitle]] /> <p>[[+publishedon:strtotime:date=`%b %d %Y`]]</p> <p>[[+introtext]]</p> </div>
[[!getpage]] Le snippet getpage permet de réaliser une pagination à partir du rendu d un autre snippet, tel que getressources. Paramètres &element &pagevarkey &limit &pagecount Nom su snippet utilisé pour la pagination Niveau de recherche Nombre de ressources retournées par page Nombre total de page Source : http://rtfm.modx.com/display/addon/getpage
[[!getpage]] Exemple d appel : Pour générer la liste : [[!getpage? &element=`getresources` &parents=`4` &tpl=`actutpl` &includetvs= 1 ]] Pour placer la pagination : <ul>[[+page.nav]]</ul> Exemple de template <div> <h3>[[+pagetitle]]</h3> <img src= [[+tv.image]] title= [[+pagetitle]] /> <p>[[+publishedon:strtotime:date=`%b %d %Y`]]</p> <p>[[+introtext]]</p> </div>
[[!GoogleSiteMap]] Paramètres &allowedtemplate &excluderesources &itemtpl &maxdepth ID des templates autorisé ID des page à exclure Chunk à utiliser pour chaque élément Niveau max de l arborescence à afficher Source : http://rtfm.modx.com/display/addon/getresources
Création d un Espace Membre
ModX permet de gérer facilement les espaces membres et les droits d accès aux pages. La création d un espace membre se fait en plusieurs parties : - La création du groupe de ressources - La création du groupe d utilisateurs - La mise en place du formulaire de connexion
Création d un groupe de ressources Les groupes de ressources se gèrent dans l administration : Onglet sécurité > Groupes de ressources Il est alors possible de créer rapidement ses groupes de ressources et d y assigner des pages web par un glisser déposer depuis l arborescence située sur la droite de la page.
Création d un groupe d utilisateurs - Les groupes d'utilisateurs se gèrent dans l administration : Onglet sécurité > Contrôle des accès - il est alors possible de gérer les groupes d utilisateurs, mais aussi les différents niveaux de rôles au sein du site, les conditions d accès des groupes et les règles d accès. Nous nous intéresserons dans un premier temps uniquement aux groupes d utilisateurs. (La notion de rôle correspond à une hiérarchie entre les utilisateurs, elle revient donc souvent lors de la gestion des droits.) - Après avoir créé un groupe, il faut alors modifier ses différentes propriétées en faisant un clic droit : Mettre à jour le groupe
Création d un groupe d utilisateurs - L onglet utilisateurs permet d ajouter ou de retirer des utilisateurs du groupe. Il est aussi possible de faire cette manipulation directement depuis le profil de l utilisateur. - L accès au contexte permet de définir quel contexte est concerné par ce groupe - Il faut donc créer un accès au contexte voulu avec les conditions d accès Load, List and View - Les accès du groupe d utilisateurs concernent les groupes de ressources auxquels les membres auront accès. - Il faut au minimum créer un accès de type Ressource et un accès de type Load, List and View afin qu ils puissent accéder aux pages. - Les accès aux catégories concernent essentiellement les utilisateurs du manager. Il est ainsi possible de restreindre les accès à certains chunks, snippets ou ressources en fonction de leur catégorie.
Espace de connexion - L espace de connexion sur le site est géré avec le snippet Login (cf les exemples de snippets) - Il suffit donc de placer l appel du snippet de connexion à l endroit voulu, et le reste se fera automatiquement. - Le package Login est composé d autres snippets permettant de gérer différents éléments de l espace membre tels que : - Le mot de passe oublié - L inscription - La mise à jour du profil - La récupération des informations du profil au sein de la page Pour plus d informations : http://rtfm.modx.com/display/addon/login
Utilisation de l API Modx
L API Modx L API Modx est basé sur la librairie xpdo. Elle permet d exploiter toutes les éléments du site sous forme de programmation orientée objet. Elle permet aussi de communiquer avec la base de donnée grâce à des fonctions simplifiées et sécurisées. Vous retrouverez dans les pages suivantes la présentation de différentes fonctions de la librairie ainsi que quelques exemples d utilisation.
API Modx Fonctions générales
regclientcss() regclientcss( url du fichier ) La fonction regclientcss permet d ajouter un fichier CSS lors du chargement de le page. L appel de celui-ci sera placé directement dans le header. exemple : $modx->regclientcss( assets/monmodule/styles.css );
regclientstartupscript() regclientstartupscript( url du fichier ) La fonction regclientscript permet d ajouter un fichier javascript lors du chargement de le page. L appel de celui-ci sera placé directement dans le header. exemple : $modx->regclientstartupscript( assets/monmodule/jquery.js );
regclientscript() regclientscript( url du fichier ) La fonction regclientstartupscript permet d ajouter un fichier javascript lors du chargement de le page. L appel de celui-ci sera placé juste avant la balise de clôture du body. exemple : $modx->regclientscript( assets/monmodule/styles.css );
makeurl() makeurl( ID de la page, Contexte, Arguments, schéma ) La fonction makeurl créera l url d une page à partir de son ID. Le schéma correspond au format de l url générée. exemple : $modx->makeurl(12,,, full ); http://www.monsite.com/page12.html $modx->makeurl(12,,array( user =>1), https ); https://www.monsite.com/page12.html&user=1
getloginuserid() getloginuserid() La fonction getloginuserid retourne l id de la personne actuellement connecté. Elle retourne false si l utilisateur n est pas connecté exemple : $modx->getloginuserid();
API Modx Base de données
Query() Query( requête SQL ) La fonction Query() permet simplement d exécuter une requête SQL dans la base de données. Elle retournera alors un objet qui pourra par la suite être exploité avec d autres fonctions tel que fetch() ou rowcount(). exemple : $res = $modx->query( select * from utilisateurs );
fetch() fetch() La fonction fetch() est un équivalent à la fonction mysql_fetch_array. Elle retourne un tableau contenant associatifs du résultat de la requête SQL effectuée au préalable. exemple : $res = $modx->query( select * from utilisateurs ); $row = $res->fetch(); echo $row[ nom ];
rowcount() rowcount() La fonction rowcount() est un équivalent à la fonction mysql_num_rows. Elle retourne le nombre de résultats correspondant à la requête préalablement exécutée. exemple : $res = $modx->query( select * from utilisateurs ); $nb = $res->rowcount(); echo il y a $nb utilisateurs ;
lastinsertid() lastinsertid() La fonction lastinsertid() retourne la valeur de la clé primaire (en auto incrément) de la dernière insertion dans la base de donnée. exemple : // l exemple retourne l id de l utilisateur créé $modx->query( insert into utilisateurs (nom) values ( Antoine ) ); $id = $modx->lastinsertid();
Création d un module