Saluer nos inscrits ou les surprendre

Avec Piwigo, dans votre thème personnel, vous aurez peut-être pris soin déjà de coder :

include_once(PHPWG_ROOT_PATH .'themes/mon_theme/include/functions.inc.php');

ou

include_once(PHPWG_ROOT_PATH .'local/php/functions.inc.php');

Alors sans le moindre plugin, vous pouvez compléter votre galerie de fonctions diverses et variées.

Exemple :

if ( !function_exists( 'getRegisteredName' )) {
function getRegisteredName($default = ' ') {
global $user;
if ( is_a_guest()) return $default;
else return ' ' . stripslashes($user['username']);
}
}

Voyons comment utiliser cette fonction.
En premier lieu, dans une version statique c’est à dire dans n’importe quel template, vous pouvez coder par exemple :

Bonjour{' '|getRegisteredName},

Cette solution sera statique car quelque soit le template choisi, la présentation sera toujours identique.

Regardons maintenant une solution dynamique, en d’autres termes vous souhaitez disposer du nom du membre dans un contenu (description d’une catégorie, page additionnelle, bloc de PWG Stuffs), alors au niveau d’un template, vous devrez coder (1ère solution) :

{html_head}
<script type="text/javascript">// <![CDATA[
var PSEUDO = "{' '|getRegisteredName},";
// ]]></script>',
{/html_head}

Et maintenant à chaque fois, où vous voulez voir apparaitre le nom du membre, vous coderez :

<script type="text/javascript">// <![CDATA[
document.write( PSEUDO );
// ]]></script>

L’autre solution dynamique (ma préférée) est à base de jQuery, et consiste en un remplacement de toute occurrence de <label class= »pseudo »></label> par le nom du membre. Pour cela, au niveau d’un template, vous devrez coder (2nde solution) :

{known_script id="jquery" src=$ROOT_URL|@cat:"themes/default/js/jquery.packed.js"}

{html_head}
<script type="text/javascript">// <![CDATA[
jQuery(document).ready(function(){ldelim}
  jQuery(".pseudo").text('{""|getRegisteredName}' );
});
// ]]></script>
{/html_head}

Cette fois, quand vous aurez besoin du pseudo du membre, vous devrez coder :

<label class="pseudo"></label>

Un seul inconvénient commun à nos deux solutions dynamiques, Javascript doit être actif.
Bon usage à tous et, saluez vos membres de ma part.

6 thoughts on “Saluer nos inscrits ou les surprendre

  1. Questions :

    1) avantages/inconvénients respectifs que tu vois aux solutions dynamiques 1 et 2

    2) il me semble avoir vu que certains thèmes avaient leur propre local-head ; ne peut-on mettre le script là-dedans plutôt que d’utiliser {html_head} ?

    3) la balise est utilisée en dehors de tout formulaire ?

    4) je ne comprends pas l’utilisation de {ldelim} sans {redelim} ; sans doute pour ça que je n’ai pas encore réussi à le faire fonctionner correctement … alors que {literal}{/literal} ne me pose pas de problème. C’est pareil, ou y a-t-il une subtile différence qui m’échappe ?

  2. 1) La solution 1 n’est pas mémorisable, la seconde avec une class « pseudo » est simple et réutilisable plusieurs fois par page.
    2) Je n’aime pas le principe de local-head (Cf. script inutile présent sur toutes les pages du site).
    3) <label ou <span ou <div c’est ce que tu voudras.
    4) {ldelim} dit à Smarty : cette balise n’est pas pour toi mais pour Javascript, et Smarty replace {ldelim} par une accolade ouvrante que Javascript sera content d’ouvrir plus tard quand la page arrivera dans le navigateur du visiteur.
    {ldelim} permet d’assurer le remplacement des variables Smarty dans le corps du Javascript alors qu’à l’inverse {literal}{/literal} empêche toute remplacement entre les deux.

  3. 1) « mémorisable » ? tu veux dire quoi au juste ?

    2) a contrario, il me semble qu’il permet de se passer du template-extension. Je n’ai pas tout suivi de la discussion de l’autre jour, mais si je peux éviter de créer des .tpl supplémentaires, que je risque de devoir modifier à chaque nouvel upgrade de Piwigo (x nb. galeries, et j’en ai quelques-unes), ça m’arrange bien … même au prix d’un script pas systématiquement nécessaire.

    3) OK

    4) Il va falloir que je revois ça (la doc Smarty ne me paraît pas bien claire sur le sujet) … et {redelim} est remplacé par une parenthèse fermante ?

  4. 1) mémorisable : J’ai besoin du pseudo dans une description, à la saisie de ma description je saisis <span class= »pseudo »></span>; ai-je une chance de m’en souvenir dans 8 jours. Je pense que oui. 😉
    2) Qui a évoqué, ou pensé aux T-E., je n’ai mentionné que le terme de template (propre à un thème). Regarde la balise {include} de Smarty (déjà utilisée dans mes billets précédents).
    4) C’est ça, sauf qu’il s’agit de {rdelim} comme « right delimiter » et pas {redelim}. 😉

    1. 1) Capisco 😉

      2) Il va vraiment falloir que j’ouvre le cahier de devoirs de vacances …

      3) J’ai le droit à une faute de frappe de temps à autre ? 😉

  5. 3 (et ex-4)) Oui, bien entendu, loin de moi l’idée de relever une coquille sans que cela ne soit utile à toi ou à d’autres lecteurs.

Comments are closed.