6 votes

Afficher un article joomla aux utilisateurs enregistrés uniquement, ou un écran de connexion s'ils ne sont pas connectés oui

Dans les versions antérieures à la version 1.6 de Joomla, je pouvais donner à un élément de menu la valeur suivante public et son contenu : un article par exemple pour enregistré .

Cela a conduit à une situation où les personnes pouvaient voir le lien vers un article dans le menu lorsqu'elles n'étaient pas connectées, mais obtenaient un composant de connexion lorsqu'elles cliquaient dessus. Et après cela, ils voyaient l'article.

Dans la version 1.7, ces mêmes actions conduisent à une situation où, lorsque je clique sur le lien, l'écran du composant reste vide.

Comment faire pour que les articles enregistrés affichent un écran de connexion lorsque l'utilisateur frontal n'est pas connecté avec des droits suffisants ? C'était si facile avant et je n'arrive pas à le faire fonctionner maintenant.

9voto

Hans Wassink Points 1379

Je vais répondre à ma propre question, parce que je suis sûr que les gens auront besoin de cela à l'avenir, et ma solution n'implique que quelques règles de code supplémentaire et puis vous pouvez définir chaque article etc... à Enregistré et vous verrez un champ de connexion quand un utilisateur n'est pas connecté.

Dans le fichier index.php de votre modèle, placez cet élément en haut de la page ; il indique le niveau d'accès de votre article.

$article =& JTable::getInstance("content");
$article->load(JRequest::getVar('id'));
$cAccLevel = $article->get("access");

Ajoutez ensuite une position de module au-dessus de votre composant, et ne l'affichez que lorsque le niveau d'accès requis est > 1.

<?php if($cAccLevel > 1): ?>
    <jdoc:include type="modules" name="LOGIN_MODULE_POSITION" />
<?php endif; ?>

Ajoutez ensuite un module de connexion dans votre gestionnaire de modules à LOGIN_MODULE_POSITION.

Voila... pas de routage nécessaire etc... tout fonctionne, j'ai choisi d'enlever le style de la boîte de déconnexion et du champ d'action comme ceci :

.logout-button,
.actions{
    display:none;
}

Bonne chance !

6voto

Stilero Points 264
  1. Créez un nouveau menu à partir du gestionnaire de menu, disons qu'il s'appelle "hidden caché".

  2. Ajoutez les éléments de menu qui ne seront accessibles qu'aux utilisateurs enregistrés. enregistrés.

  3. Définissez les niveaux d'accès requis pour ces éléments de menu ("Spécial" dans cet exemple, mais cela pourrait aussi être "Enregistré"). Ne créez PAS de module module pour le "menu caché". Il ne sera affiché sur aucune page, il n'a donc pas besoin d'un module.

  4. Créez votre "vrai" menu (par exemple, "menu principal") et l'élément de menu qui s'affichera pour tous les utilisateurs (par exemple, "Submit an article"). L'élément de menu aura un type d'élément de menu "Alias". Son paramètre son paramètre "Menu Item" sera l'élément de menu "Submit an Article" dans le le "menu caché". Le niveau d'accès de cet élément de menu sera "Public", car nous voulons que tout le monde puisse le voir et l'utiliser.

  5. Créez un module de type "mod_mainmenu" pour ce menu, tout comme vous le faites pour comme vous le faites pour n'importe quel menu.

  6. Créez un module de connexion et définissez le niveau d'accès à "Public". Assurez-vous que le module est affiché uniquement sur l'élément de menu "Public" et et non sur l'élément enregistré, et sélectionnez une position visible.

Désormais, lorsqu'un invité (utilisateur non connecté) accède au choix de menu "Soumettre un article", il est redirigé vers une page vierge avec le nom de l'article. article", il est redirigé vers une page blanche avec le message "Only pour les visiteurs enregistrés". . S'il se connecte avec succès, il sont dirigés vers la page souhaitée (dans ce cas, "Soumettre un article"). S'ils étaient déjà connectés, ils y vont directement.

2voto

Alberto Points 106

Si ce que vous voulez est juste montrer un contenu si le visiteur est un utilisateur enregistré, vous pouvez utiliser ce code :

$user =& JFactory::getUser();

    <?php
   if( !$user->guest ){ ?>

       [[what ever you want to do ]]
   <?php endif; ?> 

J'espère que cela vous aidera !

1voto

pcsi Points 419

Allez dans le menu CONTENU, créez ou modifiez une section pour les éléments que vous voulez protéger.

Vous verrez une option : Niveau d'accès

Il y a 3 options :

Public, enregistré et spécial

Réglez-le sur : Enregistré

Il vous faudra ensuite modifier vos articles pour cette section et c'est tout.

-2voto

TheodoreV Points 304

Tout d'abord, vous devez mettre à jour votre installation joomla à 2.5 (c'est la dernière version de joomla), 1.7 n'est plus supporté par la communauté Joomla.

Il existe plusieurs façons de définir vos droits de visionnage. K2 est un composant CCK utile pour faire le travail, également une technique utile que j'utilise pour suivre est de "lier" les catégories de votre article dans un menu et de définir des autorisations spécifiques pour les éléments du menu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X