====== myMoreTpl ======
**Fonctions template pour Dotclear 2 en prêt-à-porter.**
//Cette page est destinée à collecter toutes fonctions créant de nouvelles balises templates pour les thèmes Dotclear 2. C'est une page wiki : si vous constatez des erreurs ortho ou typographiques ou une erreur de code, vous pouvez la modifier.//
* [[.:moreTpl:guide-contributeur|Guide du contributeur]]. Conventions de présentation des fonctions. Merci à tout contributeur de s'y référer.
* [[.:moreTpl:guide-utilisateur|Guide pas à pas de l'utilisateur]]. Pour ceux qui ne savent pas du tout par quel bout s'y prendre.
===== Fonctions =====
A placer dans le fichier ''_public.php'' du thème ou du plugin MyMoreTpl dans une classe ''tplMyMoreTpl''.
==== CoreVersion ====
**Affiche le numéro de la version de Dotclear**
* type : value
*contexte html : tous
*contexte balises : aucun
=== Déclaration ===
$core->tpl->addValue('CoreVersion',array('tplMyMoreTpl','CoreVersion'));
=== Fonction ===
/**
CoreVersion
Cette fonction affiche la version du noyau Dotclear d'après le champ core de la table version
(par exemple pour préciser la version après "Propulsé par Dotclear")
Utilisation : {{tpl:CoreVersion}} -> 2.0 RC1
*/
public static function CoreVersion($attr)
{
$f = $GLOBALS['core']->tpl->getFilters($attr);
return
'getVersion()').'; ?>';
}
==== MetaSeparator ====
**Affiche un séparateur entre les tags d'un billet**
* type : value
* contexte html : tous ceux présentant des billets
* contexte balises : '' ''
=== Déclaration ===
$core->tpl->addValue('MetaSeparator',array('tplMyMoreTpl','MetaSeparator'));
=== Fonction ===
/**
MetaSeparator
Cette fonction affiche un séparateur (qui peut être spécifié en paramètre) entre
les tags d'un billet. Cela permet par exemple d'utiliser une virgule comme
séparateur de tags et de ne pas avoir une virgule superflue qui traîne après
le dernier tag.
Paramètre du tag :
- separator : indique le texte à utiliser comme séparateur (valeur par défaut : ' - ')
Exemples d'utilisation :
Le bloc de code :
{{tpl:MetaID}}{{tpl:MetaSeparator}}
affiche une liste de tous les tags du billet en les séparant simplement par un tiret.
*/
public static function MetaSeparator($attr)
{
$ret = isset($attr['separator']) ? $attr['separator'] : ' - ';
$ret = html::escapeHTML($ret);
return 'meta->isEnd()) { ' . "echo '".addslashes($ret)."'; } ?>";
}
==== EntryUpdate ====
**Affiche la date et l'heure de la mise à jour du billet**
* type : value
* contexte html : tous ceux présentant des billets
* contexte balises : '' '' et post.html
=== Déclaration ===
$core->tpl->addValue('EntryUpdate',array('tplMyMoreTpl','EntryUpdate'));
$GLOBALS['__l10n']['Last update :'] = 'Dernière mise à jour :';
=== Fonction ===
/**
EntryUpdate
Cette fonction affiche la date et l'heure de la dernière mise à jour du billet
Le format d'affichage répond à la syntaxe de la fonction strftime():
http://fr.php.net/manual/fr/function.strftime.php
Exemples d'utilisation :
{{tpl:EntryUpdateDate}} affichera "date_format, time_format"
où date_format et time_format sont les formats de l'affichage de
la date et de l'heure définis dans les "Paramètres du blog"
{{tpl:lang Last update :}} {{tpl:EntryUpdate format="%A %e %B %Y, %H:%M:%S"}}
affichera :
"Dernière mise à jour : vendredi 30 novembre 2007, 16:53:05"
*/
public static function EntryUpdate($attr)
{
global $core;
$format = (!empty($attr['format'])) ? $attr['format'] :
$core->blog->settings->date_format.', '.$core->blog->settings->time_format;
$f = $GLOBALS['core']->tpl->getFilters($attr);
return('posts->post_upddt').
',\''.$core->blog->settings->blog_timezone.'\'); ?>');
}
==== EntryCommentCountDigit ====
supprimée. Le code actuel de dotclear permet de le faire directement (voir {{tpl:Comment_count}} dans la doc template)
==== EntryTrackbackCountDigit ====
supprimée. Le code actuel de dotclear permet de le faire directement (voir {{tpl:Comment_count}} dans la doc template)
==== TagEntriesCount ====
**Affiche le nombre de billets d'un tag en chiffres et sans mention**
* type : value
* contexte html/contexte balises : tag.html, tags.html ou dans les balises '' ''
=== Déclaration ===
$core->tpl->addValue('TagEntriesCount',array('tplMyMoreTpl','TagEntriesCount'));
=== Fonction ===
/*
TagEntriesCount
Cette fonction affiche le nombre de billets correspondant à un tag
Utilisation (dans la page tags.html, tag.html ou une boucle ) :
{{tpl:TagEntriesCount}} -> 12
*/
public static function TagEntriesCount($attr)
{
$f = $GLOBALS['core']->tpl->getFilters($attr);
$n = '$_ctx->meta->count';
return '';
}
==== EntryExcerptAndContent ====
Supprimé, ceci est désormais possible directement. Voir balise {{tp:EntryContent}} dans la doc Dotclear.
==== EntryCategoryShortURL ====
Figure désormais directement dans Dotclear.
==== PrevOrNextEntries ====
**Cette fonction crée un bloc balise pour le template post.html qui permet d'afficher les x billets précédant ou suivant le billet courant. Possibilité de filtrer par langue, catégorie et de définir le nombre de résultats à retourner**
* balise de type : block
* contextes html : post.html
* contexte balises : tous
=== Déclaration ===
$core->tpl->addBlock('PrevOrNextEntries',array('tplMyMoreTpl','PrevOrNextEntries'));
=== Fonction ===
/**
PrevOrNextEntries
Cette fonction crée un bloc balise pour le template post.html qui permet d'afficher les x billets précédant ou suivant le billet courant. Possibilité de filtrer par langue, catégorie et de définir le nombre de résultats à retourner
Utilisation : [...]
Paramètres :
- Option "cat" accepte 0 pour exécuter la requête sur tous les posts ou 1 pour que ce ne soit que des billets de la même catégorie que le post en cours qui s'affichent => défaut 0
- Option "lng" (pour les blogs multilangues) accepte 0 pour trier tous les posts de toutes les langues ou 1 pour les billets de la même langue que le post en cours => défaut 0
- Option "dir" accepte 0 pour les x posts précédents ou 1 pour les x posts suivants => défaut 0
- Option "qty" accepte une valeur numérique qui correspondra au nombre de posts retournés par DC (dans la limite du nb total de posts publiés sans password) => défaut 2
Précision :
- Les 4 options sont utilisables simultanément vous pouvez donc afficher le billet suivant rédigé dans la même langue et publié dans la même catégorie à l'aide du code suivant :
- Si vous souhaitez utiliser la valeur par défaut de l'option, il est inutile, et même recommandé dans une démarche d'optimisation, de ne pas utiliser cet argument. Par exemple si vous souhaitez afficher les deux billets précédents parmi toutes les catégories et toutes les langues, le bloc de base indiqué dans "Utilisation" est suffisant.
*/
public function PrevOrNextEntries($attr,$content)
{
function getPrevOrNextPosts($post,$cat,$lng,$dir,$qty)
{
global $core;
if($cat==1) { $params['sql'] = $post->cat_id ? ' AND P.cat_id = '.$post->cat_id : ' AND P.cat_id IS NULL'; }
if($lng==1) { $params['sql'] .= $post->post_lang ? ' AND P.post_lang = \''.$core->con->escape($post->post_lang).'\'' : ' AND P.post_lang IS NULL'; }
if($dir==1) { $sign='>'; $order='ASC'; } else { $sign='<'; $order='DESC'; }
$dt = $post->post_dt; $post_id = $post->post_id;
$params['post_type'] = $post->post_type; $params['limit'] = $qty; $params['order'] = 'post_dt '.$order.', P.post_id '.$order;
$params['sql'] .= ' AND ((post_dt = \''.$core->con->escape($dt).'\' AND P.post_id '.$sign.' '.$post_id.') OR post_dt '.$sign.' \''.$core->con->escape($dt).'\') ';
$rs = $core->blog->getPosts($params);
if ($rs->isEmpty()) {
return null;
}
return $rs;
}
$cat = !empty($attr['cat']) ? $attr['cat'] : '0';
$lng = !empty($attr['lng']) ? $attr['lng'] : '0';
$dir = !empty($attr['dir']) ? $attr['dir'] : '0';
$qty = !empty($attr['qty']) ? $attr['qty'] : '2';
return 'posts,'.$cat.','.$lng.','.$dir.','.$qty.'); ?>'."\n".
''.
'posts = $prev_post; unset($prev_post);'."\n".
'while ($_ctx->posts->fetch()) : ?>'.
$content.
'posts = null; ?>'.
"\n";
}