Harmonisation des variables template

Aide aux auteurs d'extensions pour phpBB 3.2.x

Modérateur: Equipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com

Harmonisation des variables template

Messagepar Sylveretour » 03 Nov 2019 à 22:01

Bonjour,

Ma demande est assez spécifique, je suis en cours de développement d'une extension de prévisualisation des messages en ajax.
Elle fonctionne très bien dans les forums et les messages privés.
Je m'attaque à la partie signature qui comporte très peu d'évent, aussi bien dans le php que dans le html.
De ce fait, je suis obligé d'utiliser une variable déjà définie dans le fichier ucp_profile_signature.html qui est <!-- DEFINE $SIG_EDIT = 1 -->
Elle fonctionne très bien, mais j'utilise uniquement ce modèle de variables: {% if S_SHOW_AJAX_PREVIEW %}
Et comme il est demandé de ne pas mixer les formes, je demande comment transformer :
Code: Tout sélectionner
<!-- IF $SIG_EDIT eq 1 -->true<!-- ELSE -->false<!-- ENDIF -->

sous l'autre forme, car $ n'est pas accepté dedans.

Mon but à ce stade est d'avoir la bonne valeur booléenne dans un fichier event overall_footer_after.html pour définir si on est dans l'édition de signature ou non afin de pouvoir modifier correctement le DOM avec jQuery
Avatar de l’utilisateur
Sylveretour
Empereur des posts
Empereur des posts
 
Messages: 1066
Enregistré le: 21 Nov 2017 à 18:24
Localisation: West Coast

Re: Harmonisation des variables template

Messagepar tomberaid » 04 Nov 2019 à 02:08

Hello
Sans être sur, je testerais le code suivant :
{% DEFINE SIG_EDIT = '1' %}
{% if definition.SIG_EDIT == '1' %}true{% else %}false{% endif %} ou même {% if definition.SIG_EDIT %}true{% else %}false{% endif %} (car si c'est défini pas besoin de eq 1 ni == '1' Sauf si tu utilises d'autres états que 0 ou 1)

Cordialement
Image
Avatar de l’utilisateur
tomberaid
Roi des posts
Roi des posts
 
Messages: 755
Enregistré le: 17 Juin 2009 à 23:27

Re: Harmonisation des variables template

Messagepar Sylveretour » 04 Nov 2019 à 09:27

Merci tomberaid, mais, je ne peut pas définir une variable, mais je doit utiliser ce qui existe déjà dans les fichiers existants étant donné qu'il y a très peut d'évent dans signature.
Je suis obligé d'utiliser <!-- DEFINE $SIG_EDIT = 1 -->
Avatar de l’utilisateur
Sylveretour
Empereur des posts
Empereur des posts
 
Messages: 1066
Enregistré le: 21 Nov 2017 à 18:24
Localisation: West Coast

Re: Harmonisation des variables template

Messagepar Skouat » 04 Nov 2019 à 18:32

Hello,

Juste une idée en passant, mais je n'ai pas vérifier la faisabilité...
Quand la variable est definie au niveau du template, elle n'est pas instanciée dans le container $template?
Donc pas moyen de retrouver dans ce container l'information ?

A+
Skouat
Traducteur
Traducteur
 
Messages: 14051
Enregistré le: 02 Avr 2008 à 19:47

Re: Harmonisation des variables template

Messagepar Sylveretour » 04 Nov 2019 à 18:48

Non, je ne pense pas que cela soit possible :?
Quoi qu'il en soit, le fait que des variables template d'origine à phpBB soient encore écrites avec $, et que ce caractère ne soit pas accepté sous la forme {% variable %} démontre que le chemin vers l'harmonisation est encore semé d'embuches :mrgreen:

En étant donc obligé de trouver un autre chemin, j'ai trouvé un petit trou de souris par lequel me faufiler.
Simple de manipuler les events php mais je ne savait pas que l'on pouvais ajouter des variables template à n'importe quel endroit:
Dans core.ucp_profile_modify_signature j'ai pu définir ce que je voulais:
Code: Tout sélectionner
public function ucp_profile_modify_signature($event)
	{
		$event['preview'] = true;
		$event['signature'] = ($event['signature'] == '') ? ' ' : $event['signature'];
		$this->template->assign_vars(array(
			'S_SHOW_AJAX_PREVIEW'	=> true,
			'S_IN_SIGNATURE'		=> true,
			'PREVIEW_DATA'			=> 'signature',
			'U_PREVIEW_AJAX'		=> $this->helper->route('sylver35_ajaxpreview_controller_ajax'),
		));
	}

$event['preview'] = true; pour faire activer le preview
$event['signature'] = ($event['signature'] == '') ? ' ' : $event['signature']; Si on veut créer une signature pour la première fois, permet de faire apparaitre la div de preview même si la signature est vide.
$this->template->assign_vars(array( à ce niveau, même si cet event ne contient pas pas de tableau de variables de template, cela est pourtant bien injecté et donc je peut faire passer ce que je souhaite!

J'ai donc finalisé mon extension avec cela et l'ai soumis ici ce jour, il vous reste à la tester 8)
Avatar de l’utilisateur
Sylveretour
Empereur des posts
Empereur des posts
 
Messages: 1066
Enregistré le: 21 Nov 2017 à 18:24
Localisation: West Coast

Re: Harmonisation des variables template

Messagepar Skouat » 05 Nov 2019 à 09:52

@pierredu au boulot :mrgreen:
Skouat
Traducteur
Traducteur
 
Messages: 14051
Enregistré le: 02 Avr 2008 à 19:47

Re: Harmonisation des variables template

Messagepar Sylveretour » 06 Nov 2019 à 18:23

je pense avoir trouvé la réponse à ma question.
La bonne formulation de la variable template doit être sous cette forme : {% if definition.SIG_EDIT eq 1 %}
l'application du sigle $ dans la variable est traduit ensuite par definition. pour l'utilisation.

Cela semble bien fonctionner.
A vérifier...
Modifié en dernier par Sylveretour le 06 Nov 2019 à 21:08, modifié 1 fois.
Avatar de l’utilisateur
Sylveretour
Empereur des posts
Empereur des posts
 
Messages: 1066
Enregistré le: 21 Nov 2017 à 18:24
Localisation: West Coast

Re: Harmonisation des variables template

Messagepar pierredu » 06 Nov 2019 à 20:51

La règle de ne pas mélanger les deux syntaxes est-elle absolue ou n'est-ce qu'une recommandation ?
Avatar de l’utilisateur
pierredu
Resp. Extensions
Resp. Extensions
 
Messages: 1224
Enregistré le: 29 Mai 2011 à 05:49
Localisation: Paris

Re: Harmonisation des variables template

Messagepar Sylveretour » 06 Nov 2019 à 21:06

Et bien je dirais que sur phpbb.com, je me suis déjà fait jeter une extension comportant un léger petit mélange :mrgreen:
J'ai retenu la leçon...
Avatar de l’utilisateur
Sylveretour
Empereur des posts
Empereur des posts
 
Messages: 1066
Enregistré le: 21 Nov 2017 à 18:24
Localisation: West Coast


Retourner vers Aide au développement

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité