[phpBB 3.0.x] Permissions d'affichage dans les templates

Toutes les documentations phpBB seront ici.
Verrouillé
Avatar du membre
Dakin Quelia
Webmaster
Webmaster
Messages : 565
Enregistré le : ven. 27 nov. 2009 05:47
Localisation : Belgique
Contact :

[phpBB 3.0.x] Permissions d'affichage dans les templates

Message par Dakin Quelia »

» Permissions d'affichage dans les templates

Le tutorial a pour but de vous apprendre à créer des conditions de template. Cela vous permettra de définir la permission requise pour afficher un élément du style.

Définir la condition

Ouvrez le fichier includes/functions.php

Si vous souhaitez afficher un élément de votre style uniquement aux administrateurs, alors, il vous faudra, procéder comme suit:

Cherchez:

Code : Tout sélectionner

'DEBUG_OUTPUT'            => (defined('DEBUG')) ? $debug_output : '', 
Avant, ajoutez:

Code : Tout sélectionner

'S_IS_ADMINISTRATOR'    => ($auth->acl_get('a_') && !empty($user->data['is_registered'])), 
Si vous n'avez besoin d'afficher un élément de votre style uniquement aux modérateurs, alors, faites comme suit:

Cherchez:

Code : Tout sélectionner

'DEBUG_OUTPUT'            => (defined('DEBUG')) ? $debug_output : '', 
Avant, ajoutez:

Code : Tout sélectionner

'S_IS_MODERATOR'        => ($auth->acl_get('m_')), 
Ajouter dans le template la condition

On a défini nos conditions (côté PHP) mais cela n'est pas tout. Il faut pouvoir les utiliser et pour les utiliser, il vous faudra faire comme ci-dessous:

Ouvrez le fichier template. (Exemple: stylest/prosilver/overall_header.html)

Si vous souhaitez qu'un morceau de code ou un bouton ne soit vu que par l'administrateur, alors:

Ajoutez:

Code : Tout sélectionner

<!-- IF S_IS_ADMINISTRATOR -->Code visible si administrateur<!-- ELSE -->Code invisible<!-- ENDIF -->
Et si vous souhaitez réservé cela avant tout à un modérateur, il faudra mettre:

Code : Tout sélectionner

<!-- IF S_IS_MODERATOR -->Code visible si Modérateur<!-- ELSE -->Code invisible<!-- ENDIF -->
Dans ce morceau de code, le ELSE n'est pas obligatoire. Mais cela vous permet d'ajouter un message pour les autres utilisateurs qui n'ont pas la permission requise pour voir l'élément du style.

Autres variantes

On peut créer d'autres variantes à celles de l'administrateur ou du modérateur.

Si vous voulez par exemple qu'un seul utilisateur voit l'élément de votre style, la Variable côté PHP sera :

Code : Tout sélectionner

'S_IS_UTILISATEUR'        => ($auth->acl_get('u_') && $user->data['user_id'] == 2), 
Et la Variable de template

Code : Tout sélectionner

<!-- IF S_IS_UTILISATEUR -->Code visible si l'id désirée est 2<!-- ELSE -->Code invisible<!-- ENDIF -->
Si vous souhaitez que cela soit visible uniquement un groupe précis qui ait accès à un message, alors ajoutez cette variable côté PHP

Code : Tout sélectionner

'S_IN_GROUPE'            => ($auth->acl_get('u_') && $user->data['group_id'] == 5), 
Et la variable de template

Code : Tout sélectionner

<!-- IF S_IN_GROUPE -->Code visible si le groupe id est 5<!-- ELSE -->Code invisible pour les autres<!-- ENDIF -->
Exemple concret

Vous voulez voir une application concrète du tutorial? Bien, allons-y dans ce cas. Dans cet exemple, nous allons vous expliquer le principe pour afficher un message uniquement à un certain groupe.

Commençons par la partie php:

Ouvrez le fichier includes/functions.php:

Cherchez:

Code : Tout sélectionner

'DEBUG_OUTPUT'            => (defined('DEBUG')) ? $debug_output : '', 
Avant, ajoutez:

Code : Tout sélectionner

'S_IN_GROUPE'            => ($auth->acl_get('u_') && $user->data['group_id'] == 5), 
Passons maintenant à la partie template.

Ouvrez le fichier styles/prosilver/index_body.html

Cherchez:

Code : Tout sélectionner

<!-- INCLUDE forumlist_body.html -->>
Avant, ajoutez:

Code : Tout sélectionner

<!-- IF S_IN_GROUPE -->
		<div class="forabg">
			<div class="inner"><span class="corners-top"><span></span></span>
				<ul class="topiclist">
				<li class="header">
					<dl class="icon">
						<dt>TEST</dt>
					</dl>
				</li>
			</ul>
			<ul class="topiclist forums">
				<li>
					<dl>
						<dd>Message visible uniquement au groupe 5</dd>
					</dl>
				</li>
			</ul>
			<span class="corners-bottom"><span></span></span></div>
		</div>
		<!-- ENDIF -->

Vous êtes libre de modifier le message. Ceci est un exemple de ce que l'on peut faire grâce au tutorial. Si vous n'êtes pas du groupe 5, vous ne verrez pas ce message. Lors de mes tests, le groupe 5 correspondait au groupe des adminstrateurs donc SEULS ces derniers pouvaient voir le message.

Bien sûr, on peut tout à fait créer une page entière pour le message annonce. Dans ce cas, il nous faudra procéder comme suit:

Tout d'abord, effectuons la modification côté php:

Ouvrez le fichier includes/functions.php:

Cherchez:

Code : Tout sélectionner

'DEBUG_OUTPUT'            => (defined('DEBUG')) ? $debug_output : '', 
Avant, ajoutez:

Code : Tout sélectionner

'S_IN_GROUPE'            => ($auth->acl_get('u_') && $user->data['group_id'] == 5), 
Passons maintenant à la partie template.

Ouvrez le fichier styles/prosilver/template/index_body.html

Cherchez:

Code : Tout sélectionner

<!-- INCLUDE forumlist_body.html -->
Avant, ajoutez:

Code : Tout sélectionner

<!-- INCLUDE annonce_body.html -->
Mais on n'a pas créé la page, donc il faut la créer. Pour ce faire, créer un nouveau document avec le code ci-dessous:

Code : Tout sélectionner

<!-- IF S_IN_GROUPE -->
		<div class="forabg">
			<div class="inner"><span class="corners-top"><span></span></span>
				<ul class="topiclist">
					<li class="header">
						<dl class="icon">
							<dt>ANNONCE</dt>
						</dl>
					</li>
				</ul>
			<ul class="topiclist forums">
				<li>
					<dl>
						<dd>Bienvenue aux administrateurs. Vous vous efforcerez de maintenir l'ordre sur ce forum</dd>
					</dl>
				</li>
			</ul>
			<span class="corners-bottom"><span></span></span></div>
		</div>
		<!-- ENDIF -->
Maintenant, enregistrez la page sous le nom annonce_body.html et vous devez la placer dans le dossier styles/votrethème/template/.

Verrouillé

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 18 invités