[4.3]proposition approche urlrewriting simplifié, testez

février 2010 modifié dans Discussions générales
Bonjour,

A l'occasion de cette version stable , je propose de tester une nouvelle approche sur une réecriture d'url partielle dans Pluxml ,en ne touchant que deux fichiers :index.php et feed.php.
Une mise a jour est relativement aisé ,en faisant un backup de ces deux fichiers ou en y reportant les modifications .

Cette approche enleve le 'point d'interrogation dans les url coté public et flux , pour les articles , rubriques , page statiques et pagination.
Celles-ci peuvent etre renommer : static en extra par exemple.

Les url relatives sont gerer par la balise <base> sans avoir a modifier vos thèmes.

Les url vers les flux , et dans l'administration ne sont pas réécrites.

Un fichier htaccess est ajouté a la racine et contient ceci :
edition: m.a.j de l'exemple pour prendre en charge l'exemple des pages statique virtuellement placé dans extra/
RewriteEngine on

#avant de lancer la reecriture , on verifie que les repertoires ou fichiers demander existent (accés admin , images par exemple)
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-l

# Et enfin si la page demander ne correspond pas a un fichier ou repertoire existant , on applique la réecriture.	
	#reinjection du systeme d'url de pluxml . original et tri sur modification
  RewriteRule ^(!extra|article|page|categorie)(.*)$ ?$1$2 [L]
  RewriteRule ^extra([0-9])(.*)$ ?static$1$2 [L]
Le fichier index.php :
<?php
# ------------------ BEGIN LICENSE BLOCK ------------------
#
# This file is part of PluXml : http://pluxml.org/?categorie3/a-propos-de-pluxml
#
# Copyright (c) 2008-2009 Florent MONTHEL and contributors
# Copyright (c) 2006-2008 Anthony GUERIN
# Licensed under the GPL license.
# See http://www.gnu.org/licenses/gpl.html
#
# ------------------- END LICENSE BLOCK -------------------

# Configuration avançée #
define('PLX_ROOT', './');
define('PLX_CORE', PLX_ROOT.'core/');
define('PLX_CONF', PLX_ROOT.'data/configuration/parametres.xml');

# On verifie que PluXml est installé
if(!file_exists(PLX_CONF)) {
	header('Location: '.PLX_ROOT.'install.php');
	exit;
}

# On inclut les librairies nécessaires
include(PLX_ROOT.'config.php');
include(PLX_CORE.'lib/class.plx.date.php');
include(PLX_CORE.'lib/class.plx.utils.php');
include(PLX_CORE.'lib/class.plx.capcha.php');
include(PLX_CORE.'lib/class.plx.erreur.php');
include(PLX_CORE.'lib/class.plx.glob.php');
include(PLX_CORE.'lib/class.plx.record.php');
include(PLX_CORE.'lib/class.plx.motor.php');
include(PLX_CORE.'lib/class.plx.feed.php');
include(PLX_CORE.'lib/class.plx.show.php');
include(PLX_CORE.'lib/class.plx.encrypt.php');

# Creation de l'objet principal et lancement du traitement
$plxMotor = new plxMotor(PLX_CONF);
$plxMotor->prechauffage();
$plxMotor->demarrage();

# Creation de l'objet d'affichage
$plxShow = new plxShow($plxMotor);

# On démarre la bufferisation
ob_start();

# On charge les fichiers du thème
if($plxMotor->style == '' or !is_dir(PLX_ROOT.'themes/'.$plxMotor->style)) {
	header('Content-Type: text/plain');
	echo 'Le theme principal PluXml est introuvable ('.PLX_ROOT.'themes/'.$plxMotor->style.') !';
} elseif(file_exists(PLX_ROOT.'themes/'.$plxMotor->style.'/'.$plxMotor->mode.'.php')) {
	# On impose le charset
	header('Content-Type: text/html; charset='.PLX_CHARSET);
	# Insertion du template
	include(PLX_ROOT.'themes/'.$plxMotor->style.'/'.$plxMotor->mode.'.php');
	
} else {
	header('Content-Type: text/plain');
	echo 'Le fichier cible PluXml est introuvable ('.PLX_ROOT.'themes/'.$plxMotor->style.'/'.$plxMotor->mode.'.php) !';
}

