Rubriques protégées : un contenu différent pour les membres / non-membres

En utilisant le plugin accès restreind je n'arrive pas à afficher un contenu particulier pour les non membres dans article.html car je bute sur le fait que j'ai des articles accessibles :

- La page rubrique.html ne peut être utilisé que par les membres, voilà ce que j'ai mis :

<?php if ($auteur_session)
{ ?> <?php echo ""; ?> <?php }
else
{ ?> <?php echo "Contenu pour les visiteurs"; ?> <?php }
?>

- Pour la page article.html c'est plus difficile : j'ai plusieurs articles en accès libre qui pointent sur article.html, donc je ne peux pas utilisé le script ci-dessus car sinon il m'afficherait le "Contenu pour les visiteurs" même sur les articles en accès libre à partir du moment ou les internautes ne sont pas connectés. J'avais fait ça :

<BOUCLE_idarticle(ARTICLES){id_article}>
<BOUCLE_idsecteur(HIERARCHIE){id_parent=0}>
<BOUCLE_idrubrique(RUBRIQUES){id_rubrique}>
<?php
if ([(#ID_RUBRIQUE)]==475)
{
echo "";
}

else if ([(#ID_RUBRIQUE)]==551)
{
echo "";
}

else
{
echo "<strong>Vous devez vous identifier</strong>";
}
?>
</BOUCLE_idrubrique>
</BOUCLE_idsecteur>
</BOUCLE_idarticle>

Mais l'inconvénient c'est qu'il résoud le deuxième problème mais fait revenir le premier à savoir : pas de texte affiché pour les articles gratuits mais par contre il m'affiche le texte "Vous devez vous identifier" sur tous les articles même une fois connecté sur l'espace membre.

- Je me doute qu'il doit y avoir un mix des deux scripts à faire mais mes connaissances en php étant limité je n'ai pas encore réussit
- J'ai pensé que remplacer les id_rubrique par un #TITRE du style "libre" accolé aux rubriques racine pourrait permettre d'avoir un script moins compliqué mais en php je ne sais pas comment faire comparer autre chose que des chiffres... du style

<BOUCLE_idarticle(ARTICLES){id_article}>
<BOUCLE_idsecteur(HIERARCHIE){id_parent=0}>
<BOUCLE_idrubrique(RUBRIQUES){id_rubrique}>
<BOUCLE_rubriquemot(MOTS){id_rubrique}>
<?php
if ([(#TITRE)]==libre)
{
echo "";
}

else
{
echo "<strong>Rubrique protege</strong>";
}

?>
</BOUCLE_rubriquemot>
</BOUCLE_idrubrique>
</BOUCLE_idsecteur>
</BOUCLE_idarticle>

En espérant avoir été clair dans ma démarche

Josh Parker a écrit :

En utilisant le plugin accès restreind je n'arrive pas à afficher un contenu particulier pour les non membres dans article.html car je bute sur le fait que j'ai des articles accessibles :

Hello, dans ce cas, il te faut peut être opter pour une protection par élément (article) plutôt que par rubrique entière.

Tu peux faire ca, par exemple, en associant un mot clé "restreint" aux éléments qui nécéssitent une identification.

Il y a des exemples sur spip-contrib (CF contribs de Yorghos), et le squelette bloog, bien que viellissant, fait ca très bien :

http://bloog.net

BoOz

BoOz a formulé ce jeudi :

élément (article) plutôt que par rubrique entière.

Merci de votre réponse.
Hélas, on a chosi ce plugin car il est pratique et simple d'utilisation et que l'on a un développeur php qui a déjà travaillé dessus, on ne peut plus faire marche arrière !

En utilisant le plugin accès restreind je n'arrive pas à afficher un
contenu particulier pour les non membres dans article.html car je bute
sur le fait que j'ai des articles accessibles :

- La page rubrique.html ne peut être utilisé que par les membres, voilà
ce que j'ai mis :

<?php if ($auteur_session)
{ ?> <?php echo ""; ?> <?php }
else
{ ?> <?php echo "Contenu pour les visiteurs"; ?> <?php }
?>

- Pour la page article.html c'est plus difficile : j'ai plusieurs
articles en accès libre qui pointent sur article.html, donc je ne peux
pas utilisé le script ci-dessus car sinon il m'afficherait le "Contenu
pour les visiteurs" même sur les articles en accès libre à partir du
moment ou les internautes ne sont pas connectés. J'avais fait ça :

<BOUCLE_idarticle(ARTICLES){id_article}>
<BOUCLE_idsecteur(HIERARCHIE){id_parent=0}>
<BOUCLE_idrubrique(RUBRIQUES){id_rubrique}>
<?php
if ([(#ID_RUBRIQUE)]==475)
{
echo "";
}

else if ([(#ID_RUBRIQUE)]==551)
{
echo "";
}

else
{
echo "<strong>Vous devez vous identifier</strong>";
}
?>
</BOUCLE_idrubrique>
</BOUCLE_idsecteur>
</BOUCLE_idarticle>

Mais l'inconvénient c'est qu'il résoud le deuxième problème mais fait
revenir le premier à savoir : pas de texte affiché pour les articles
gratuits mais par contre il m'affiche le texte "Vous devez vous
identifier" sur tous les articles même une fois connecté sur l'espace
membre.

- Je me doute qu'il doit y avoir un mix des deux scripts à faire mais
mes connaissances en php étant limité je n'ai pas encore réussit
- J'ai pensé que remplacer les id_rubrique par un #TITRE du style
"libre" accolé aux rubriques racine pourrait permettre d'avoir un
script moins compliqué mais en php je ne sais pas comment faire
comparer autre chose que des chiffres... du style

<BOUCLE_idarticle(ARTICLES){id_article}>
<BOUCLE_idsecteur(HIERARCHIE){id_parent=0}>
<BOUCLE_idrubrique(RUBRIQUES){id_rubrique}>
<BOUCLE_rubriquemot(MOTS){id_rubrique}>
<?php
if ([(#TITRE)]==libre)
{
echo "";
}

else
{
echo "<strong>Rubrique protege</strong>";
}

?>
</BOUCLE_rubriquemot>
</BOUCLE_idrubrique>
</BOUCLE_idsecteur>
</BOUCLE_idarticle>

En espérant avoir été clair dans ma démarche

Salut,
Complexe l expose...
Deja, semble que ca ne soit pas une bonne chose que de mettre tes php d
identication dans ton squelette article ou rubrique, car c est oublie le
principe du CACHE de spip qui FONTIONNE super bien (ne pas oublier les
opossums non plus...) vaut mieux faire un fichier squelette a inclure avec
un #CACHE=0. A l interieur de ce squelette tu peux gerer les
identifications et afficher le msg que tu veux en fonction de l etat
identifie ou non de tes visiteurs...
Ci dessous, le fichier que j utilise sur un site (en 1.9), si ca peut
depanner, j ai mis quelques commentaires en vitesse, ca permet juste de
gerer les connexions, deconnexions des visiteurs du site public, mais ca
fait surtout le tri entre les internautes identifies et les autres (me
semble que c est ca le but ?):
///
#CACHE{0}
<?
if (!$auteur_session['nom'])
{
// Dans ce if la personne n est pas loguée, propose un lien pour le faire
echo "<div class='CartoucheAccesLog'>";
echo "<a class='BT_Acces' href='#URL_PAGE{identification}'>S identifier</a>";
echo "</div>";
}

if ($auteur_session['statut']=='6forum')
{
// Ca c est un visiteur = 6forum le lien permet de deconnecter et de
renvoyer sur la page sommaire
?>
<div class="CartoucheAccesLog">
<a class="BT_Acces"
href="[(#URL_LOGOUT|spip.php?page=sommaire)]">Deconnexion
</a>
</div>
<?
}
if ($auteur_session['statut']=='0minirezo' ||
$auteur_session['statut']=='1comite')
{
// ca c est des redacteurs ou adminsitrateurs
echo "<div class='CartoucheAccesLog'>";
echo "<p class='EvenTitre'>".$auteur_session['nom']."</p>";
echo "<a class='BT_Acces'
href='spip.php?action=cookie&logout=".$auteur_session['login']."'>Deconnexion</a>";
echo "</div>";
}
?>

triton@pointcentral.net avait prétendu :

En utilisant le plugin accès restreind je n'arrive pas à afficher un
contenu particulier pour les non membres dans article.html car je bute
sur le fait que j'ai des articles accessibles :

- La page rubrique.html ne peut être utilisé que par les membres, voilà
ce que j'ai mis :

<?php if ($auteur_session)
{ ?> <?php echo ""; ?> <?php }
else
{ ?> <?php echo "Contenu pour les visiteurs"; ?> <?php }
?>

- Pour la page article.html c'est plus difficile : j'ai plusieurs
articles en accès libre qui pointent sur article.html, donc je ne peux
pas utilisé le script ci-dessus car sinon il m'afficherait le "Contenu
pour les visiteurs" même sur les articles en accès libre à partir du
moment ou les internautes ne sont pas connectés. J'avais fait ça :

<BOUCLE_idarticle(ARTICLES){id_article}>
<BOUCLE_idsecteur(HIERARCHIE){id_parent=0}>
<BOUCLE_idrubrique(RUBRIQUES){id_rubrique}>
<?php
if ([(#ID_RUBRIQUE)]==475)
{
echo "";
}

else if ([(#ID_RUBRIQUE)]==551)
{
echo "";
}

else
{
echo "<strong>Vous devez vous identifier</strong>";
}
?>
</BOUCLE_idrubrique>
</BOUCLE_idsecteur>
</BOUCLE_idarticle>

Mais l'inconvénient c'est qu'il résoud le deuxième problème mais fait
revenir le premier à savoir : pas de texte affiché pour les articles
gratuits mais par contre il m'affiche le texte "Vous devez vous
identifier" sur tous les articles même une fois connecté sur l'espace
membre.

- Je me doute qu'il doit y avoir un mix des deux scripts à faire mais
mes connaissances en php étant limité je n'ai pas encore réussit
- J'ai pensé que remplacer les id_rubrique par un #TITRE du style
"libre" accolé aux rubriques racine pourrait permettre d'avoir un
script moins compliqué mais en php je ne sais pas comment faire
comparer autre chose que des chiffres... du style

<BOUCLE_idarticle(ARTICLES){id_article}>
<BOUCLE_idsecteur(HIERARCHIE){id_parent=0}>
<BOUCLE_idrubrique(RUBRIQUES){id_rubrique}>
<BOUCLE_rubriquemot(MOTS){id_rubrique}>
<?php
if ([(#TITRE)]==libre)
{
echo "";
}

else
{
echo "<strong>Rubrique protege</strong>";
}

?>
</BOUCLE_rubriquemot>
</BOUCLE_idrubrique>
</BOUCLE_idsecteur>
</BOUCLE_idarticle>

En espérant avoir été clair dans ma démarche

Salut,
Complexe l expose...
Deja, semble que ca ne soit pas une bonne chose que de mettre tes php d
identication dans ton squelette article ou rubrique, car c est oublie le
principe du CACHE de spip qui FONTIONNE super bien (ne pas oublier les
opossums non plus...) vaut mieux faire un fichier squelette a inclure avec
un #CACHE=0. A l interieur de ce squelette tu peux gerer les
identifications et afficher le msg que tu veux en fonction de l etat
identifie ou non de tes visiteurs...
Ci dessous, le fichier que j utilise sur un site (en 1.9), si ca peut
depanner, j ai mis quelques commentaires en vitesse, ca permet juste de
gerer les connexions, deconnexions des visiteurs du site public, mais ca
fait surtout le tri entre les internautes identifies et les autres (me
semble que c est ca le but ?):
///
#CACHE{0}
<?
if (!$auteur_session['nom'])
{
// Dans ce if la personne n est pas loguée, propose un lien pour le faire
echo "<div class='CartoucheAccesLog'>";
echo "<a class='BT_Acces' href='#URL_PAGE{identification}'>S identifier</a>";
echo "</div>";
}

if ($auteur_session['statut']=='6forum')
{
// Ca c est un visiteur = 6forum le lien permet de deconnecter et de
renvoyer sur la page sommaire
?>
<div class="CartoucheAccesLog">
<a class="BT_Acces"
href="[(#URL_LOGOUT|spip.php?page=sommaire)]">Deconnexion
</a>
</div>
<?
}
if ($auteur_session['statut']=='0minirezo' ||
$auteur_session['statut']=='1comite')
{
// ca c est des redacteurs ou adminsitrateurs
echo "<div class='CartoucheAccesLog'>";
echo "<p class='EvenTitre'>".$auteur_session['nom']."</p>";
echo "<a class='BT_Acces'
href='spip.php?action=cookie&logout=".$auteur_session['login']."'>Deconnexion</a>";
echo "</div>";
}
?>

J'ai activé le plugin "Désactiver le cache".
L'idée est intéressante mais ne résoud pas complètement mon problème. D'après ce que je comprend il affichera un lien si la personne n'est pas connectée. Mais si c'est sur un article en accès libre, le lien apparaîtra quand même...

L'include squelettes c'est quoi je n'ai pas tout compris :
- Je créé un fichier connect.html dans /squelettes ?
avec
///
#CACHE{0}
<?
if (!$auteur_session['nom'])
{
// Dans ce if la personne n est pas loguée, propose un lien pour le faire
echo "<div class='CartoucheAccesLog'>";
echo "<a class='BT_Acces' href='#URL_PAGE{identification}'>S identifier</a>";
echo "</div>";
}

if ($auteur_session['statut']=='6forum')
{
// Ca c est un visiteur = 6forum le lien permet de deconnecter et de
renvoyer sur la page sommaire
?>
<div class="CartoucheAccesLog">
<a class="BT_Acces"
href="[(#URL_LOGOUT|spip.php?page=sommaire)]">Deconnexion
</a>
</div>
<?
}
if ($auteur_session['statut']=='0minirezo' ||
$auteur_session['statut']=='1comite')
{
// ca c est des redacteurs ou adminsitrateurs
echo "<div class='CartoucheAccesLog'>";
echo "<p class='EvenTitre'>".$auteur_session['nom']."</p>";
echo "<a class='BT_Acces'
href='spip.php?action=cookie&logout=".$auteur_session['login']."'>Deconnexion</a>";
echo "</div>";
}
?>
- Ensuite je fait un appel dans ma page article.html :
<?php include("connect.html"); ?> ?

J'ai activé le plugin "Désactiver le cache".

Ca c est pratique tant que ton site est en developpement, mais lorsque le
site sera en production, tu ne peux pas le laisser avec un cache a 0

J essai de comprendre ton besoin, et me semble qu il est plus simple que
ce que je croyais tout a l heure, il te faut :
- Des articles en consultation libre
- Des articles proteges uniquement accessible apres identification

Pour simplifier on dit 2 rubriques :
- Rubrique_Pour_Tout_Le_Monde qui contient les articles pour... tout le monde
- Rubrique_Protegee qui contient les articles proteges
Bien sur, cette rubriques est declaree dans l admin du plugin acces
restreint

Tu peux creer un squelette specifique pour les articles de la rubrique
Rubrique_Pour_Tout_Le_Monde. Sur ce squelette article en plus de tes
boucles tu ajoutes une phrase du genre :
"Vous êtes sur une page en acces libre, mais il existe egalement une
partie du site uniquement consultable par abonnement, allez voir ici"

Et un squelette specifique aux articles de la rubrique Rubrique_Protegee
ou tu mets une phrase du genre :
"Mes chers abonnes, vous etes ici chez vous, mais faudrait quand meme voir
a pas laisser vos opossums me ruiner mon sofa"...

En fait je crois que la confusion vient du fait que tu melanges un peu les
pinceaux et que tu ne fais pas confiance en ce plugin qui est pourtant
VACHEMENT bien... La gestion des acces, c est plus toi qui t en occupes, c
est le plugin acces restreint, ca veut dire que si un gars est sur un
article protege, c est qu il a le droit d y etre, tu ne dois t occuper que
de ce que tu souhaites afficher pour ce gars...

L'idée est intéressante mais ne résoud pas complètement mon problème.
D'après ce que je comprend il affichera un lien si la personne n'est
pas connectée. Mais si c'est sur un article en accès libre, le lien
apparaîtra quand même...

Reponse : sur le squelette specifique a la rubrique_pour_tout_le_monde tu
mets ce que tu veux, y compris rien

L'include squelettes c'est quoi je n'ai pas tout compris :
- Je créé un fichier connect.html dans /squelettes ?

En fait, je pense que cela ne te sert pas dans ce cas, la fonction permet
quand une personne arrive sur le site public de :
- Verifier si cette personne est identifiee d une facon ou d une autre sur
le site
- si pas identifie : propose un lien pour le faire
- si identifie : propose un lien pour se deconnecter (2 modalites de
deconnexion differente si la personne est visiteur ou contributeur)
Voila...
PS : la reponse a la prochaine question est : "me souviens plus bien, c
est un truc du genre rubrique=numero_de_rubrique ou
rubrique-numero_de_rubrique" mais ca doit se trouver sur google, avec le
reste de la doc sur spip, parceque, ca serait pas non plus du luxe de la
lire, les redacteurs de la doc de spip ils sont encore plus soupe au lait
que les developpeurs, des vrais sacs d embrouille...
la par exemple :
http://www.spip.net/fr_article3370.html
t as la reponse a ca :

- Ensuite je fait un appel dans ma page article.html :
<?php include("connect.html"); ?> ?

<INCLURE{fond=connect}>

Codialement
triton

triton@pointcentral.net a écrit :

J'ai activé le plugin "Désactiver le cache".

Ca c est pratique tant que ton site est en developpement, mais lorsque le
site sera en production, tu ne peux pas le laisser avec un cache a 0

J essai de comprendre ton besoin, et me semble qu il est plus simple que
ce que je croyais tout a l heure, il te faut :
- Des articles en consultation libre
- Des articles proteges uniquement accessible apres identification

Pour simplifier on dit 2 rubriques :
- Rubrique_Pour_Tout_Le_Monde qui contient les articles pour... tout le monde
- Rubrique_Protegee qui contient les articles proteges
Bien sur, cette rubriques est declaree dans l admin du plugin acces
restreint

Tu peux creer un squelette specifique pour les articles de la rubrique
Rubrique_Pour_Tout_Le_Monde. Sur ce squelette article en plus de tes
boucles tu ajoutes une phrase du genre :
"Vous êtes sur une page en acces libre, mais il existe egalement une
partie du site uniquement consultable par abonnement, allez voir ici"

Et un squelette specifique aux articles de la rubrique Rubrique_Protegee
ou tu mets une phrase du genre :
"Mes chers abonnes, vous etes ici chez vous, mais faudrait quand meme voir
a pas laisser vos opossums me ruiner mon sofa"...

En fait je crois que la confusion vient du fait que tu melanges un peu les
pinceaux et que tu ne fais pas confiance en ce plugin qui est pourtant
VACHEMENT bien... La gestion des acces, c est plus toi qui t en occupes, c
est le plugin acces restreint, ca veut dire que si un gars est sur un
article protege, c est qu il a le droit d y etre, tu ne dois t occuper que
de ce que tu souhaites afficher pour ce gars...

L'idée est intéressante mais ne résoud pas complètement mon problème.
D'après ce que je comprend il affichera un lien si la personne n'est
pas connectée. Mais si c'est sur un article en accès libre, le lien
apparaîtra quand même...

Reponse : sur le squelette specifique a la rubrique_pour_tout_le_monde tu
mets ce que tu veux, y compris rien

L'include squelettes c'est quoi je n'ai pas tout compris :
- Je créé un fichier connect.html dans /squelettes ?

En fait, je pense que cela ne te sert pas dans ce cas, la fonction permet
quand une personne arrive sur le site public de :
- Verifier si cette personne est identifiee d une facon ou d une autre sur
le site
- si pas identifie : propose un lien pour le faire
- si identifie : propose un lien pour se deconnecter (2 modalites de
deconnexion differente si la personne est visiteur ou contributeur)
Voila...
PS : la reponse a la prochaine question est : "me souviens plus bien, c
est un truc du genre rubrique=numero_de_rubrique ou
rubrique-numero_de_rubrique" mais ca doit se trouver sur google, avec le
reste de la doc sur spip, parceque, ca serait pas non plus du luxe de la
lire, les redacteurs de la doc de spip ils sont encore plus soupe au lait
que les developpeurs, des vrais sacs d embrouille...
la par exemple :
http://www.spip.net/fr_article3370.html
t as la reponse a ca :

- Ensuite je fait un appel dans ma page article.html :
<?php include("connect.html"); ?> ?

<INCLURE{fond=connect}>

Codialement
triton

Oui je comprend l'histoire des deux squelettes. Mais là où ça se complique c'est que je veux impérativement utiliser le même squelette article.html pour les articles protégé et libres (à cause de l'url-rewriting).

Bon je vais essayer de m'arranger. Merci beaucoup pour le script qui va bien m'aider

triton@pointcentral.net a écrit :

J'ai activé le plugin "Désactiver le cache".

Ca c est pratique tant que ton site est en developpement, mais lorsque
le
site sera en production, tu ne peux pas le laisser avec un cache a 0

J essai de comprendre ton besoin, et me semble qu il est plus simple que
ce que je croyais tout a l heure, il te faut :
- Des articles en consultation libre
- Des articles proteges uniquement accessible apres identification

Pour simplifier on dit 2 rubriques :
- Rubrique_Pour_Tout_Le_Monde qui contient les articles pour... tout le
monde
- Rubrique_Protegee qui contient les articles proteges
Bien sur, cette rubriques est declaree dans l admin du plugin acces
restreint

Tu peux creer un squelette specifique pour les articles de la rubrique
Rubrique_Pour_Tout_Le_Monde. Sur ce squelette article en plus de tes
boucles tu ajoutes une phrase du genre :
"Vous êtes sur une page en acces libre, mais il existe egalement une
partie du site uniquement consultable par abonnement, allez voir ici"

Et un squelette specifique aux articles de la rubrique Rubrique_Protegee
ou tu mets une phrase du genre :
"Mes chers abonnes, vous etes ici chez vous, mais faudrait quand meme
voir
a pas laisser vos opossums me ruiner mon sofa"...

En fait je crois que la confusion vient du fait que tu melanges un peu
les
pinceaux et que tu ne fais pas confiance en ce plugin qui est pourtant
VACHEMENT bien... La gestion des acces, c est plus toi qui t en occupes,
c
est le plugin acces restreint, ca veut dire que si un gars est sur un
article protege, c est qu il a le droit d y etre, tu ne dois t occuper
que
de ce que tu souhaites afficher pour ce gars...

L'idée est intéressante mais ne résoud pas complètement mon problème.
D'après ce que je comprend il affichera un lien si la personne n'est
pas connectée. Mais si c'est sur un article en accès libre, le lien
apparaîtra quand même...

Reponse : sur le squelette specifique a la rubrique_pour_tout_le_monde
tu
mets ce que tu veux, y compris rien

L'include squelettes c'est quoi je n'ai pas tout compris :
- Je créé un fichier connect.html dans /squelettes ?

En fait, je pense que cela ne te sert pas dans ce cas, la fonction
permet
quand une personne arrive sur le site public de :
- Verifier si cette personne est identifiee d une facon ou d une autre
sur
le site
- si pas identifie : propose un lien pour le faire
- si identifie : propose un lien pour se deconnecter (2 modalites de
deconnexion differente si la personne est visiteur ou contributeur)
Voila...
PS : la reponse a la prochaine question est : "me souviens plus bien, c
est un truc du genre rubrique=numero_de_rubrique ou
rubrique-numero_de_rubrique" mais ca doit se trouver sur google, avec le
reste de la doc sur spip, parceque, ca serait pas non plus du luxe de la
lire, les redacteurs de la doc de spip ils sont encore plus soupe au
lait
que les developpeurs, des vrais sacs d embrouille...
la par exemple :
http://www.spip.net/fr_article3370.html
t as la reponse a ca :

- Ensuite je fait un appel dans ma page article.html :
<?php include("connect.html"); ?> ?

<INCLURE{fond=connect}>

Codialement
triton

Oui je comprend l'histoire des deux squelettes. Mais là où ça se
complique c'est que je veux impérativement utiliser le même squelette
article.html pour les articles protégé et libres (à cause de
l'url-rewriting).

Bon je vais essayer de m'arranger. Merci beaucoup pour le script qui va
bien m'aider

L url-rewriting n est a priori pas concerne par le choix du squelette
puisque les url sont re ecrites a partir des titres des articles ou
rubriques ?? Je rate un truc ? Avant de se lancer dans l ecriture en php
qui est risquee surtout si on maitrise pas bien (la question du CACHE est
vraiment a prendre on compte dans ton cas, tu ne pourras pas la regler
apres...) faut, je pense, voir si y a pas une soluce simple pur spip (c
est tres souvent le cas, les developpeurs de spip sont farouches comme des
ecureuils, mais dotes d une structure mentale de cachalots...)