Dans le cadre de Piwigo, la fonction getParam() expliquée dans cet autre billet va nous permettre de présenter des images en fonction de différents paramètres.
Avant tout, nous allons étudier où introduire cette fonction dans Piwigo. Cette fonction pourrait avoir sa place à plusieurs endroits, essentiellement dans :
- un plugin, et plus précisément plugins/PersonalPlugin/main.inc.php (également éditable en ligne par LocalFiles Editor), ou
- un thème, et plus précisément dans un themeconf.inc.php (mais ceux-ci ne sont pas éditables en ligne à ce jour).
Avec de bons arguments, je considère que sa place est dans le themeconf.inc.php, car l’appel de cette fonction concerne l’affichage final.
Si nous placions cette fonction dans un plugin, il ne faudrait jamais perdre de vue que le plugin devrait rester actif.
En le plaçant dans la configuration du thème, nous n’aurons qu’à créer des templates sur lesquels nous souhaitons agir différement.
Exemples dans un thème personnel.
/*
Theme Name: Mon thème
*/
$themeconf = array(
'theme' => 'mon_theme',
'parent' => 'default',
);
include_once(PHPWG_ROOT_PATH .'themes/mon_theme/include/functions.inc.php');
?>
dès lors dans themes/mon_theme/include/functions.inc.php
if ( !function_exists( 'getParam' )) {
function getParam($name, $def = false) {
if (defined('IN_ADMIN') and IN_ADMIN) return $def;
foreach ( $_REQUEST as $k => $v ) {
if ( is_string($k) and stripos( $k, $name ) > 0 )
return trim(preg_replace("/[^0-9a-z\-_\.]+/i", " ", $k)); // Remove anything but 0-9,a-z,-_
// permalink, category_url_style in 'id-name', picture_url_style in id-file
}
return $def;
}
}
?>
Ensuite il suffira de copier et de modifier les templates standards que l’on souhaite modifier venant de themes/default/template/ dans themes/mon_theme/template/
par exemple: thumbnails.tpl afin d’y remplacer
<span class="{if 0==$thumbnail.NB_COMMENTS}zero {/if}nb-comments">
<br>
{$pwg->l10n_dec('%d comment', '%d comments',$thumbnail.NB_COMMENTS)}
</span>
{/if}
par
<span class="nb-comments"><br>
{$pwg->l10n_dec('%d comment', '%d comments',$thumbnail.NB_COMMENTS)}
</span>
{/if}
Ainsi le nombre de commentaires ne sera plus indiqué que sur les pages de catégories. Ce nombre ne figurera donc pas dans les résultats de recherches, les pages de miniatures découvertes par les tags, ou les pages des catégories spéciales.
Autre exemple, picture.tpl afin d’y remplacer
{if isset($COMMENT_COUNT)}
<div id="comments">
{if $COMMENT_COUNT > 0}
<h3>{$pwg->l10n_dec('%d comment', '%d comments',$COMMENT_COUNT)}</h3>
{/if}
{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
{if isset($comments)}
{include file='comment_list.tpl'}
{/if}
{if isset($comment_add)}
<form method="post" action="{$comment_add.F_ACTION}" class="filter" id="addComment">
<fieldset>
<legend>{'Add a comment'|@translate}</legend>
{if $comment_add.SHOW_AUTHOR}
<label>{'Author'|@translate}<input type="text" name="author"></label>
{/if}
<label>{'Comment'|@translate}<textarea name="content" id="contentid" rows="5" cols="80">{$comment_add.CONTENT}</textarea></label>
<input type="hidden" name="key" value="{$comment_add.KEY}">
<input class="submit" type="submit" value="{'Submit'|@translate}">
</fieldset>
</form>
{/if}
</div>
{/if} {*comments*}
par
<hr class="separation">
<div id="comments">
{if $COMMENT_COUNT > 0}
<h3>{$pwg->l10n_dec('%d comment', '%d comments',$COMMENT_COUNT)}</h3>
{/if}
{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if}
{if isset($comments)}
{include file='comment_list.tpl'}
{/if}
{if isset($comment_add)}
<form method="post" action="{$comment_add.F_ACTION}" class="filter" id="addComment">
<fieldset>
<legend>{'Add a comment'|@translate}</legend>
{if $comment_add.SHOW_AUTHOR}
<label>{'Author'|@translate}<input type="text" name="author"></label>
{/if}
<label>{'Comment'|@translate}<textarea name="content" id="contentid" rows="5" cols="80">{$comment_add.CONTENT}</textarea></label>
<input type="hidden" name="key" value="{$comment_add.KEY}">
<input class="submit" type="submit" value="{'Submit'|@translate}">
</fieldset>
</form>
{/if}
</div>
{/if} {*category*}
Et cette fois, il ne s’agira pas du nombre mais des commentaires eux-mêmes qui ne seront pas affichés sur la page picture dès lors que l’image n’est pas présentée au travers de sa catégorie.
Ces 2 exemples simples de l’utilisation de getParam() ne sont que des préludes à d’autres usages également très intéressants que nous découvrirons prochainement.