#variables pour la reecriture des liens dans la page

	/* ne pas modifier les valeurs de la ligne suivante */
	$original = array('?article','?categorie','?static','?page','<head>');
	
	/* valeurs modifiée aprés traitement , vous pouvez renommer les 3 premiere */ 
	$rewrote  = array('article','categorie','extra','page','<head>
	<base href="'.$plxMotor->racine.'" />');
	
#recuperation et modification du buffer traité
	/* remplacement des valeurs d'origine $original par $rewrote */
	$input =  str_replace($original, $rewrote, ob_get_contents());
	
#on nettoie le buffer
ob_end_clean();

#on affiche notre page réecrite
echo $input ;
?>
et le fichier feed.php :
<?php
# ------------------ BEGIN LICENSE BLOCK ------------------
#
# This file is part of PluXml : http://pluxml.org/?categorie3/a-propos-de-pluxml.
#
# Copyright (c) 2008-2009 Florent MONTHEL and contributors
# Copyright (c) 2006-2008 Anthony GUERIN
# Licensed under the GPL license.
# See http://www.gnu.org/licenses/gpl.html
#
# ------------------- END LICENSE BLOCK -------------------

# Configuration avançée #
define('PLX_ROOT', './');
define('PLX_CORE', PLX_ROOT.'core/');
define('PLX_CONF', PLX_ROOT.'data/configuration/parametres.xml');

# On verifie que PluXml est installé
if(!file_exists(PLX_CONF)) {
	header('Location: '.PLX_ROOT.'install.php');
	exit;
}

# On inclut les librairies nécessaires
include_once(PLX_ROOT.'config.php');
include_once(PLX_CORE.'lib/class.plx.date.php');
include_once(PLX_CORE.'lib/class.plx.utils.php');
include_once(PLX_CORE.'lib/class.plx.glob.php');
include_once(PLX_CORE.'lib/class.plx.record.php');
include_once(PLX_CORE.'lib/class.plx.motor.php');
include_once(PLX_CORE.'lib/class.plx.feed.php');

#mise en place d'un tampon qui va contenir notre objet
ob_start();

#variables pour la reecriture des urls en dur 
/* ne pas modifier les valeurs de la ligne suivante */
$original = array('?article','?categorie','?static');
/* valeurs modifiée aprés traitement , vous pouvez les renommer */ 
$rewrote  = array('article','categorie','extra'); 

# Creation de l'objet principal et lancement du traitement
$plxFeed = new plxFeed(PLX_CONF);
$plxFeed->prechauffage();
$plxFeed->demarrage();

#modification de l'objet traité
/* remplacement des valeurs d'origine $original par $rewrote */
$input =  str_replace($original, $rewrote, ob_get_contents());

#on vide le tampon
ob_end_clean();

#on affiche notre objet modifié
echo $input ;
?>
Une archive de la V4.3 modifiée (comme ci dessus) est téléchargeable : http://www.doc-css.com/plx4.3urw/demo/?telechargement/Li4vLi4vZGF0YS9kb2N1bWVudHMvcGx1cnd4LnppcCpjNzYxYjM,

Ceci est une version test , non configurable a l'install ni au travers de l'admin et a ne pas utiliser sur un serveur free .

A vous les critiques :)

Bonne année

<edit maj du lien de telechargement >


Cordialement,
gcyrillus

Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

