Kozeries en wiki

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.

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
		'<?php echo '.sprintf($f,'$GLOBALS["core"]->getVersion()').'; ?>';
	}

MetaSeparator

Affiche un séparateur entre les tags d'un billet

  • type : value
  • contexte html : tous ceux présentant des billets
  • contexte balises : <tpl:EntryMetaData> </tpl:EntryMetaData>

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:EntryMetaData><a href="{{tpl:MetaURL}}">{{tpl:MetaID}}</a>{{tpl:MetaSeparator}}</tpl:EntryMetaData>
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 '<?php if (! $_ctx->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 : <tpl:Entry> </tpl:Entry> 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('<?php echo '.'dt::dt2str(\''.$format.'\','.sprintf($f,'$_ctx->posts->post_upddt').
		',\''.$core->blog->settings->blog_timezone.'\'); ?>');
}

EntryCommentCountDigit

supprimée. Le code actuel de dotclear permet de le faire directement (voir comment_count dans la doc template)

EntryTrackbackCountDigit

supprimée. Le code actuel de dotclear permet de le faire directement (voir 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 <tpl:Metadata> </tpl:Metadata>

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:Metadata>) :
{{tpl:TagEntriesCount}} -> 12
*/
 
public static function TagEntriesCount($attr)
{
    $f = $GLOBALS['core']->tpl->getFilters($attr);
    $n = '$_ctx->meta->count';
    return '<?php echo '.sprintf($f, $n).'; ?>';
}

EntryExcerptAndContent

Supprimé, ceci est désormais possible directement. Voir balise 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 : <tpl:PrevOrNextEntries>[...]</tpl:PrevOrNextEntries>
 
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 '<?php $prev_post = getPrevOrNextPosts($_ctx->posts,'.$cat.','.$lng.','.$dir.','.$qty.'); ?>'."\n".
			'<?php if ($prev_post !== null) : ?>'.
 
 
				'<?php $_ctx->posts = $prev_post; unset($prev_post);'."\n".
				'while ($_ctx->posts->fetch()) : ?>'.
				$content.
				'<?php endwhile; $_ctx->posts = null; ?>'.
			"<?php endif; ?>\n";
	}

Afficher le texte source - Anciennes révisions - Derniers changements -