20 Janvier 2005 - document fermé, voir Expérimentations
L'édito est un texte affiché en 1ère page seulement, dans une présentation spécifique. Il n'y a pas d'état spécifique édito prévu dans DotClear 1.2 ni de plugin disponible en janvier 2005. Il existe par contre un indicateur À retenir qui va permettre de définir un édito À retenir. Celui-ci sera un cas particulier de la sélection À retenir.
Deux possibilités :
On entrera le texte de l'édito dans la partie chapô du billet. On complétera par du texte entré dans la partie contenu du billet auquel le visiteur aura accès en cliquant sur le lien Lire la suite. On se retrouve alors dans le contexte normal d'affichage d'un billet, avec commentaires possibles si le rédacteur les a autorisés. Noter que la partie contenu du billet ne peut pas être vide.
À copier dans le template.php du thème, après <div id="content">
<?php if ($mode == 'home') : /* 1ère page seulement */ ?>
<?php dcEdito() ?>
<?php endif ?>
La partie fonction dcEdito ci-dessous est à copier dans le prepend.php du thème qui doit ressembler à ceci
<?php
# Change here the template lang
//$__lang = 'fr';
# Ajout des fichiers du template pour le cache
$mod_files[] = dirname(__FILE__).'/list.php';
$mod_files[] = dirname(__FILE__).'/post.php';
$mod_files[] = dirname(__FILE__).'/form.php';
# L'édito est le dernier en date des billets A retenir
function dcEdito($block='<p>%s</p>',$item='<a href="%2$s">Lire la suite</a>',$titre='<h3>Édito</h3>',$divid='edito')
{
global $blog;
$rs = $blog->getLastNews(1,'','post_dt DESC',true);
if (!$rs->isEmpty()) {
$res = sprintf($item,$rs->f('post_titre'),$rs->getPermURL());
$resc = $rs->f('post_chapo'); /* récupération du contenu */
echo '<div id="'.$divid.'">'.$titre.$resc; /* affichage du contenu */
printf($block,$res); /* lien vers le billet */
echo '</div>';
}
}
?>
À copier dans le style.css du thème (modifier l'apparence, couleurs, placement ... à votre convenance)
#edito {
background: #FFF8DC;
border: solid 2px #FFD700;
padding: 1ex 2em;
text-indent: 0;
}
#edito div {
display: none;
}
Ne pas oublier, dans l'édition du billet, clic sur "Plus d'options" puis "Sélection" oui pour le billet à mettre en édito. Noter que rien n'apparaitra s'il n'y a aucun billet À retenir en Sélection oui (c'est voulu, sinon voir dcEdito2).
Les billets en Sélection oui sont repérés par une étoile dans la liste des billets.
Rappel : le texte entré dans le chapô est soit en format wiki, soit en format XHTML, suivant le choix fait dans la case Format.
On pourra travailler avec n'importe quel billet de toute catégorie. On pourra ne pas afficher des portions de texte du billet dans l'édito en encadrant le texte à ne pas afficher dans un div.
Il est préférable de mettre le chapô en édito, c'est plus simple à l'utilisation et plus propre à l'affichage. Le seul petit inconvénient est la non disponibilité de la barre d'outils dans l'édition du chapô. Mais on peut toujours faire l'entrée du chapô dans la zone d'édition du corps du billet, puis faire un couper/coller.
On peut appeller la fonction dcEdito en modifiant les paramètres qui sont par défaut :
<?php
dcEdito('<p>%s</p>','<a href="%2$s">Lire la suite</a>','<h3>Édito</h3>','edito');
?>
On peut aussi utiliser le mode home avec un home.php.
[template.php]
<?php elseif ($mode == 'home') : /* On traite la homepage */ ?>
<?php include dirname(__FILE__).'/home.php'; ?>
<?php elseif ($mode != 'post') : /* Si aucune erreur ... */?>
[home.php]
<?php dcEdito() ?>
La fonction dcEdito2 permet de mettre en édito un billet spécifique quelle que soit sa date. Il est alors nécessaire qu'un seul billet À retenir existe.
/* L'édito est le billet A retenir (un seul doit être sélectionné)
* code repris de dotclear/layout/functions.php dcSelection
* pour afficher dans l'édito le contenu du billet : post_content
* du chapô : post_chapo
* variante : $item2 = 'Billet <a href="%2$s">%1$s</a>'
*/
function dcEdito2($block='<ul>%s</ul>',$item='<li><a href="%2$s">%1$s</a></li>',$limit=NULL)
{
global $blog;
$block2='<p>%s</p>';
$item2='<a href="%2$s">Lire la suite</a>';
$n = 0;
$rs = $blog->getLastNews($limit,'','post_dt DESC',true);
if (!$rs->isEmpty()) {
$res = '';
while (!$rs->EOF()) {
$n = $n + 1;
$res .= sprintf($item,$rs->f('post_titre'),$rs->getPermURL());
$res2 = sprintf($item2,$rs->f('post_titre'),$rs->getPermURL());
$resc = $rs->f('post_chapo'); /* récupération du contenu */
$rs->moveNext();
}
}
if ($n == 0) {
echo "<p>Erreur : pas de billet A retenir en Sélection oui.</p>";
} elseif ($n == 1) {
echo $resc; /* affichage du contenu */
printf($block2,$res2); /* lien vers le billet */
} else {
echo "<p>Erreur : il y a ".$n." billets A retenir en Sélection oui :</p>";
printf($block,$res); /* liens vers les billets */
echo "<p>Il faut mettre en Sélection oui que le seul billet préparé pour l'édito.</p>";
}
}
À utiliser avec dans le template.php du thème, après <div id="content"> pour un max de liberté
<?php if ($mode == 'home') : /* 1ère page seulement */ ?>
<div id="edito">
<h3>Édito</h3>
<?php dcEdito() ?>
</div>
<?php endif ?>
À supprimer dans le template.php du thème, optionnel
<?php dcSelection('<div id="selection"><h2>À retenir</h2><ul>%s</ul></div>'); ?>
ou à mettre en commentaires, optionnel
<?php /* dcSelection('<div id="selection"><h2>À retenir</h2><ul>%s</ul></div>'); */ ?>
L'utilisation de la technique dcEdito est faite pour faciliter la mise en place d'édito en utilisant la procédure des billets. Elle entraine une duplication de l'affichage du texte d'une part dans l'édito, d'autre part dans la liste des billets. Duplication qu'il faut gérer par des moyens divers. Soit le changement de date du billet (à partir de 1970), soit l'utilisation du mode home combiné à la liste de billets de catégories spécifiques seulement.
Le rédacteur qui connait le langage XHTML et qui pratique le FTP (FileZilla ...) pourra éviter ces duplications en remplaçant l'appel à la fonction dcEdito par le texte en XHTML de l'édito.
Il est important de réfléchir au design de son blogue et de ce qu'il va représenter vis à vis des visiteurs. Si l'on met un édito comme dans la 1ère page d'un journal, celà veut dire que l'on veut aller au-delà de la liste standard de billets et donc faire une présentation spécifique.
Les listes de billets compactes par catégorie sont bien adaptées à une 1ère page avec édito. Celà permet de ne lister que les billets de catégories spécifiques; les titres de beaucoup plus de billets sont immédiatement visibles; il faudra veiller à un titre significatif et assez long pour pallier à l'absence de chapô.
Uniquement les liens contenus dans les billets. Les liens externes au site référencé dans la fonction linksInNewWindow sont ouverts dans une nouvelle fenêtre. Les liens internes au site sont ouverts dans la fenêtre en-cours.
Liens externes ouverts dans une seule fenêtre. Au 2ème appel, la fenêtre recevant la page externe reste en arriére plan (si elle n'a pas été fermée). Ou avec ouverture systématique d'une nouvelle fenêtre externe, mais il faut la fermer après consultation sous peine de prolifération de fenêtres. Donc dans tous les cas, fermer la fenêtre consultée qui s'ouvre dans une nouvelle fenêtre.
Il faut remplacer site et site.com par les adresses du blog. Par exemple pour le site http://www.padawan.info/, mettre var b=a?"padawan":"_self"; et if(c[i].href.search("padawan.info")==-1).
Finalement pas une bonne idée pour la navigation vue du visiteur. Il ne sait pas ce qu'il va se passer. Prendre l'habitude avec Firefox, IE : clic droit sur le lien, ouvrir dans une nouvelle fenêtre.
[/dotclear/themes/xxx/template.php]
<html ...>
<head>
(...)
<script type="text/javascript" src="js/newwindow.js"></script>
(...)
</head>
(...)
[/dotclear/js/newwindow.js]
/* les liens externes au site référencé ci-dessous sont ouverts
dans une nouvelle fenêtre.
Les liens internes au site sont ouverts dans la fenêtre en-cours */
function linksInNewWindow(a) {
var b=a?"site":"_self"; /* 1 seule fenêtre externe */
/*var b=a?"_blank":"_self"; multiplication des fenêtres */
var c=document.links;
for(var i=0;i<c.length;i++) {
if(c[i].href.search("site.com")==-1) c[i].target=b
};
var date=new Date();
date.setTime(date.getTime()+(14*24*60*60*1000));
document.cookie=a?"newwin=true; expires="+date.toGMTString()+";":"newwin=false;";
}
function init() {
linksInNewWindow(true);
}
addEvent(window, 'load', init);
/* Fonction utilitaire - auteur Scott Andrew */
function addEvent(obj, evType, fn){
if (obj.addEventListener){
obj.addEventListener(evType, fn, true);
return true;
} else if (obj.attachEvent){
var r = obj.attachEvent("on"+evType, fn);
return r;
} else {
return false;
}
}
pcc : padawan, Pep ...
pour les commentaires en mode wiki.
[layout/prepend.php ligne 241 $in_content = $objWiki->transform($c_content);]
240 $c_content = dcWikiCommentAutoUrl($c_content); // url auto, hack Pep
241 $in_content = $objWiki->transform($c_content);
[themes/xxx/prepend.php]
/* dcWikiCommentAutoUrl
* url auto en mode wiki; les chaines contenant une URL complète avec protocole
* (http:// https:// ftp://) en-tête et précédées d'un ou plusieurs espaces
* seront converties; ex.: http://www.dotclear.net
* les formats wiki sont inchangés; ex.: [DotClear|http://www.dotclear.net|fr]
* par Pep 21/12/2004
*/
function dcWikiCommentAutoUrl($string) {
$string = preg_replace_callback('/\s(http|https|ftp):(\/\/){0,1}([^\"\s]*)/i',
'dcWikiCommentParseUri',
$string);
return $string;
}
function dcWikiCommentParseUri($matches) {
$uri = $matches[1].':'.$matches[2].$matches[3];
$t = parse_url($uri);
$link = (strlen($matches[3]) > 25) ? substr($matches[3],0,25).'...' : $matches[3];
if (!empty($t['scheme'])) {
return ' ['.$link.'|'.$uri.']';
} else {
return $uri;
}
}
# fin dcWikiCommentAutoUrl
Modifier \dotclear\ecrire\poster.php pour y inclure le code de Paul James concernant Small, standards compliant, Javascript WYSIWYG HTML control
Bide total.
Par contre l'éditeur est opérationnel ici.
Les navigateurs Firefox et IE contiennent les fonctions nécessaires pour faire de l'édition de billets wysiwig. L'interface pour les utiliser a été faite par Paul James. Cette interface est constituée d'un code javascript,
Télégharger la version 1.0.
Voir le guide de personnalisation de la wikibarre.
Les parties à rajouter et modifier du fichier form.php du thème figurent ci-dessous entre début et fin du greffon de Pep.
<form action="<?php dcPostUrl(); ?>" method="post" id="comment-form">
<fieldset>
<?php dcCommentFormError('<div class="error"><strong>Erreurs :</strong>
<br /> %s</div>'); ?>
<?php dcCommentFormMsg('<p class="msg"><strong>%s</strong></p>'); ?>
<p class="field"><label for="c_nom">Nom ou pseudo :</label>
<input name="c_nom" id="c_nom" type="text" size="30" maxlength="255"
value="<?php dcCommentFormValue('c_nom'); ?>" />
</p>
<p class="field"><label for="c_mail">Email (facultatif) :</label>
<input name="c_mail" id="c_mail" type="text" size="30" maxlength="255"
value="<?php dcCommentFormValue('c_mail'); ?>" />
</p>
<p class="field"><label for="c_site">Site Web (facultatif) :</label>
<input name="c_site" id="c_site" type="text" size="30" maxlength="255"
value="<?php dcCommentFormValue('c_site'); ?>" />
</p>
<p class="field"><label for="c_content">Commentaire :</label>
<textarea name="c_content" id="c_content" cols="35" rows="7"><?php
dcCommentFormValue('c_content');
?></textarea>
</p>
</fieldset>
<?php /* barre de boutons pour commentaire
début du greffon de Pep */ ?>
<script type="text/javascript" src="<?php dcInfo('theme') ?>/toolbar.js"></script>
<script type="text/javascript">if (document.getElementById) {
var tb = new dcToolBar(document.getElementById('c_content'),
'wiki', '<?php dcInfo('theme') ?>/images/');
tb.btStrong('Forte emphase');
tb.btEm('Emphase');
tb.btIns('Inséré');
tb.btDel('Supprimé');
tb.btQ('Citation en ligne');
tb.btCode('Code');
tb.btBr('Saut de ligne');
tb.btPre('Texte préformaté');
tb.btList('Liste non ordonnée','ul');
tb.btList('Liste ordonnée','ol');
tb.btLink('Lien',
'URL ?',
'Langue ?',
'fr');
tb.addSpace(10);
tb.draw('');
}
</script>
<p class="form-help">
<strong>Le format d'édition <em>wiki</em> est actif.</strong>
<br/>
Si votre navigateur est compatible, vous pouvez vous aider de la barre d´outils.
<br/>
Le code HTML sera affiché comme du texte, les adresses internet seront converties
automatiquement.<br/>
</p>
<fieldset>
<p><input type="submit" name="preview" value="prévisualiser" />
<input type="submit" class="strong" value="envoyer" />
<input type="checkbox" id="c_remember" name="c_remember" />
<label for="c_remember" class="inline">Se souvenir de mes informations</label>
<input type="hidden" name="redir" value="<?php dcCommentFormRedir(); ?>" /></p>
</fieldset>
<?php /* fin du greffon de Pep */ ?>
</form>
Copier \dotclear\ecrire\js\toolbar.js dans le répertoire du thème. Modifier la
ligne 55, de
if (format.value == 'wiki') {
en
if (format == 'wiki') {
Dans dotclear.ini, vérifier ou modifier :
; Commentaires au format wiki ?
dc_wiki_comments = 1
Copier les images \dotclear\ecrire\images\bt_*.png vers le dossier images du thème.
Suppression de portes d'entrées potentielles
Free, répertoire sessions
Pour interdire la lecture des répertoires :
Masquer des informations
Source : Olivier.
Template par défaut. L'apparence des pages, identique pour la page d'accueil (home), la liste des billets par catégorie, archive, recherche (cat, month, search), ainsi que l'affichage d'un billet, ne permet pas par un affichage spécifique de savoir ou l'on est. De plus l'absence de liens visibles ne permet pas de naviguer aisément. Comment le visiteur s'y retrouve ?
Faire une page d'accueil ou de garde qui ne soit pas une liste. Modifier le template et rajouter un home.php.
La variable php $mode : home, cat, post, day, month, year, search si $home == 'cat'; alors $cat_id = 'nom de la catégorie' if (($home == 'cat')&($cat_id == 'Techniques du blogue')) : Dans les templates par défaut, DotClear traite le mode home (page de garde) comme un listage (catégories, mois...) C'est un limitation du template, pas du moteur. Il est tout à fait possible d'utiliser une présentation différente pour la home page. Le template par défaut a ce comportement : if ($err_msg != '') : /* Si on a une quelconque erreur, on l'affiche */ ... elseif ($preview) : /* Si on demande la prévisualisation d'un commentaire */ ... elseif ($mode != 'post') : /* Si aucune erreur et mode != post on affiche une liste de billets */ ... else : /* Sinon, mode = post, donc billet unique (avec commentaires et tout le reste)*/ ... endif Pour gèrer le cas particulier de la homepage, il suffit de rajouter un test : if ($err_msg != '') : /* Si on a une quelconque erreur, on l'affiche */ ... elseif ($preview) : /* Si on demande la prévisualisation d'un commentaire */ ... elseif ($mode == 'home') : /* On traite la homepage */ ... elseif ($mode != 'post') : /* Si aucune erreur et mode != post on affiche une liste de billets */ ... else : /* Sinon, mode = post, donc billet unique (avec commentaires et tout le reste)*/ ... endif En Copier-Coller : <?php elseif ($mode == 'home') : /* On traite la homepage */?> <?php include dirname(__FILE__).'/home.php'; ?> Ne pas oublier bien entendu de créer un home.php. Commencer à partir d'une copie de list.php peut être une bonne idée. Xave.
Préalable : l'utilisation du Clean Install avec le dc_loader rend la mise à jour de DotClear sure, simple, rapide et facile.
Le préalable au clean install est les données soient sauvegardées sur le disque dur local (celui de l'ordinateur client de l'administrateur). Leur sauvegarde sur des supports amovibles est recommandée. Il est préférable que les logiciels à installer soient également disponibles sur le disque local ou sur support amovible local.
Pour DotClear, on aura d'une part un répertoire de référence comportant la version inchangée; d'autre part le répertoire DotClear des modifications locales.
qui seront récupérés par upload de la version locale si nécessaire. Et le fichier dc_loader.php.
Ceci doit assurer que toutes les données au plus récent niveau sont disponibles en local, ainsi que l'ancienne et la nouvelle version de DotClear. Ceci exclu ou minimise aussi toute interférence entre ancienne et nouvelle version. Enfin, ceci permet le retour arrière ou de refaire l'installation.
La procédure de mise à jour sur le site DotClear effectue la sauvegarde de l'ancien DotClear sur le serveur (nouveau nom de répertoire pour le nouveau DotClear); puis des transferts de répertoire à répertoire sur le serveur. Elle n'est avantageuse que s'il faut revenir au DotClear ancien (jamais arrivé ici). Le clean install est aussi sur et plus direct; à préférer pour l'installation de versions stabilisées. Utiliser le dc_loader.php qui rend la mise en place des fichiers sur le serveur rapide et sans problème.
Clean install : on garde les données, on supprime la version en cours, on installe à partir de zéro. Pour Windows, format C:. Pas de mise à jour (update, upgrade), pas d'installation sur la version en cours. Le clean install assure qu'il n'y a pas d'éléments perturbateurs qui restent de l'ancienne installation.
MySQL 4.0.15 sur le serveur localhost - utilisateur root@localhost
Ne pas créer cvie. Onglet SQL depuis autre base, requête SQL : fichier texte cvie.sql.free.fr.sql. Suppression config.php si existe.
Pb création dans MySQL
#1054 - Champ '0x' inconnu dans field list
Remplacer 0x, par '', (à tester)
Ce thème n'est pas un exemple à suivre. Il y a suppression d'éléments du template dotclear non utilisés (calendrier ...), utilisation du design élastique qui prêtent à discussion sinon à polémique.
Le thème Tenue de soirée de Kozlika sert de base. On enlève la tenue de soirée (suppression des images).
Quelques petites modifications :
Modif de lire la suite dans list.php
dcPostAbstract('%s', "\n".'<p><img src="'.$GLOBALS['theme_uri'].dc_theme.'/images/fleche.gif"
width="11" height="9" alt="Flèche" /> <a href="%s">lire la suite</a></p>');
Modif du prelude pour afficher la catégorie, le thème et l'auteur du thème
<p id="prelude">
<span><?php dcSingleCatTitle(); ?></span>
<?php if ($mode == 'post') : ?>
<a href="<?php dcPostCatURL(); ?>">Billet de <?php dcPostCatTitle();
?></a> <span>-</span>
<?php endif; ?>
<span><?php dcThemesInfo('label') ?> : création de <?php dcThemesInfo('author')
?></span></p>
Les autres modifs dans le CSS
Valid XHTML 1.0! Valid CSS! le 19/9/04 15:00
Mettre dans head :
<?php if ($mode == 'post') : ?>
<link rel="stylesheet" type="text/css" href="<?php dcInfo('theme');
?>/style-billet.css" media="screen" />
<?php else : ?>
<link rel="stylesheet" type="text/css" href="<?php dcInfo('theme');
?>/style.css" media="screen" />
<?php endif; ?>
ce qui permet toute liberté, par exemple de supprimer le sidebar, d'allouer la place rendue disponible au contenu du billet, d'afficher de grandes images ...
Afficher la catégorie à la place du nom du blogue, pour le billet, pour une navigation Accueil, Catégorie, Billet et retour :
<div id="top">
<h1>
<?php if ($mode == 'post') : ?>
Billet de <a href="<?php dcPostCatURL(); ?>"><?php dcPostCatTitle();
?></a>
<?php else : ?>
<a href="<?php dcInfo('url'); ?>"><?php dcInfo(); ?></a>
<?php endif; ?>
</h1>
</div>
Rajouter un Retour à l'accueil dans l'affichage d'un billet, pour faciliter la navigation :
<p id="prelude">
<span><?php dcSingleCatTitle(); ?></span>
<?php if ($mode == 'post') : ?>
<a href="<?php dcPostCatURL(); ?>">Billet</a>
<span>-</span>
<?php endif; ?>
<span><?php dcThemesInfo('label') ?> : création de
<?php dcThemesInfo('author') ?></span>
<?php if ($mode == 'post') : ?>
<a href="<?php dcInfo('url'); ?>">- Retour accueil</a>
<?php endif; ?></p>
Le thème koz-redux est une évaluation partielle de pb résumés dans le commentaire suivant :
Le visiteur est paumé
Critiquons vigoureusement : de toute façon il l'est. La page d'accueil comporte la liste des billets récents (c'est bien), mais rien n'indique qu'il s'agit de la page d'accueil.
La page d'une rubrique comporte aussi la liste de billets et est quasi identique à la page d'accueil (je sais, le nom de la catégorie dans le sidebar est en surbrillance : faut savoir, insuffisant, peut mieux faire). Et pas d'identification explicite de la rubrique en cours.
De même pour l'affichage du billet : pas d'identification explicite de la rubrique (je sais, ici François a fait un effort en fin de billet, mais peut mieux faire. Il s'est donc rendu compte qu'il y avait pb).
Navigation : les retours à la liste des billets et à l'accueil devraient apparaitre de façon claire, dans l'en-tête par ex.
Il faut aussi rappeller que la partie la plus importante de DotClear est le code hors thèmes ou excelle Olivier. Que le template d'origine est au départ un simple exemple, mais que le travail qu'il fait sur le thème par défaut (validation sur différentes configurations et plateformes) font de celui-ci une référence. Que ceux qui se passionnent pour les thèmes font surtout du design d'apparence (et il en faut, merci Kozlika). Bref, vouloir modifier le template sur des questions de navigation ou de présentation spécifique des catégories et des billets apparait difficile.
Référencement du thème
On visualise les infos du thème dans template.php par
<?php dcThemesInfo('label') ?>
<?php dcThemesInfo('desc') ?>
<?php dcThemesInfo('author') ?>
<?php dcThemesInfo('version') ?>
Exemple d'affichage dans le prelude (plus le nom de catégorie)
<p id="prelude">
<?php dcSingleCatTitle(); ?>
<?php if ($mode == 'post') : ?>
<a href="<?php dcPostCatURL(); ?>">Billet de <?php dcPostCatTitle(); ?></a> -
<?php endif; ?>
<?php dcThemesInfo('label') ?> : création de <?php dcThemesInfo('author') ?></p>
Exemple d'affichage dans le footer
<p id="footer"><a href="http://www.dotclear.net/">
propulsé par DotClear</a><br />
<?php dcThemesInfo('label') ?> : création de <?php dcThemesInfo('author') ?>
</p>
Ces informations peuvent bien entendu être mises à l'emplacement désiré. Elles viennent du desc.xml dont on soignera les libellés.
Pas de conseil spécifique, à part l'évidence, la faire dans le style.css. Discret, voyant ..., et de préférence en adéquation avec le design du thème.
Code publié par Yves dans le forum. La fonction dcThemesInfo (et l'ensemble du code ci-dessous) est mise dans le prepend.php du thème, ce qui l'active pour la partie publique du blogue.
$themes_root = dirname(__FILE__).'/../../themes';
$themes = new plugins($themes_root,'theme');
$themes->getPlugins(false);
$themes_list = $themes->getPluginsList();
# Information sur le theme:
function dcThemesInfo($info)
{
global $themes_list,$__theme;
echo __($themes_list[$__theme][$info]);
}
Les fonctions sont dans layout/functions.php. On créera de nouvelles fonctions sur le même modèle dans le fichier prepend.php du thème, qui seront incluses automatiquement dans la partie publique du blogue. Exemple :
function dcVersion()
{
echo DC_VERSION;
}
Modif existant, exemple :
function dcCommentAuthorLink($s='%s')
{
if (($link = $GLOBALS['comments']->auteurLink()) !== false) {
printf($s,$link);
}
}
suivre la fonction auteurLink() :
elle ne retourne qu'une version "encodée" du f('comment_email')
définir une nouvelle fonction dans le prepend.php du theme :
function dcCommentAuthorLinkClear($s='%s')
{
if (($link = $GLOBALS['comments']->f('comment_email')) !== false) {
printf($s,$link);
}
}
remplacer dans le template l'ancien gabarit par le nouveau
dcCommentAuthorLink -> dcCommentAuthorLinkClear
Noter que l'on peut afficher directement le numéro de version de DotClear par
<?php echo DC_VERSION; ?>
Afficher les sites des commentateurs, d'abord le template
[/template/post.php lignes 86-88]
par <strong><?php dcCommentAuthor(); ?></strong> <?php dcCommentAuthorSite('::
<a href="%s">site</a>'); ?>
Par <strong><?php dcCommentAuthorSite('%s'); ?><?php dcCommentAuthor();
?><?php dcCommentAuthorSite2('%s'); ?></strong> :
modifier la fonction
[/layout/functions.php dcCommentAuthorSite lignes 927 928]
if (($link = $GLOBALS['comments']->auteurSite()) !== false) { printf($s,$link); }
if (($link = $GLOBALS['comments']->auteurSite()) !== false) { printf($s,"<a href=\"$link\"
title=\"Visiter son site\">"); } else { printf($s,""); }
rajouter la fonction
[/layout/functions.php dcCommentAuthorSite2]
function dcCommentAuthorSite2($s='%s')
{
if (($link = $GLOBALS['comments']->auteurSite()) !== false) { printf($s,"</a>");
} else { printf($s,""); }
}
}
"Lire la suite" et le nombre de commentaires en une seule ligne
[/template/list.php lignes 39]
<?php dcPostAbstract('%s'); ?> <a title="Lire les commentaires" href="<?php dcPostURL();
?>#co">Commentaires (<?php dcPostNbComments('0','1','%s'); ?>)</a>
<span class="plus"><a title="Voir les trackbacks" href="<?php dcPostURL(); ?>#tb">
<?php dcPostNbTrackbacks('','(1 trackback)','(%s trackbacks)'); ?></a></span></h3>
rappel rajout flêche
[/template/list.php lignes 39]
dcPostAbstract('%s', "\n".'<p><img src="'.$GLOBALS['theme_uri'].dc_theme.'/images/fleche.gif"
width="11" height="9" alt="Flèche" /> <a href="%s">lire la suite</a></p>');
modifier la fonction
[/layout/functions.php lignes 573 sqq]
function dcPostAbstract($s='%s',$l='<h3 class="light"><span class="plus"><a href="%s">Lire
la suite</a></span>')
Pour Firefox 0.9.3 et IE 6 (Yves) :
<div class="image"><p>
<a href="/blog/images/livebooks.png" onclick="oImg = new Image();
oImg.src = this.href; w=window.open(this.href,'photo','width=oImg.width +20
,height=oImg.height + 45 ,top=100, left=100, toolbar=no, menubar=yes,
location=no, resizable=yes, scrollbars=no, status=no'); w.focus();
w.onpaint=w.resizeTo(oImg.width +28,oImg.height + 75 ); return false;" >
<img src="/blog/images/livebooks.png" alt="écran Firefox" />
</a></p></div>
dans layout/prepend.php, à la ligne :
# Dernières nouvelles
$news = $blog->getLastNews(dc_nb_post_per_page,$cat_id,'post_dt DESC');
remplacer DESC par ASC
Il est préférable de laisser dotclear dans un répertoire puis déplacer uniquement le fichier index.php à la raçine et changer la variable $app_path (ou un truc dans ce genre) pour qu'elle pointe au bon endroit.
<head>
<meta http-equiv="refresh" content="0;URL=http://www.le nouveausite.com">
</head>