Réponses

  • janvier 2010 modifié
    je remonte le sujet qui ne semle pas émouvoir grand monde :)

    Je viens de mettre en ligne une démo avec le moteur de recherche que bg62 utilise(non-oficiel) http://forum.pluxml.org/viewtopic.php?pid=11352 et la page contact du wiki http://wiki.pluxml.org/?page=Ajouter%20un%20moteur%20de%20recherche%20dans%20une%20page%20statique

    Un zip contenant la demo est dispos dans l'unique article .

    J'attendais quelques avis , opinions et critiques d'utilisateurs éclairés ou non , ainsi que des suggestions pour le type d'url que les uns ou les autres voudraient voir ou estimeraient plus significatives .

    Un sondage d'opinion en quelque sorte :) pour eventuellement arriver a un truc interessant .

    ++

    demo : http://www.doc-css.com/plx4.3urw/demo/


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • Salut à tous,

    Je n'ai pas encore essayé ton approche de l'url rewrite, mais pour ma part le principal reproche que j'ai à faire à pluxml concerne les urls...

    De mon côté je suis parfois embetté lorsque j'utilise pluxml en affichant uniquement les catégories, car les articles font doublons!

    Je vais essayer ta méthode pour supprimer les points d'interrogation, je te fais un retour dans la journée.

    Merci pour ton idée, sache que sans être très ému ça va tout de même beaucoup m'aider :)
  • Je viens de tester en locale, avec Mamp, malheureusement ma config d'apache quasi de base de me permet pas de tester car il j'ai une erreur 403.

    Je te donnerai donc mon avis plus tard, une fois placé en ligne ;)
  • janvier 2010 modifié
    bonsoir,

    merci pour ta tentative , pas de chance :)

    Pour l'erreur 403 peut-etre une configuration de fichier httpd.conf qui force a passer par un fichier index par exemple ?

    retour de bug interessant en tout cas . je vais voir si je peut le provoquer en local via httpd.conf , si oui , il faudra juste modifier le htaccess en conséquence.

    ++

    <edit> tentative infructueuse de reproduire l'erreur 403 de mon coté , en jouant sur certaine options comme indexes ou multiview .

    Autres questions :
    as tu fait l'install dans un sous repertoire et y-at-il déja un htaccess dans le repertoire racine ou un repertoire parent

    est-il possible d'avoir un aperçu de ton fichier httpd.conf (dans le repertoire apache )

    veut tu modifier le fichier htaccess pour passer par la page index.php
    comme ceci (en fait seul les deux derniere lignes sont differentes ):
    RewriteEngine on
    
    #avant de lancer la reecriture , on verifie que les repertoires ou fichiers demander existent (accés admin , images par exemple)
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-l
    
    # Et enfin si la page demander ne correspond pas a un fichier ou repertoire existant , on applique la réecriture.	
    	#reinjection du systeme d'url de pluxml . original et tri sur modification
      RewriteRule ^(!fructueux-|article|page|categorie)(.*)$ index.php?$1$2 [L]
      RewriteRule ^fructueux-([0-9])(.*)$ index.php?static$1$2 [L]
    
    Merci


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • Bonjour,

    nouvel utilisateur de PluXml (j'ai fait une 1ère installation la semaine dernière), je suis ravi de voir une possibilité d'url rewriting.

    Je l'ai testée, elle fonctionne chez moi en local sur xampp 1.7. J'ai du coup une demande spécifique : est-il possible de virer le chiffre/id attribué/e à chaque page statique dans l'url ? Si oui, comment ?

    Merci d'avance.
  • Tomek a écrit:
    Bonjour,

    Je l'ai testée, elle fonctionne chez moi en local sur xampp 1.7. J'ai du coup une demande spécifique : est-il possible de virer le chiffre/id attribué/e à chaque page statique dans l'url ? Si oui, comment ?

    Merci d'avance.
    bonsoir ,

    non , le chiffre est nécessaire a pluxml pour retrouvé quel fichier (article ou static) qu'il doit traité et affiché.
    On peut deplacé ce chiffre dans l'url . en debut , fin ou le taxé de repertoire : (1/static/page , ou static/1/page , ou static/page/1 ).

    On pourrait aussi par exemple : rewriter :
    ?article-x en article-x ,
    ?categorie-x en rubrique-x
    et ?static-x en -x .
    (voir les variables $rewrote et mettre a jour le masque dans htaccess)

    Dans tout les cas , le chiffre reste necessaire (ne pas hesiter a me contredire si j'ai zappé un truc sur la gestions des url dans pluxml) ) et l'on ne pourrait faire disparaitre qu'un seul nom de type de contenu : static , page , article , categorie (ou telechargement et (les fils rss atom) : pas pris en charge dans la demo)

    L'url rewrite a ses limites (mes compétences aussi :) )
    Il faut faire avec le fonctionnement de pluxml et rester au plus simple et leger pour rester dans l'esprit de ce CMS particulier .

    L'idée serait d'arriver a trouver un (compromis) type d'url qui conviennent a tous avec un avis (favorable) de la part de l'equipe de Pluxml .

    Désolé pour les chiffres :)

    Merci de ton retour .
    Cordialement , GC


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • TomekTomek Member
    janvier 2010 modifié
    j'ai en effet raccourci directement le rewriting en enlevant le 'extra' et ça fonctionne bien.

    du coup j'ai une adresse du style http://monsite/1/mapagestatique ce qui est plutôt bien quand même. :)
  • @gcyrillus : Merci pour ce travail effectué. Pour té répondre, PluXml a besoin de deux choses :
    - un mot clé pour identifier le mode (Tomek, je ne sais pas comment tu fais pour matcher que ton url est une page statique...)
    - l'id unique de la ressource (article, page statique, categorie, etc)
  • marama a écrit:
    - un mot clé pour identifier le mode (Tomek, je ne sais pas comment tu fais pour matcher que ton url est une page statique...)
    - l'id unique de la ressource (article, page statique, categorie, etc)
    Si l'un des mots clé est manquant (enlever sciemment , par exemple static dans le mode réecrit) et qu'un n° est present , le fichier htaccess renvoi par defaut vers celui-ci (static).
    Cela ne peut fonctionner que pour l'un des mots clé , on ne peut produire ce type d'url que pour un seul type de contenu (ou mode) .

    Pluxml reçoit toujours ses requête via ses url native , il n'y a que l'utilisateur qui se sert des URL rewriter ...

    Cordialement
    GC


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • marama a écrit:
    - un mot clé pour identifier le mode (Tomek, je ne sais pas comment tu fais pour matcher que ton url est une page statique...)
    - l'id unique de la ressource (article, page statique, categorie, etc)
    Si l'un des mots clé est manquant (enlever sciemment , par exemple static dans le mode réecrit) et qu'un n° est present , le fichier htaccess renvoi par defaut vers celui-ci (static).
    Cela ne peut fonctionner que pour l'un des mots clé , on ne peut produire ce type d'url que pour un seul type de contenu (ou mode) .
    GC
    Pour mon exemple, je n'aurai a priori que des pages statiques, donc pas de souci ; pour d'autres sites potentiels, je laisserai les autres mots-clés (catégorie/article ou billet selon), pas de souci non plus. C'est juste au niveau des pages statiques que je préfère faire court.
  • Tout d'abord bravo à toute l'équipe de pluxml pour votre énorme boulot sur ce projet.

    Je vient de tester l'url rewritting, ça marche nickel par contre j'ai une petite question :
    Est-il possible de rewritter de la même manière les url provenant du sitemap.php histoire d'obtenir une certaine cohérence sous google ?
    Je suis entrain de tenter la chose mais si quelqu'un à déjà ça dans les tuyaux...
    ___
    Red
  • bonsoir,

    c'est en principe deja le cas si tu lis bien (et observe bien les liens servis par
    http://www.doc-css.com/plx4.3urw/demo/sitemap.php ):

    les fichiers concerné sont : index.php , sitemap.php et feed.php et le fichier .htaccess ajouter pour faire tourner l'ensemble .

    Les url rewritées sont dans l'exemple téléchargeable : ?article , ?static , ?page et ?categorie .
    la maniere de faire peut-etre etendue a ?telechargement aussi (suffit de la rajouter dans les variable $original et $rewrote ainsi que le masque dans le fichier .htaccess.)

    le zip en 4.3 : http://www.doc-css.com/plx4.3urw/demo/?telechargement/Li4vLi4vZGF0YS9kb2N1bWVudHMvcGx1cnd4LnppcCpjNzYxYjM,

    La mise a jour vers la 4.3.1 est en principe relativement simple :
    garder les fichiers index.php , sitemap.php et feed.php de cette version modifié mettez a jour es autres.

    GC


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • Merci beaucoup pour la réponse, effectivement je n'avais pas regardé dans le détail les modification faites dans les fichiers autres que index.php et feed.php. Je m'en vais mettre a jour ce fichier et tout devrais être plus cohérent sur mon pluxml.
    Merci encore et bon week-end.
  • Salut je suis un nouveau utilisateur de pluxml, je viens de faire le test pour cette url cela fonctionne tres bien aussi chez moi. Encore merci
  • Merci des retours :)


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • bg62bg62 Member
    janvier 2010 modifié
    je reviens sur le sujet, pour donner un avis tout à fait personnel, mais qui est dans le concret des résultats ...
    si la mode est en ce moment à l'url rewriting, pour un blog qui débute, soit, mais si je prends l'exemple du mien lorsqu'un article est créé, il faut aussi penser à l'impact et dans ce cas, il est pris par google de plusieurs manières:
    - dans le flux rss
    - dans le plan du site (on n'a jamais fait mieux pour tous les moteurs ...)
    - dans l'url 'normale' (générale du site, basée sur son titre)
    - dans l'url 'normale' + le n° de l'article
    - dans l'url 'normale" + le n° de l'article + le nom de l'article
    etc ... ce qui me va très bien ainsi !
    finalement (sans compter les traces qui sont prises également, venant des catégories (last article) dans la side barre ce n'est pas un lien qui est pris, mais un minimum de 5, par google sans aucun problème ...
    >>> Si de plus le blog est configuré, déclaré, et référencé comme véritable sous-domaine, un lien sur le domaine principal, vous multiplie encore ça quasiment par 2
    Le but du jeu est d'être ensuite trouvé sur le Net, donc lorsque je mets un article, quelques heures après il peut être trouvés, grâce aux mots clés sous une foule d'option de résultats dans les recherches, ce qui me convient donc super bien, encore une fois, et ceci sans "tricheries" !
    Alors pour les fans , le principe est bon certes, mais pour les futures versions, de grâce ne les basez pas sur ce système, mettez-le en option ...
    encore une fois , c'est un avis personnel et peut-être aussi une piste de réflection ...
    qu'en pensez-vous ?
  • En regle generale , l'url rewriting n'est qu'une option de courtoisie dans un CMS a mon avis et ne peut-etre imposé histoire de ne pas limité les options d'hebergement.

    D'ailleurs je ne vois rien dans la roadmap a ce sujet et j'imagine mal Pluxml imposé ça .

    Cette option ne devrait pas etre non plus rigide , L'url rewriting est généralement miss en place après reflexions et eventuels besoins (referencement ? , marketing , langage du site , ... a chacun ses stratégies ), si un type d'url convient a l'un , ce n'est probablement pas le cas pour un autre .

    Perso je suis aussi convaincu que coté référencement , pluxml n'a pas besoin de ça , le contenu restera roi de toute façon mais bien fait ça ne fait pas de mal , puis remplacer les mots rubrique et categorie par d'autres pour un site 'plaquette' par exemple peut-etre une bonne idée.

    Pour basculer sur l'url rewriting sur un site deja en place , il faudra simplement penser a faire une redirection 301 pour ne pas perturber google outre mesure et eviter le duplicate content ([R=301,L] ) ce que j'ai fait sur un site a l'abandon , le passage d'un type d'url a une autre s'est fait sans probleme et en quelque jours , peut-etre ai je été chanceux. J'envisage d'ailleurs de renouveler le test a l'occasion d'une
    mise a jour sur un site que je tient a garder.

    Le fichier .htaccess ne sert pas qu'a faire de l'url rewriting , il peut y avoir d'autre aspect utiles et est complementaire bien souvent.

    GC


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • je te donnais juste un petit 'retour d'expérience" ... après à chacun de voir s'il veut (ou peut) l'utiliser ou non ... :-)
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    Il est évident pour nous que nous n'imposerons jamais un style d'url. Au mieux il y aura plusieurs choix, à sélectionner dans le paramétrage de l'admin. A l'utilisateur de choisir ce qu'il préfère. Par défaut ce sera toujours la solution qui fonctionne sur tous les hébergeurs.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Stéphane a écrit:
    Bonjour
    Il est évident pour nous que nous n'imposerons jamais un style d'url. Au mieux il y aura plusieurs choix, à sélectionner dans le paramétrage de l'admin. A l'utilisateur de choisir ce qu'il préfère. Par défaut ce sera toujours la solution qui fonctionne sur tous les hébergeurs.
    bon à savoir pour la suite ...
  • Salut, perso j'ai un petit souci au niveau du sitemap cela me laisse les ? avant article.
    Si c'est possible de faire quelque choses merci
  • Bonjour,

    En principe le fichier sitemap.php pour la version 4.3 devrait ressembler a ceci (mot clés : article , categorie, extra ) :
    article
    <?php
    # ------------------ BEGIN LICENSE BLOCK ------------------
    #
    # This file is part of PluXml : http://pluxml.org/?categorie3/a-propos-de-pluxml.
    #
    # Copyright (c) 2008-2009 Florent MONTHEL and contributors
    # Copyright (c) 2006-2008 Anthony GUERIN
    # Licensed under the GPL license.
    # See http://www.gnu.org/licenses/gpl.html
    #
    # ------------------- END LICENSE BLOCK -------------------
    
    define('PLX_ROOT', './');
    define('PLX_CORE', PLX_ROOT.'core/');
    define('PLX_CONF', PLX_ROOT.'data/configuration/parametres.xml');
    
    # On verifie que PluXml est installé
    if(!file_exists(PLX_CONF)) {
    	header('Location: '.PLX_ROOT.'install.php');
    	exit;
    }
    
    # On inclut les librairies nécessaires
    include_once(PLX_ROOT.'config.php');
    include_once(PLX_CORE.'lib/class.plx.date.php');
    include_once(PLX_CORE.'lib/class.plx.utils.php');
    include_once(PLX_CORE.'lib/class.plx.capcha.php');
    include_once(PLX_CORE.'lib/class.plx.erreur.php');
    include_once(PLX_CORE.'lib/class.plx.glob.php');
    include_once(PLX_CORE.'lib/class.plx.record.php');
    include_once(PLX_CORE.'lib/class.plx.motor.php');
    
    # On impose le charset
    header('Content-Type: text/xml; charset='.PLX_CHARSET);
    #mise en place d'un tampon qui va contenir notre objet
    ob_start();
    
    #variables pour la reecriture des urls en dur 
    /* ne pas modifier les valeurs de la ligne suivante */
    $original = array('?article','?categorie','?static');
    /* valeurs modifiée aprés traitement , vous pouvez les renommer */ 
    $rewrote  = array('article','categorie','extra'); 
    # Creation de l'objet principal et lancement du traitement
    $plxMotor = new plxMotor(PLX_CONF);
    $plxMotor->prechauffage();
    $plxMotor->demarrage();
    
    # Entête XML
    echo '<?xml version="1.0" encoding="'.strtolower(PLX_CHARSET).'" ?>';
    ?>
    <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
    	<url>
    		<loc><?php echo $plxMotor->racine; ?></loc>
    		<changefreq>weekly</changefreq>
    		<priority>1.0</priority>
    	</url>
    <?php
    # Les pages statiques
    foreach($plxMotor->aStats as $stat_num => $stat_info) {
    	if($stat_info['active'] != 1 OR $stat_info['menu'] != 'oui') continue;
    	echo "\n";
    	echo "\t<url>\n";
    	echo "\t\t<loc>".$plxMotor->racine."?static".intval($stat_num)."/".$stat_info['url']."</loc>\n";
    	echo "\t\t<changefreq>monthly</changefreq>\n";
    	echo "\t\t<priority>0.8</priority>\n";
    	echo "\t</url>\n";
    }
    # Les catégories
    foreach($plxMotor->aCats as $cat_num => $cat_info) {
    	if($cat_info['menu'] != 'oui' OR $cat_info['articles'] == 0) continue;
    	echo "\n";
    	echo "\t<url>\n";
    	echo "\t\t<loc>".$plxMotor->racine."?categorie".intval($cat_num)."/".$cat_info['url']."</loc>\n";
    	echo "\t\t<changefreq>weekly</changefreq>\n";
    	echo "\t\t<priority>0.8</priority>\n";
    	echo "\t</url>\n";
    }
    # Les articles
    $plxGlob_arts = new plxGlob(PLX_ROOT.$plxMotor->aConf['racine_articles']);
    $aFiles = $plxGlob_arts->query('/^[0-9]{4}.([0-9]{3}|home).[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort', 0, false, 'before');
    # On parse les fichiers
    if(is_array($aFiles)) { # On a des fichiers
    	foreach($aFiles as $k=>$v) { # On parcourt tous les fichiers
    		$array[ $k ] = $plxMotor->parseArticle(PLX_ROOT.$plxMotor->aConf['racine_articles'].$v);
    		# On stocke les enregistrements dans un objet plxRecord
    		$plxRecord_arts = new plxRecord($array);
    	}
    	if($plxGlob_arts->count AND $plxRecord_arts->size) { # On a des articles
    		# On boucle sur nos articles
    		while($plxRecord_arts->loop()) {
    			$num = intval($plxRecord_arts->f('numero'));
    			echo "\n";
    			echo "\t<url>\n";
    			echo "\t\t<loc>".$plxMotor->racine."?article".$num."/".plxUtils::strCheck($plxRecord_arts->f('url'))."</loc>\n"; 
    			echo "\t\t<lastmod>".$plxRecord_arts->f('date')."</lastmod>\n";
    			echo "\t\t<changefreq>monthly</changefreq>\n";
    			echo "\t\t<priority>0.5</priority>\n";
    			echo "\t</url>\n";            
    		}
    	}
    }
    ?>
    </urlset>
    <?php
    #modification de l'objet traité
    /* remplacement des valeurs d'origine $original par $rewrote */
    $input =  str_replace($original, $rewrote, ob_get_contents());
    
    #on vide le tampon
    ob_end_clean();
    
    #on affiche notre objet modifié
    echo $input ;
    ?>
    


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • Ah ok super ! Merci beaucoup je viens de placer ce code dans mon fichier sitemap.php est parfait cela fonctionne correctement.
    Merci beaucoup
  • bonjour,

    je ne sais pas trop , l'idée parait bonne au premier abord , et permettrait de s'affranchir de l'url rewriting a priori si je te suis bien .

    D'un autre coté cela réduirait virtuellement PluXml a une seule page avec une multitude d'ancre , fonctionnant comme si c'etait gerer en ajax . Je me demande si on risque pas des télescopage avec certains script js , ou l'historique de navigation par exemple .(reponse hative).
    J'ai quand même le sentiment que le ? est plus pertinent que le # .

    cordialement , GC


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • PluXml fonctionne déjà avec un unique fichier qui est les bootstrap index.php.
    C'est clair que certaines choses poseraient pb comme les liens internes etc.
    C'est en naviguant sur GMAIL que j'ai eu cette idée...
  • Ce tutorial marche à merveille par contre pour le fichier feed.php comment peut on gérer la réécriture ?
Connectez-vous ou Inscrivez-vous pour répondre.