Il est possible de créer une zone privée sur votre site réservée aux membres avec Paheko, mais cela n'est pas évident.
Dans le module web, créez une catégorie qui contiendra la zone des membres de votre site. Donnez-lui un slug d'URL tel que espace-membres
. Vous l'utiliserez pour tester les pages faisant partie de la zone privée et les rendre inaccessibles aux utilisateurs non connectés.
Vous devrez modifier category.html et article.html pour bloquer l'accès lorsque l'article/catégorie accédé fait partie de la zone des membres (sauf si l'utilisateur est connecté). Les fichiers d'exemple ci-dessous montrent comment le faire.
Nous allons créer un mini-module web qui affiche la zone privée de votre site directement dans le backend d'administration. En fait, je préfère cette solution de toute façon, car la solution simple exige que l'utilisateur se connecte via la zone d'administration, puis retourne sur le site public et accède à la zone privée. En intégrant directement la zone des membres dans le backend, cela semble beaucoup plus naturel.
C'est un peu plus exigeant techniquement cependant. Voici ce qu'il faut faire:
- Allez dans Configuration/Extensions et cliquez sur "Créer un module".
- Donnez au module un nom tel que "Espace Membres".
- Cliquez sur les options "Afficher dans le menu" et "Afficher un bouton sur l'accueil" pour faciliter l'accès à la zone des membres.
- Créez le module.
- Activez le module (il ne sera pas activé par défaut).
Vous devriez maintenant avoir une option dans la barre latérale pour accéder à la zone des membres.
Elle ne fait encore rien, corrigeons cela...
Créez un fichier appelé index.html dans le module. Ce sera le fichier affiché lors de la visualisation du module, et il doit afficher la zone des membres du site.
Le code ci-dessous (pour index.html) montre ma solution pour cela. L'idée principale est la suivante:
#restrict
est utilisé pour envoyer les utilisateurs vers la page de connexion s'ils ne sont pas connectés (au cas où)- Je récupère toutes les sous-catégories qui sont des enfants directs de ma catégorie
Espace Membres
et les affiche dans une barre de navigation en haut. Pour chacune, je crée un lien de la forme {{$module.url}}?uri={{$uri}}. - S'il y a une URI dans l'URL, alors je trouve et affiche cette page.
- Sinon, j'affiche le contenu de la catégorie principale Espace Membres.
Cela me permet d'avoir la catégorie parent avec un niveau de sous-catégories. Si vous devez gérer une structure plus profonde, ce code devra être ajusté pour faire face à cela - je n'ai pas regardé cela car je n'en ai pas besoin.
J'ai aussi des fichiers content.css
et default.css
qui sont basés en grande partie sur ceux du module web, mais ajustés pour s'afficher correctement à l'intérieur de l'interface d'administration. Vous devrez le régler vous-même en fonction de votre propre CSS.
Bien que vous puissiez modifier vos pages membres dans le module web, y accéder directement via leurs URLs 'officielles' ne fonctionnera pas, car ces pages sont bloquées par le changement effectué dans la Partie 1.
À la place, vous devrez modifier le lien de la zone des membres sur votre site public afin qu'il pointe désormais vers le nouveau mini-module web. Comment vous le faites dépend de votre site et de l'emplacement du lien. Dans mon cas, lors de la génération des liens de navigation à partir de mes catégories, je fais cela:
<li><a href="{{if $uri === 'espace-membres'}}https://myassoc.paheko.cloud/m/page_prives/{{else}}{{$url}}{{/if}}" {{if $url == $page.url}}class="active"{{/if}}>{{ $title|remove_leading_number }}</a></li>
Résumons simplement ce qui se passe:
- Cliquer sur le lien "Espace membres" sur le site public envoie directement les utilisateurs vers le module personnalisé dans le backend où la zone privée est affichée.
- S'ils ne sont pas connectés, ils seront redirigés vers la page de connexion.
- Depuis le backend, ils peuvent accéder à la zone des membres à partir du bouton dans la barre latérale ou depuis la page d'accueil de la zone d'administration.
La solution fonctionne très bien (du moins pour nous) et il est propre d'avoir la zone des membres directement dans le backend.
Comment les membres reviennent-ils facilement du backend vers le site public ?
Les plus observateurs auront peut-être remarqué un autre lien dans ma capture d'écran du menu appelé « Aller au site web », qui renvoie l'utilisateur vers le site public. C'est super pratique.
Pour cela, j'ai créé un autre module personnalisé appelé « Aller au site web », avec l'option pour un lien dans la barre de menu. index.html
a 6 lignes de code qui redirigent les membres vers le site public:
<html>
<head>
<meta http-equiv="Refresh" content="0; url='{{$root_url}}'" />
</head>
<body />
</html>