Éditer des pages
Pages réservées et publics
Depuis la 2.6, une page peut être réservée à certains groupes d’utilisateurs du site, et un bloc peut n’être montré qu’à une partie des visiteurs. Les deux s’appuient sur le plugin RainLab.User.
Ce qu’il faut
Les pages réservées et le public des blocs utilisent les utilisateurs et les groupes de RainLab.User. Sans ce plugin, seuls les blocs destinés à tout le monde et aux invités sont affichés sur le site.
Un éditeur n’est jamais refusé : connecté au back-office, vous voyez toujours toutes les pages et tous les blocs.
Réserver une page
- Ouvrez la page dans l’éditeur et passez sur son onglet Accès.
- Cochez les Groupes autorisés. Si aucun n’est coché, la page est pour tout le monde.
- Enregistrez la page.
Un visiteur qui ne fait partie d’aucun de ces groupes est refusé (voir plus bas). La page réservée disparaît aussi des menus des visiteurs qui ne peuvent pas la voir et du sitemap, et elle n’est jamais servie depuis un cache partagé.
Appliquer aux pages en dessous
Cochez Appliquer aux pages en dessous pour réserver toute une branche : les pages dont l’URL commence par l’URL de la page reçoivent les mêmes groupes, sauf si elles ont les leurs. Avec la page membres, les pages membres/... sont réservées elles aussi.
La page d’accueil ne propose pas cette option : réserver la page d’accueil ne réserve qu’elle.
Une page réservée placée dans la corbeille continue de réserver les pages en dessous d’elle, jusqu’à ce qu’une page publiée prenne son URL (un brouillon ne suffit pas). Supprimée définitivement, elle donne ses groupes aux pages en dessous, qui restent réservées.
Ce que voit un visiteur refusé
Le choix se fait une fois pour tout le site, dans Réglages → Réglages des pages de blocs, onglet Accès, champ Visiteur refusé :
| Option | Résultat |
|---|---|
| La page 404 | La page semble ne pas exister. |
| La page de connexion (invités), puis retour à la page | Un invité est envoyé sur la Page de connexion du thème. Le composant Authentication de RainLab.User le ramène à la page une fois connecté. Un utilisateur connecté sans accès voit la page 404. |
| Une page du thème | Les visiteurs refusés sont envoyés sur la page du thème choisie dans Page affichée. |
Si RainLab.User est désinstallé, les pages réservées restent refusées.
Montrer un bloc à certains visiteurs
Un bloc peut ne s’adresser qu’à une partie des visiteurs, sans réserver toute la page. Ouvrez la fenêtre Visibilité du bloc (voir Travailler avec les blocs) et choisissez dans Affiché pour :
- Tout le monde (par défaut) ;
- Les invités seulement ;
- Les utilisateurs connectés seulement ;
- Certains groupes, puis cochez les Groupes.
En mode édition du site, les mêmes champs se trouvent dans le formulaire du bloc, dans le panneau latéral.
Les autres blocs ne sont pas rendus pour le visiteur : le HTML de la page ne les contient pas. Les éditeurs voient tous les blocs, et une page qui contient de tels blocs n’est pas mise en cache. Dans la liste des blocs de l’éditeur, un bloc qui a un public est signalé par une icône (par exemple « Visible : invités uniquement »).
Pour les développeurs
Un menu construit par le thème à partir d’une requête sur les pages écarte les pages réservées avec PageAccess::canView($page) :
use LucasPalomba\PageTree\Classes\PageAccess;
$pages = $pages->filter(fn ($page) => PageAccess::canView($page));
Un autre plugin d’utilisateurs que RainLab.User se branche avec un fournisseur d’accès (LucasPalomba\PageTree\Classes\Access\AccessProvider : options de groupes, connexion, groupes de l’utilisateur) :
Event::listen('pagetree.access.registerProviders', fn () => new MyAccessProvider);
Les noms de champs visibleTo et visibleGroups sont réservés par PageTree dans les blocs personnalisés.