Par URL propres arborescentes, tu entends /dossiers/rubrique/article ?
nicolas@hoizey.com a écrit :
Author: nicolas@hoizey.com
Date: Thu Jan 10 09:48:06 2008
New Revision: 17944Log:
Toute premiere version d'un plugin permettant d'obtenir le plus facilement possible des URL propres arborescentes. En fait une simple « pluginisation » d'un patch que j'avais propose pour "urls/propres.php". cf http://trac.rezo.net/trac/spip/ticket/1148Encore quelques soucis avec CFG, mais la version stable ne devrait pas trop tarder.
Added:
_plugins_/_dev_/urls_propres_arborescentes/
_plugins_/_dev_/urls_propres_arborescentes/fonds/
_plugins_/_dev_/urls_propres_arborescentes/fonds/cfg_urlspropresarbo
_plugins_/_dev_/urls_propres_arborescentes/htaccess.txt
_plugins_/_dev_/urls_propres_arborescentes/plugin.xml
_plugins_/_dev_/urls_propres_arborescentes/urls/
_plugins_/_dev_/urls_propres_arborescentes/urls/propres_arborescentes.phpAdded: _plugins_/_dev_/urls_propres_arborescentes/fonds/cfg_urlspropresarbo
--- _plugins_/_dev_/urls_propres_arborescentes/fonds/cfg_urlspropresarbo (added)
+++ _plugins_/_dev_/urls_propres_arborescentes/fonds/cfg_urlspropresarbo Thu Jan 10 09:48:06 2008
@@ -0,0 +1,19 @@
+#CACHE{0}
+[(#REM) titre=URLs propres arborescentes]
+[(#REM) descriptif=<h4>Configuration des URLs propres arborescentes</h4>]
+<form method="post">[(#ENV{_cfg_}|form_hidden)]
+ <fieldset><legend>Préfixes et sufixes</legend>
+ <p>
+ <label>Suffixe des URLs de rubriques :</label>
+ <select name="suffixe_rubriques" id="suffixe_rubriques">
+ <option value="html">.html</option>
+ <option value="dir">/</option>
+ </select>
+ </p>
+ <p>
+ <label>Préfixer les URLs de groupes de mots clefs avec « Mots-Clefs/ » ?</label>
+ <input type="checkbox" name="prefixe_mots" id="prefixe_mots" />
+ </p>
+ </fieldset>
+ <input type="submit" name="_cfg_ok" value="<:OK:>" />
+</form>
\ No newline at end of fileAdded: _plugins_/_dev_/urls_propres_arborescentes/htaccess.txt
--- _plugins_/_dev_/urls_propres_arborescentes/htaccess.txt (added)
+++ _plugins_/_dev_/urls_propres_arborescentes/htaccess.txt Thu Jan 10 09:48:06 2008
@@ -0,0 +1,72 @@
+RewriteEngine On
+
+################ CONFIGURATION ############################
+
+# Si votre site est dans un sous-repertoire, preciser ci-dessous
+# le nom du sous-repertoire, et supprimer le '#'
+# Chez certains hebergeurs il faut indiquer "RewriteBase /"
+
+#RewriteBase /sous/repertoire/
+
+################ REGLAGES PERSONNALISES ###################
+
+# -----------------------------------------------------------------------------------
+# Regles generales
+# -----------------------------------------------------------------------------------
+
+# Ramener a la racine les dossiers de ressources et du back office
+RewriteCond %{REQUEST_URI} !^(ecrire|IMG|dist|plugins|oo|local)/
+RewriteRule ^(.*)?/(ecrire|IMG|dist|plugins|oo|local)/(.*) /$2/$3 [QSA,R,L]
+
+################ GESTIONS DES URLS SPIP ###################
+
+#####
+# Si le fichier ou repertoire demande existe
+# ignorer toutes les regles qui suivent
+
+RewriteCond %{REQUEST_FILENAME} -f
+RewriteRule "." - [skip=100]
+RewriteCond %{REQUEST_FILENAME} -d
+RewriteRule "." - [skip=100]
+
+#####
+# Compatibilite avec les URLS "html" (pour transition sympa)
+# voir fichier ecrire/urls/html.php3
+
+RewriteRule rubrique([0-9]+)\.html$ spip.php?page=rubrique&id_rubrique=$1 [QSA,L]
+RewriteRule article([0-9]+)\.html$ spip.php?page=article&id_article=$1 [QSA,L]
+RewriteRule breve([0-9]+)\.html$ spip.php?page=breve&id_breve=$1 [QSA,L]
+RewriteRule mot([0-9]+)\.html$ spip.php?page=mot&id_mot=$1 [QSA,L]
+RewriteRule auteur([0-9]+)\.html$ spip.php?page=auteur&id_auteur=$1 [QSA,L]
+RewriteRule site([0-9]+)\.html$ spip.php?page=site&id_syndic=$1 [QSA,L]
+
+#####
+# Compatibilite avec les anciennes URLS appelant directement des fichiers php
+
+RewriteRule ^(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|resume|sommaire|sommaire_texte)\.php3?$ spip.php?page=$1 [QSA,L]
+RewriteRule ^page.php[3]? spip.php [QSA,L]
+RewriteRule ^spip_cal\.php3?$ spip.php?action=ical [QSA,L]
+RewriteRule ^spip_rss\.php3?$ spip.php?action=rss [QSA,L]
+
+#####
+# URLs "propres"
+
+RewriteRule ^$ spip.php?page=sommaire [QSA,L]
+RewriteRule ^.*$ spip.php?page=type_urls [QSA,E=url_propre:$0,L]
+
+################ DIVERS ###################################
+
+#####
+# bloquer les acces aux repertoires .svn/ (SPIP, plugins, squelettes...)
+
+RewriteRule ^(.*/)?\.svn/ - [F]
+
+#####
+# expirer les images (pour contourner gros bug MSIE sur le cache)
+
+<IfModule mod_expires.c>
+ ExpiresActive on
+ ExpiresByType image/gif A3600
+ ExpiresByType image/jpeg A3600
+ ExpiresByType image/png A3600
+</IfModule>Added: _plugins_/_dev_/urls_propres_arborescentes/plugin.xml
--- _plugins_/_dev_/urls_propres_arborescentes/plugin.xml (added)
+++ _plugins_/_dev_/urls_propres_arborescentes/plugin.xml Thu Jan 10 09:48:06 2008
@@ -0,0 +1,16 @@
+<plugin>
+ <nom>URLs propres arborescentes</nom>
+ <auteur>Nicolas Hoizey © 2008 - Licence GNU/GPL</auteur>
+ <version>0.1</version>
+ <etat>dev</etat>
+ <description>
+Ce plugin (pour SPIP 1.9.3+) permet d'obtenir des URLs arborescentes pour tous les contenus, l'arborescence étant celle des rubriques ou des groupes de mots clefs.
+
+Il nécessite la mise en place des règles de réécriture d'URL présentes dans le fichier htaccess.txt
+
+Reste à faire :
+-* Ouvert à toute proposition d'amélioration...
+ </description>
+ <chemin dir='' />
+ <prefix>urlspropresarbo</prefix>
+</plugin>
\ No newline at end of fileAdded: _plugins_/_dev_/urls_propres_arborescentes/urls/propres_arborescentes.php
--- _plugins_/_dev_/urls_propres_arborescentes/urls/propres_arborescentes.php (added)
+++ _plugins_/_dev_/urls_propres_arborescentes/urls/propres_arborescentes.php Thu Jan 10 09:48:06 2008
@@ -0,0 +1,489 @@
+<?php
+/***************************************************************************\
+ * SPIP, Systeme de publication pour l'internet *
+ * *
+ * Copyright (c) 2001-2007 *
+ * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
+ * *
+ * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
+ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return; // securiser
+if (!function_exists('generer_url_article')) { // si la place n'est pas prise
+
+// TODO: une interface permettant de verifier qu'on veut effectivement modifier
+// une adresse existante
+define('CONFIRMER_MODIFIER_URL', false);
+
+include_spip('base/abstract_sql');
+
+/*
+
+- Comment utiliser ce jeu d'URLs ?
+
+Recopiez le fichier "htaccess.txt" du repertoire de base du plugin sous
+le sous le nom ".htaccess" (attention a ne pas ecraser d'autres reglages
+que vous pourriez avoir mis dans ce fichier) ; si votre site est en
+"sous-repertoire", vous devrez aussi editer la ligne "RewriteBase" ce fichier.
+Les URLs definies seront alors redirigees vers les fichiers de SPIP.
+
+Definissez ensuite dans ecrire/mes_options.php :
+ < ?php $type_urls = 'propres_arborescentes'; ? >
+SPIP calculera alors ses liens par défaut sous la forme suivante :
+ "Titre-de-rubrique/Titre-d-article.html".
+
+Support de l'arborescence des rubriques, groupes de mots clefs, etc., dans
+les URL propres (necessite pour l'instant des URL absolues dans les squelettes
+pour charger les CSS, JS, etc.) :
+ define('_urls_propres_arborescentes', true);
+
+Les URL integralement en minuscules :
+ define('_urls_en_minuscules', true);
+*/
+
+define ('_terminaison_urls_propres', '');
+define ('_debut_urls_propres', '');
+define ('_urls_propres_arborescentes', true);
+define('_urls_en_minuscules', true);
+
+// Ces chaines servaient de marqueurs a l'epoque ou les URL propres devaient
+// indiquer la table ou les chercher (articles, auteurs etc),
+// et elles etaient retirees par les preg_match dans la fonction ci-dessous.
+// Elles sont a present definies a "" pour avoir des URL plus jolies
+// mais les preg_match restent necessaires pour gerer les anciens signets.
+
+#define('_MARQUEUR_URL', serialize(array('rubrique1' => '-', 'rubrique2' => '-', 'breve1' => '+', 'breve2' => '+', 'site1' => '@', 'site2' => '@', 'auteur1' => '_', 'auteur2' => '_', 'mot1' => '+-', 'mot2' => '-+')));
+define('_MARQUEUR_URL', false);
+
+// Retire les marqueurs de type dans une URL propre ancienne maniere
+
+// http://doc.spip.org/@retirer_marqueurs_url_propre
+function retirer_marqueurs_url_propre($url_propre) {
+ if (preg_match(',^[+][-](.*?)[-][+]$,', $url_propre, $regs)) {
+ return $regs[1];
+ }
+ else if (preg_match(',^([-+_@])(.*?)\1?$,', $url_propre, $regs)) {
+ return $regs[2];
+ }
+ // les articles n'ont pas de marqueur
+ return $url_propre;
+}
+
+// Pipeline pour creation d'une adresse : il recoit l'url propose par le
+// precedent, un tableau indiquant le titre de l'objet, son type, son id,
+// et doit donner en retour une chaine d'url, sans se soucier de la
+// duplication eventuelle, qui sera geree apres
+// http://doc.spip.org/@creer_chaine_url
+function creer_chaine_url($x) {
+ // NB: ici url_old ne sert pas, mais un plugin qui ajouterait une date
+ // pourrait l'utiliser pour juste ajouter la
+ $url_old = $x['data'];
+ $objet = $x['objet'];[... 408 lines stripped ...]
_______________________________________________
Spip-zone-commit@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone-commit