Forum dédié au moteur de recherche et aux techniques d'optimisation par #taggle
Vous n'�tes pas identifi�.
C'est bon... ça le fait... J'ai maintenant de superbes url sur http://football.americas-fr.com
mais j'ai un problème avec les catégories... il retrouve plus les liens ... idem au niveau du calendrier
Hors ligne
bon... j'ai fait marche arrière en attendant de trouver une solution.
Peux pas laisser un truc avec des erreurs 404 sur ces liens
Hors ligne
Par contre, on a pas pris en compte le flux Rss, car les url n'ont pas été modifiées à l'interieur.
Je ne peux pas vous proposer la solution, car je n'ai pas réussi à la trouver
Hors ligne
Salut et merci
A l'occaze tu peux nous filer aussi le Hack pour passer les URL's en HTML ?
Hors ligne
URLs du type : /id-du-billet-titre-du-billet.html
- Créer un .htaccess à la racine :
RewriteEngine on RewriteRule ^(.*).html$ /?$1
- Installer le plugin Personnalisation d'URL :
>http://tw.apinc.org/stuff/plugin-twurlmod-0.2.pkg.gz
>aller dans les options du plugin et cocher Utiliser "Sans date (numéro-titre)"
>cocher toutes les cases Reconnaître
- Modification du fichier /themes/default/list.php
> Tout remplacer par :
<!-- Boucle sur la liste de billets --> <?php while ($news->fetch()) : $url_rewrite = str_replace('/?','',$GLOBALS['news']->getPermURL()).'.html'; ?> <div class="post"> <?php dcDayDate('<p class="day-date">%s</p>'); ?> <h2 id="p<?php dcPostID(); ?>" class="post-title"><a href="<?php echo $url_rewrite; ?>"><?php dcPostTitle(); ?></a></h2> <p class="post-info">Par <?php dcPostAuthor(); ?>, <?php dcPostDate(); ?> à <?php dcPostTime(); ?> <span>::</span> <a href="<?php dcPostCatURL(); ?>"><?php dcPostCatTitle(); ?></a> </p> <div class="post-content" <?php dcPostLang(); ?>> <?php dcPostAbstract('%s','<p><a href="'.$url_rewrite.'" title="Lire %s">Lire la suite</a></p>'); ?> </div> <p class="post-info-co"><a href="<?php echo $url_rewrite; ?>#co" title="commentaires pour : <?php dcPostTitle(); ?>"><?php dcPostNbComments('aucun commentaire','un commentaire','%s commentaires'); ?></a> <span>::</span> <a href="<?php echo $url_rewrite; ?>#tb" title="trackbacks pour : <?php dcPostTitle(); ?>"><?php dcPostNbTrackbacks('aucun trackback','un trackback','%s trackbacks'); ?></a></p> </div> <?php endwhile; ?>
(Rajouter <?php if ($mode == 'pagination') dcPagination::showNavigation(); ?> après endwhile;?> si nécessaire !)
Hors ligne
Modification des liens dans les flux
- modifier le fichier layout/class.xblogpost.php :
<?php class xblogpost extends blogpost { # Contenu (avec ou sans smilies) function getContent() { if ($this->blog->use_smilies) { return $this->blog->addSmilies($this->f('post_content')); } else { return $this->f('post_content'); } } function getChapo() { if ($this->blog->use_smilies) { return $this->blog->addSmilies($this->f('post_chapo')); } else { return $this->f('post_chapo'); } } function openComment() { return ( dc_allow_comments && $this->f('post_open_comment') && (dc_comments_ttl == 0 || time()-(dc_comments_ttl*86400) < $this->getTS()) ); } function openTb() { return ( dc_allow_trackbacks && $this->f('post_open_tb') && (dc_comments_ttl == 0 || time()-(dc_comments_ttl*86400) < $this->getTS()) ); } # Liens vers tous les billets pour l'en tête function getHeadLinks() { $res = ''; $index = $this->int_index; $this->moveStart(); while (!$this->EOF()) { $url_rewrite = str_replace('/?','/',$this->getPermURL()).'.html'; $res .= '<link rel="chapter" href="'.$url_rewrite.'" '. 'title="'.$this->f('post_titre').'" />'."\n"; $this->moveNext(); } $this->move($index); return $res; } function nbComments($zero,$one,$more) { $nb = $this->f('nb_comment'); if($nb == 0) { return $zero; } elseif($nb == 1) { return $one; } elseif($nb > 1) { return sprintf($more,$nb); } } function firstPostOfDay() { $prev_dt = NULL; if($this->movePrev()) { $prev_dt = $this->getLDate(); $this->moveNext(); } if($prev_dt == NULL || $prev_dt != $this->getLDate()) { return true; } else { return false; } } function getRSSSeq() { $url_rewrite = str_replace('/?','/',$this->getPermURL()).'.html'; return ' <rdf:li rdf:resource="'.$url_rewrite.'" />'."\n"; } function getRSSItem($short=false) { $url_rewrite = str_replace('/?','/',$this->getPermURL()).'.html'; if ($this->f('post_chapo') != '') { $desc = strip_tags($this->f('post_chapo')); } else { $desc = util::cutString(strip_tags($this->f('post_content')),300).'...'; } if ($short) { $content = $desc; } else { $content = $this->f('post_chapo').' '.$this->f('post_content'); } return '<item rdf:about="'.$url_rewrite.'">'."\n". ' <title>'.$this->blog->toXML($this->f('post_titre'))."</title>\n". ' <link>'.$url_rewrite."</link>\n". ' <dc:date>'.$this->getIsoDate()."</dc:date>\n". (($this->f('post_lang')) ? ' <dc:language>'.$this->f('post_lang')."</dc:language>\n" : ''). ' <dc:creator>'.htmlspecialchars($this->getUserCN())."</dc:creator>\n". ' <dc:subject>'.htmlspecialchars($this->f('cat_libelle'))."</dc:subject>\n". ' <description>'.$this->blog->toXML($desc)."</description>\n". ' <content:encoded><![CDATA['.$content."]]></content:encoded>\n". '</item>'."\n"; } function getAtomEntry($short=false) { $url_rewrite = str_replace('/?','/',$this->getPermURL()).'.html'; if ($this->f('post_chapo') != '') { $desc = strip_tags($this->f('post_chapo')); } else { $desc = util::cutString(strip_tags($this->f('post_content')),300).'...'; } if ($short) { $content = $desc; } else { $content = $this->f('post_chapo').' '.$this->f('post_content'); } return '<entry' . (($this->f('post_lang')) ? ' xml:lang="'.$this->f('post_lang').'"' : ''). '>'."\n". ' <title>'.$this->blog->toXML($this->f('post_titre'))."</title>\n". ' <link rel="alternate" type="text/html" href="'.$url_rewrite.'" />'."\n". ' <issued>'.$this->getIsoDate()."</issued>\n". ' <modified>'.$this->getIsoDate()."</modified>\n". ' <id>'.$url_rewrite."</id>\n". ' <author><name>'.htmlspecialchars($this->getUserCN())."</name></author>\n". ' <dc:subject>'.htmlspecialchars($this->f('cat_libelle'))."</dc:subject>\n". ' <summary>'.$this->blog->toXML($desc)."</summary>\n". ' <content type="text/html" mode="escaped">'.htmlspecialchars($content)."</content>\n". '</entry>'."\n"; } } ?>
- modifier le fichier layout/class.xblogcomment.php :
<?php class xblogcomment extends blogcomment { # Extraction des trackbacks dans un autre recordset function extractTrackbacks() { $res = array(); foreach ($this->arry_data as $k => $v) { if ($v['comment_trackback'] == 1) { $res[] = $v; unset($this->arry_data[$k]); } } $this->recordSet(array_values($this->arry_data)); $rs = new xblogcomment($res); $rs->setBlog($this->blog); return $rs; } function auteurLink() { if($this->f('comment_email') != '') { return $this->getEncodMail(); } else { return false; } } function auteurSite() { if($this->f('comment_site') != '') { return 'http://'.$this->f('comment_site'); } else { return false; } } function xGetContent() { if ($this->blog->use_smilies) { return $this->blog->addSmilies($this->getContent()); } else { return $this->getContent(); } } function getRSSSeq() { $url_rewrite = str_replace('/?','/',$this->getPermURL()).'.html'; $id_comment = ereg('#c([0-9]+)', $url_rewrite, $id_c); $url_rewrite = str_replace('#c'.$id_c[1], '', $url_rewrite); $url_rewrite = $url_rewrite.'#c'.$id_c[1]; return ' <rdf:li rdf:resource="'.$url_rewrite.'" />'."\n"; } function getRSSItem($short=false) { $url_rewrite = str_replace('/?','/',$this->getPermURL()).'.html'; $id_comment = ereg('#c([0-9]+)', $url_rewrite, $id_c); $url_rewrite = str_replace('#c'.$id_c[1], '', $url_rewrite); $url_rewrite = $url_rewrite.'#c'.$id_c[1]; $tb = (boolean) $this->f('comment_trackback'); $desc = util::cutString(strip_tags($this->getContent()),300).'...'; $content = ($short) ? $desc : $this->getContent(); return '<item rdf:about="'.$url_rewrite.'">'."\n". ' <title>'.($tb ? 'trackback - ' : ''). $this->blog->toXML($this->f('post_titre')).' - '. $this->blog->toXML($this->f('comment_auteur'))."</title>\n". ' <link>'.$url_rewrite."</link>\n". ' <dc:date>'.$this->getIsoDate()."</dc:date>\n". ' <dc:creator>'.htmlspecialchars($this->f('comment_auteur'))."</dc:creator>\n". ' <description>'.$this->blog->toXML($desc)."</description>\n". ' <content:encoded><![CDATA['.$content."]]></content:encoded>\n". '</item>'."\n"; } function getAtomEntry($short=false) { $url_rewrite = str_replace('/?','/',$this->getPermURL()).'.html'; $id_comment = ereg('#c([0-9]+)', $url_rewrite, $id_c); $url_rewrite = str_replace('#c'.$id_c[1], '', $url_rewrite); $url_rewrite = $url_rewrite.'#c'.$id_c[1]; $tb = (boolean) $this->f('comment_trackback'); if ($short) { $content = util::cutString(strip_tags($this->getContent()),300).'...'; } else { $content = $this->getContent(); } return '<entry>'."\n". ' <title>'.($tb ? 'trackback - ' : ''). $this->blog->toXML($this->f('post_titre')).' - '. $this->blog->toXML($this->f('comment_auteur'))."</title>\n". ' <link rel="alternate" type="text/html" href="'.$url_rewrite.'"/>'."\n". ' <issued>'.$this->getIsoDate()."</issued>\n". ' <modified>'.$this->getIsoDate()."</modified>\n". ' <id>'.$url_rewrite."</id>\n". ' <author><name>'.htmlspecialchars($this->f('comment_auteur'))."</name></author>\n". ' <content type="text/html" mode="escaped">'.htmlspecialchars($content)."</content>\n". '</entry>'."\n"; } } ?>
Hors ligne
Quelle performance !!!
Super, et vraiment merci Rottman.
Hors ligne
Merci Rottman,
Je suis sur que sa sera utile
@
Hors ligne
Salut,
J'ai essayé de suivre le tuto à la lettre cepndant je n'obtiens pas tout à fait le même resultat
Chez RottMan : http://www.voyages-en-ligne.info/2-un-autre-billet.html
Chez moi : http://www.carcassonne-web.com/index.ph … -post.html
J'ai toujours ce fichu index.php? qui me dérange ? Ai je loupé une étape ?
Merci chris
Hors ligne
Bizarre, ton dotclear est bien installé en mode Query String ?
dans configuration, "URL vers le weblogue :" est bien / et non index.php ?
Pour l'exemple que j'ai donné, j'ai rien fait d'autre que l'installer et effectuer les étapes ci-dessus.
Derni�re modification par Rottman (05-04-2006 08:29:57)
Hors ligne
Oups, j'ai presque honte
Un grand merci à toi !
PS : fais moi signe sur Gtalk ou mail à l'occaze
Hors ligne
Yop, à la suite des 2 mods ci-dessus,
Rewriter les liens des catégories
- Ouvrir le fichier functions.php dans le repertoire layout
Vers la ligne 360 vous avez quelque chose comme :
$id = $rs_cat->f('cat_libelle_url'); $libelle = $rs_cat->f('cat_libelle'); // DES TRUCS $res .= sprintf($item,$lien);
vous supprimez ce qu'il y'a à la place de // DES TRUCS et vous y mettez :
$url_rewrite = str_replace('/?','/', sprintf($blog->front_url['cat'],$comp_url.$id)).'.html'; $lien = '<a href="'.$url_rewrite.'">'.$libelle.'</a>';
Hors ligne
Hello
Je viens d'installer dotclear sur deux sites (un sur ovh l'autre sur nfrance)
j'ai le meme probleme qu'Americas :
j'obtiens des urls qui fonctionnent de la forme :
http://www.site.com/repertoire/index.ph … du-message
J'ai installé le script non pas à la racine mais sur un répertoire
Je voudrais donc virer le "index.php"
si je le vire via htaccess, j'obtiens des 404
j'ai utilisé path info et non query string vu que après avoir tenté la méthode de rottman ca n'a pas marché...
Si quelqu'un a depuis trouvé la solution !
Merci Charlie
Hors ligne