Articles en accès restreint dans SPIP

De nombreux sites, en particulier de presse écrite, proposent aux lecteurs anonymes seulement une partie de certains articles. On peut lire le début de ceux-ci, et pour continuer la lecture, un bandeau est affiché, proposant de se connecter ou de s’abonner.

Sur le Midi-Libre, on trouve ce type de bandeau :

Artcile réservé aux abonnés
Article réservé aux abonnés – Midi Libre

Le journal Ouest-France réserve le même genre de bandeau :

Ouest-France en accès restreint
Ouest-France en accès restreint

Le plugin Accès Restreint permet de définir et de gérer des zones en accès restreint, accessibles seulement aux visiteurs authentifiés et autorisés.

Afin de faire cela, sans plugin, dans SPIP, on va créer un modèle définissant une balise. Cette balise reconnue coupera l’article à l’endroit où elle est insérée et effacera le reste de l’article. Pour d’autres parties de l’article où l’on place par exemple les documents utilisés, on effectuera un test conditionnel à la mode SPIP, qui vérifiera si la balise est présente, et cachera aussi cette partie.

Pour définir cette balise qu’on appelle <contenu_adherent|> (avec un pipe à la fin ou un N°), on crée un fichier dans le répertoire modeles du squelette. Si ce répertoire n’existe pas, il faut le créer. Le fichier qui sera appelé lorsque SPIP rencontrera cette balise dans un article est contenu_adherent.html.

contenu_adherent.html

Lorsque SPIP tombe sur la balise, il la remplace par le contenu du fichier contenu_adherent.html. À savoir une <div> avec un test. Si l’utilisateur est connecté sera écrit : « … Partie réservée aux adhérents … ». Si l’utilisateur n’est pas connecté sera écrit : « … La suite de cet article est réservée aux adhérents … » avec deux liens pour s’abonner ou se connecter. En cliquant sur Se connecter , l’utilisateur se retrouve sur la page de login (login.html) qui renverra en cas de succès (ou d’échec) sur la page en cours.

Le squelette qui affiche les articles (article.html) contient la balise [(#TEXTE)]. On la filtre alors avec |contenu_adherent : [(#TEXTE|contenu_adherent)]. On peut bien-sûr chainer les filtres, par exemple [(#TEXTE|contenu_adherent|lignes_longues|justifier)].

On ajoute donc dans le fichier mes_options.php, la fonction contenu_adherent() qui filtre le contenu du texte avec une expression régulière.

La fonction est ridiculement petite, mais incroyablement efficace. Elle repère la présence de la <div id="adherer_link">, ajoutée par la présence de la balise <contenu_adherent|> dans l’article et traitée par le modèle contenu_adherent.html.

Les documents de l’article (images et autres fichiers) peuvent être affichés par une boucle ressemblant à ceci :

Cette boucle peut être présente dans le squelette article.html. Afin d’effectuer un test conditionnel à la mode SPIP dans l’article, il faut mettre cette boucle dans un fichier séparé que l’on inclut avec la balise INCLURE. SPIP, en effet, ne supporte pas de mettre une boucle à l’intérieur d’un bloc de test.

On copie donc dans un fichier séparé (inc_documents.html par exemple) cette boucle DOCUMENTS que l’on met à l’intérieur d’une boucle ARTICLES, destinée seulement à récupérer l’identifiant id_article de l’article appelant.

On obtient donc le fichier à inclure :

inc_documents.html

Il reste à écrire l’inclusion dans article.html à l’intérieur d’un test qui vérifie si le visiteur est connecté.

Le test  [(#SESSION{statut}|?{' ',''}) ... ]  vérifie le statut du visiteur.

SPIP supporte 3 statuts :

  • Le visiteur, qui est une personne pouvant simplement accéder aux parties restreintes du site public ainsi qu’aux forums auquel il est abonné. Il n’a pas accès à la partie privée (/ecrire).
  • Le rédacteur, qui  a accès à l’espace privé et qui ne peut que rédiger des textes et proposer des contenus (textes et documents multimedia) à l’évaluation. C’est le statut le plus couramment utilisé.
  • L’administrateur, qui a accès à l’espace privé et qui a « tous les droits » sur le site : ajout, modification et suppression des contenus, relecture et correction des textes rédigés par les autres rédacteurs, modification de la structure, création de rubriques, et publication et validation sur le site public.
    On peut définir des administrateurs restreints n’ayant accès qu’à certaines rubriques.

Et hop, un système simple, qui permet de restreindre la lecture des certains articles, encourageant des lecteurs à faire une demande d’adhésion.

Soumettre un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *