Privatiser PluXml sans plugins
Rédigé par gccyrillus le 8 commentairese

Il existe plusieurs plugins destiné à privatiser en tout ou partie PluXml, mais saviez-vous que vous pouviez le faire depuis votre thème?
3 fichiers viennent récemment d'être proposés sur le forum
3 pour 3 options de privatisations.
Quelles sont ces options et comment les mettre en œuvre.
Le thème par défaut est pris en exemple.
Sans plugins, ni fichier .httpassword
qui ne fonctionnerait qu'avec Apache, il y a les fichiers du thèmes pour intégrer cela à PluXml.
L'idée est de seulement caché les contenus des pages et pas l'interface du site. les options:
- tout,
- tout sauf la page statique en accueil,
- tout et la présence d'une page statique en accueil.,
Chacune de ses options sont à codées dans 3 fichiers différent que l'on va ajouter au thème
ATTENTION Ces options ne sont pas à utiliser ensemble , c'est l'une ou une autre.
Une fois le fichier déposé dans votre thème, il faut le lier à votre thème à partir du fichier header.php.
100% privatisé
Copier le fichier is_private.php et déposer le dans le répertoire du thème avec les autres fichiers template.
Editer le fichier header.php du theme par défaut et ajouter la ligne suivante :
<?php include __DIR__.'/is_private.php'; ?>
Sans privatiser la page static d'accueil
Cette option est similaire à la précédente si vous n'avez pas configuré de page statique en accueil
Si vous avez configuré une page statique en accueil, alors c'est la seule dont le contenu sera publié si vous n'etes pas connecté.
Copier le fichier is_homeStatic_public.php et deposer le dans le repertoire du thème avec les autres fichiers template.
Editer le fichier header.php du theme par défaut et ajouter la ligne suivante :
<?php include __DIR__.'/is_homeStatic_public.php'; ?>
100% privatiser en retirant la page d'accueil
Cette troisième option privatise toute les pages et fait disparaitre la page statique d'accueil si vous en aviez configurée une. Elle ne réapparait qu'une fois connecté.
Copier le fichier is_homeStatic_private.php et deposer le dans le repertoire du thème avec les autres fichiers template.
Editer le fichier header.php du theme par défaut et ajouter la ligne suivante :
<?php include __DIR__.'/is_homeStatic_private.php'; ?>
D'autre options ?
Ces trois exemples similaires vous montre qu'il suffit d''inclure une (ou plusieurs) condition dans un fichier du thème pour modifier ou remplacer ce qui sera afficher derrière.
Le principe
-
Inclure une condition en fin du fichier header.php par le biais d'un autre fichier.
<?php include __DIR__.'/maCondition.php'; ?>
-
Avec la condition dans le fichier qui coupera cours au chargement des ressources initiales demandées
maCondition.php
<?php if( /* la condition */ ) { # on affiche ce que l'on veut ici en reprenant la structure de base du corps de la page echo ' <main class="main"> <div class="container"> <div class="grid"> <div class="content col sml-12"> <article class="article" >'; # execute le script soumis à condition et affiche les résultats # on referme le corps de la page echo' </article> </div> </div> </div> </main>'; # on injecte le pied de page include __DIR__.'/footer.php'; exit; // la suite ne doit pas être interprété, Le script s’arrête ICI ! } # derrière , si la condition n'est pas remplie, le script continue à s’exécuter normalement et les fichiers du template continue à se charger ?>
-
Ou qui ajoute quelque chose
Avec la condition dans le fichier qui coupera cours au chargement des ressources initiales demandées
maCondition.php
<?php if( /* la condition */ ) { # on affiche ce que l'on veut ici # execute le script soumis à condition et affiche les résultats } # derrière la condition, le script continue à s’exécuter normalement et les fichiers du template continue à se charger ?>
Conclusion
En passant par le thème, il est possible d'ajouté de nombreuses fonctionnalité à PluXml sans devoir touché au coeur du CMS ni dévelloper des plugins spécifique.
DClassé dans : Bout de code, Thème ,Mots clés : Thème, Scripts, Tuto, Template
A propos de l'auteur, gccyrillus:
Gccyrillus : Amoureux de PluXml et codeur bricoleur à mes heures perdues. J'ai découvert PluXml fin 2006, utilisateur de 2007 à 2011, je l'ai redécouvert bonifié en 2021.
8 commentaires
Cpalo a dit : #2
Bonjour,
Dans le cas is_homestatic_public, si on souhaite que quelques uns des items du menu soient accessibles sans être connecté?
gccyrillus a dit : #3
Les scripts d'une page statique n'ont d'impact que sur leur propre page **au moment où ils sont interprétés** et affichés dans leur template.
Vérifier si un visiteur est connecté puis modifier les données utilisées par les fonctions d'affichage de PluXml est a faire depuis un plugin de préférence ou en tout début de chargement des fichiers template du thème.
Depuis une page statique , il est trop tard.
kamea a dit : #4
J’ai testé le code de `is_private.php` en l’ajoutant directement dans une page statique. Et cela fonctionne, j’ai pris soin d’ajouter au préalable les lignes suivantes :
`global $plxShow;
global $plxMotor;`
Ça fonctionne très bien de cette manière (à moins qu’il y ait une faille possible que je n’aurais pas encore remarquée). Je trouve même cette méthode plus intéressante que de placer le code dans le fichier header.php, car ce dernier bloque toutes les autres pages. En effet, je n’ai besoin en réalité que de privatiser une seule page.
**J’ai une question :** est-il possible de forcer le niveau de profil de l’utilisateur à un niveau minimum, par exemple « Gestionnaire », mais pas « éditeur », « rédacteur » ou « modérateur » ?
Merci d’avance pour votre réponse.
gccyrillus a dit : #5
oui c'est possible en modifiant la condition
```
# affichage formulaire si non connecté
if (!isset($_SESSION['profil']) ) {
```
en
```
# affichage formulaire si non connecté , inclus administrateurs et gestionnaires uniquement :
if (!isset($_SESSION['profil']) && $_SESSION['profil'] <= 1) {
```
Les profils natifs de PluXml vont de 0 à 4:
```
# profils utilisateurs de pluxml
const PROFIL_ADMIN = 0;
const PROFIL_MANAGER = 1;
const PROFIL_MODERATOR = 2;
const PROFIL_EDITOR = 3;
const PROFIL_WRITER = 4;
```
kamea a dit : #6
Re !
Je viens de voir que tu as aussi fait le plugin membersOnly. Il marche super bien, encore mieux que ce que je pensais ! On peut choisir les pages et les articles qu'on veut, c'est top. Désolé si je poste cette réponse ici, mais je n'ai pas trouvé l'annonce de ce plugin sur ton site :)
Est-ce que tu pourrais ajouter une option à memberOnly pour choisir le niveau d'admin qu'il faut pour voir les pages et articles protégés ?
C'est top ce que PluXml permet de faire grâce à vous les devs, Merci !
Gcyrillus a dit : #7
@kamea
**Bonne idée**, je regarde dés que j'ai du temps.
En effet, je n'avais pas fait d'annonce sur le forum à son sujet.
J'en ferai une sur sa mise à jour avec le choix de profil.
++
Gcyrillus a dit : #8
@kamea,
Voici qui est fait pour **membersOnly**. Voir l'article [sur le forum PluXml]( https://forum.pluxml.org/discussion/7796/plugin-membersonly/p1 )
Cdt
rFil RSS des commentaires de cet article
Cpalo a dit : #1