deuxième version
Voici une autre fonction proposant un autre style de notation :
function citation ($letexte, $style = '', $tag = '/') {
if(ereg("cit_tag=(.)",$letexte,$regs)) {
$tag = $regs[1];
$letexte = str_replace($regs[0], '', $letexte);
}
if(!$style OR !is_string($style)) $style = 'spip_cite';
$regexp = "$tag$tag(([^$tag]+)$tag?([^$tag]+)?$tag?([^$tag]+)?$tag?([^$tag]+)?)$tag$tag";
while(ereg($regexp, $letexte, $regs)) {
$la_citation = trim($regs[2]);
$l_auteur = trim($regs[3]);
$la_source = trim($regs[4]);
$le_style = trim($regs[5]);
if($le_style) $style=$le_style;
$terme = "<blockquote class=\"$style\">";
if($l_auteur) $terme .= "<cite class=\"$style\">".$l_auteur."</cite> :<br>";
$terme .= $la_citation;
if($la_source) $terme .= "<div class=\"$style\">".$la_source."</div>";
$terme .= "</blockquote>";
$letexte = str_replace($regs[0], $terme, $letexte);
}
return $letexte;
}
Dans l’article, le rédacteur utilisera la notation :
//La Citation/Auteur/Source/Style//
Sachant que Auteur, Source et Style sont optionnels mais que l’ordre est important. Exemples :
//La Citation//
affiche une citation sans auteur ni source, en employant le style par défaut.
//La Citation/Auteur//
affiche une citation avec auteur mais sans source, en employant le style par défaut.
//La Citation//Source//
affiche une citation sans auteur mais avec une source, en employant le style par défaut. (à noter qu’il FAUT 2 slashes (//) pour séparer la citation de la source)
//La Citation///ze_style//
affiche une citation sans auteur ni source, en employant les styles ’*.ze_style’, à condition qu’ils soient définis quelquepart (feuille de style ou balise . (à noter qu’il FAUT 2 slashes (///) pour séparer la citation du style)
D’autre part, il lui sera possible de définir lui-même le caractère de détection des citations en saisisant dans son texte :
cit_tag=X
où X peut-être un caractère quelconque. Exemple :
Si le rédacteur ne veut pas de ’/’ comme caractère de détection, il peut faire :
cit_tag=#
##La citation##
Dans le squelette, le webmestre aura la possibilité de paramétrer :
[(#TEXTE|citation{ze_style, ze_tag})]
. Les styles css utilisés par défaut seront ’*.ze_style’ et le caractères de détection de la citation sera ’ze_tag’ (un seul caractère). Sinon, les valeurs par défaut sont .cite_spip pour les styles et ’/’ pour le caractère de détection
Il faudra définir les styles par défaut (dans ’spip_style.css’, par exemple) :
blockquote.spip_cite { ... } #bloc de la citation
cite.spip_cite { ... } #bloc de l'auteur
div.spip_cite { ... } #bloc de la source
... et éventuellement, définir des style pour que les rédacteurs puissent varier les plaisirs :
blockquote.ze_style { ... } #bloc de la citation
cite.ze_style { ... } #bloc de l'auteur
div.ze_style { ... } #bloc de la source
blockquote.anozer_style { ... } #bloc de la citation
cite.anozer_style { ... } #bloc de l'auteur
div.anozer_style { ... } #bloc de la source
...etc...
article initial
On peut utiliser du code html dans son article de la manière suivante :
<html>
<blockquote style="border: 1px solid black; background-color: #eee; padding: 10px;">
<cite style="font-weight: bold; text-decoration: underline;">
Auteur
</cite>
:<br>Citation
<div style="vertical-align: bottom; text-align: right;">Source</div>
</blockquote>
</html>
Mais comme le propre de spip est de permettre la rédaction sans forcément connaitre les astuces du langage du web, voici un filtre :
/*
* +----------------------------------+
* Nom du Filtre : citation
* +----------------------------------+
* Date : mercredi 4 juin 2003
* Auteur : James + klike@firstream.net
* +-------------------------------------+
* Fonctions de ce filtre :
* 'habille' une citation avec un style prédéfini
* +-------------------------------------+
*
* Pour toute suggestion, remarque, proposition d'ajout
* reportez-vous au forum de l'article :
* http://www.uzine.net/spip_contrib/article.php3?id_article=NumeroDeVotreArticle
*/
function citation ($letexte) {
global $flag_pcre;
if (!$flag_pcre) die('Emploi de fonction interdite');
$regexp_echap = "/<cit(e|ation)?(.*?)>(.*?)<\/cit(e|ation)?>/si";
while(preg_match($regexp_echap, $letexte, $regs)) {
$num_echap++;
$les_echap[$num_echap] = "<blockquote class=\"spip\">";
if (eregi("de=\"([^\"]*)\"", $regs[2], $elem)) {
$les_echap[$num_echap] .= "<cite class=\"spip\">de ".$elem[1]."</cite> :<br>";
}
$les_echap[$num_echap] .= $regs[3];
if (eregi("source=\"([^\"]*)\"", $regs[2], $elem)) {
$les_echap[$num_echap] .= "<div class=\"source\">Source : ".$elem[1]."</div>";
}
$pos = strpos($letexte, $regs[0]);
$letexte = substr($letexte,0,$pos)."___SPIP_cit$num_echap ___"
.substr($letexte,$pos+strlen($regs[0]));
}
while(ereg("___SPIP_cit([0-9]+) ___", $letexte, $match)) {
$lenum = $match[1];
$cherche = $match[0];
$pos = strpos($letexte, $cherche);
$letexte = substr($letexte, 0, $pos). $les_echap[$lenum] . substr($letexte, $pos + strlen($cherche));
}
return $letexte;
}
// FIN du Filtre citation
dans la feuille de style (spip_style, par exemple) :
cite.spip { font-weight: bold; text-decoration: underline; }
blockquote.spip { border: 1px solid black; background-color: #eee; padding: 10px; }
div.source { vertical-align: bottom; text-align: right;}
dans les squelettes, on applique le filtre :
[(#TEXTE|citation)]
et enfin, dans son article, ou une brève, il sera possible de faire :
<cit de="Auteur" source="Source">Citation</cit>
ce qui aura pour effet :
de Auteur :
CitationSource : Source
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |