URLs pages personnalisées

Cette contribution ou ce plugin est en phase de test. Des bugs peuvent subsister. N’hésitez pas à les signaler dans le forum ci-dessous.

Ce petit plugin, au caractère un peu expérimental, est un outil pour les webmestres et les utilisateurs avancés.

Il permet de mettre en place des urls personnalisées pour les squelettes ne correspondant à aucun objet éditorial : les pages.

Il s’agit du portage sous forme de plugin du tutoriel d’openstudio « pages personnalisées et réécriture d’adresse ».

Utilité

Lorsque l’on crée les squelettes d’un site, il arrive que l’on ait des squelettes ne se rapportant à aucun objet éditorial : « galerie.html », « contact.html », « plan.html » etc.

SPIP permet nativement de définir des urls personnalisées pour les pages se rapportant aux objets éditoriaux (articles, rubriques etc.), ce qui exclut ces types de squelettes.

Pour accéder à ces page, on dispose d’une balise #URL_PAGE, qui produit par défaut une url du type monsite.com/spip.php?page=toto.

Voyons comment utiliser le plugin pour personnaliser ces urls.

Utilisation

Avant tout, le fichier fichier .htaccess doit être correctement installé à la racine du site.

Rendez-vous sur la page de configuration du plugin ?exec=configurer_urls_pages ou dans le menu de configuration « Configurez les URLs ».

Formulaire avant complétion

1. Renseigner les urls personnalisées
Le plugin répertorie tous les squelettes « actifs » identifiés comme étant des pages. Sont donc exclus de la liste les squelettes des objets éditoriaux (article.html, article-10.html etc.), les noisettes (inc-xxx.html) et les squelettes « techniques » (404.html, sommaire.html etc.).

La recherche est effectuée à la racine des dossiers de squelettes et des plugins actifs de catégorie « squelette ».

Si Zpip ou Zcore est actif, c’est dans les sous-répertoires « content » et « contenu ».

Pour chaque page, vous pouvez donc définir une url personnalisée. Une vérification des doublons est effectuée, en revanche la validité de la chaîne rentrée est de votre ressort (attention aux caractères accentués et consorts).

Après enregistrement des paramètres, la balise #URL_PAGE pointera vers les nouvelles urls pour chaque page concernée.

2. Vérifier RewriteBase
Si nécessaire renseignez le champ « RewriteBase » tel qu’il est défini dans .htaccess. RewriteBase indique le chemin relatif du site sur le serveur si celui-ci est installé dans un sous-répertoire. Il est nécessaire pour le calcul des urls personnalisées par la balise #URL_PAGE.

3. Modifier le fichier .htaccess
Pour rendre effectives ces nouvelles urls, il ne reste plus qu’à mettre en place la redirection dans le fichier .htaccess : copiez-y le code indiqué en fin de formulaire (la section « réglages personnalisés » est toute indiquée).

Formulaire après complétion

Evolution

Toutes les contributions sont les bienvenues, il s’agit d’un premier jet et de nombreuses améliorations sont possibles.

Discussion

6 discussions

  • 1

    Bonjour,

    J’utilise ce plugin depuis longtemps et je suis en train de migrer en spip 4.2 (php 8.1).

    Aucun soucis pour activer le plugin (dernière version 1.1)

    Mais, on perd les liens de prévisualisation : plus de var_mode=preview dans l’url générée suite à une redirection depuis #VAL{redirect}|generer_url_action{

    • Hello,

      Pour SPIP 4+ une v2 est en développement, elle devrait sortir bientôt.
      Elle devrait continuer à fonctionner tel quel, avec quelques améliorations mais non visibles.

      Il y a aussi un chantier pour ce qui sera probablement une v3, qui aura des améliorations bien visibles, elle.

    Répondre à ce message

  • 2
    Morane

    Bonjour,

    J’aimerais associer une url propre a un squelette en spip 4.
    Est-ce que ce plugin pourrait encore marcher ? Ou y-a-t-il une nouvelle fonctionalité
    de spip 4 qui permet celà ?

    Merci !

    • Bonjour,

      En théorie le plugin devrait toujours fonctionner tel quel en SPIP 4 en forçant son activation avec _DEV_VERSION_SPIP_COMPAT (je n’ai pas testé).

      Mais le vrai portage en bonne et due forme pour SPIP 4 reste à faire.
      C’est prévu dès que j’aurais du temps.

    • Morane

      Ok, Tcharlss,
      Je peux donc avancer.
      Merci !

    Répondre à ce message

  • Répondre à ce message

  • 4

    Salut,

    j’utilise un plugin boiler plate basé sur ZCore avec un dossier de squelettes qui est main au lieu du content par défaut donc les fonds de pages ne sont pas détectés.

    J’ai tenté de surcharger la constante _DIR_PLUGIN_ZCORE dans mes_options.php qui semble être la solution mais sans succès :

    define('_DIR_PLUGIN_ZCORE','main');

    et

    define('_DIR_PLUGIN_Z','main');

    Je rate quelque chose ?

    Sur suis en SPIP 4.0.5 GIT [4.0 : 4c6577cb]

    • Hello,

      Ah tiens nous aussi on s’est mis à utiliser « main » comme dossier principal avec RastaPopoulos.

      Donc là il y a en effet un manque dans le plugin, ça prend le dossier « content » en dur au lieu d’aller chercher le dossier déclaré via la globale (c’est du vieux code hein :p) : https://git.spip.net/spip-contrib-extensions/urls_pages/src/branch/master/inc/fonds_pages_to_array.php#L102-L103

      Je vais corriger pour Spip 3.2.

      Pour info dans la prochaine version pour Spip 4, je me tâte pour abandonner la détection automatique des fonds de page. C’est un besoin communs à plusieurs plugins donc ça devrait être déporté dans un sous-plugin idéalement.

    • Merci pour ton retour.
      Pour info, ça bloque dans la détection auto mais aussi dans l’ajout manuel (cf capture jointe).

      Par contre, en ajoutant define('_DIR_PLUGIN_ZCORE','main'); dans mes_options.php, j’ai une erreur de squelette :

      Aucun squelette sommaire.html n’est disponible...

      Mais c’est du côté de ZCore pour le coup, faut que je vois d’où ça provient...

      PS : Je vous ai copié pour le main :) ça parait plus logique effectivement.

    • Ah mais le plugin n’est pas officiellement compatible spip 4 par contre, la borne a été changée trop vite dans paquet.xml (pas par moi #dénonciation).

      Nonobstant le bug avec zcore, la détection des fonds de page ne fonctionne plus correctement car ça repose sur des informations qui ont été retirées de SVP en spip 4.
      Et donc ça empêche d’enregistrer les urls, visiblement.

      Pour info la roadmap pour une version vraiment compatible spip 4 : https://git.spip.net/spip-contrib-extensions/urls_pages/issues/3

      Sinon je ne sais pas ce que tu essaies de faire avec define('_DIR_PLUGIN_ZCORE','main'), il ne faut surtout pas changer cette constante !
      Les blocs se déclarent via globale $GLOBALS['z_blocs'], avec le bloc principal en premier (cf. ce que fait Integraal par exemple).

    • Je note pour la roadmap :)

    Répondre à ce message

  • 7

    Bonjour à tous,
    savez vous si une version pour Spip 4 est dans les tiroirs et sinon, quelle procédure à écrire, même page par page dans le Htaccess ?
    c’est vraiment un plus et ce serait des grands merci, Cordialement, Alain

    • Hello,

      En principe le plugin devrait fonctionner tel quel avec Spip 4, ou alors avec des ajustements mineurs.
      Il faut juste que je teste bien tout ça avant d’incrémenter la compat.

      Avec des guillemets à « juste » quand même.

    • J’en profiterai pour mettre à jour la doc pour la v1, l’UX ayant bien évolué.

    • Bonjour,
      quelle bonne nouvelle, je ne savais pas si quelqu’un était encore derrière ce travail.
      J’espère que ce ne sera pas trop long...
      Bon courage et encore merci, Alain

    • Bonjour,
      excellente nouvelle et merci pour le travail.
      Un peu impatient mais c’est normal, j’ai quelques pages qui ne sont plus accessibles ...
      Cordialement Alain

    • Bonjour
      Effectivement, URLs Pages Personnalisées 1.0.12 fonctionne avec Spip 4.0.4.
      Mais, ce qui est curieux, c’est que, sur un site en Spip 3.2.13, le paquet.xml de la version 1.0.12 affiche « compatibilite="[3.1.0;3.2.*]" » sans signaler de version plus récente alors que dans le code actuel de la même version du plugin (https://git.spip.net/spip-contrib-extensions/urls_pages.git), c’est « compatibilite="[3.1.0;4.0.*]" ».
      De fait, mon Spip 3.2.13 ne propose pas de mise à jour, et son passage à Spip 4.0.4 rendra le plugin incompatible.

      @+
      Luc

    • C’est parce que la pose du numéero v1.0.12 a été faite avant qu’on ait vérifié la compat spip 4.

      La v1.0.13 sera prochaienement dispo.

    • Heu, alors moi j’avais pas du tout prévu de releaser une version spip 4, c’est pas encore prêt.

      Depuis le dernier commentaire j’ai testé plus en profondeur, en l’état il reste quelques bugs, et d’autre part je voulais en profiter pour faire quelques évolutions / mise au propre : https://git.spip.net/spip-contrib-extensions/urls_pages/issues/3

      Donc ça prend un peu de temps, c’est comme ça, mais c’est pas prêt à releaser pour l’instant, merci d’enlever le tag maieul.

      edit : pour spip 4 ça sera une v2

    Répondre à ce message

  • Bonjour,

    Je déterre un peu ce plugin, du moins son fil ....
    Est-t-il toujours maintenu ?

    Dans tous les cas, un problème de dépendance est survenu depuis une mise à jour en SPIP 3.2.5

    Dans url/propres.php : il manque

    include_spip('base/abstract_sql');

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom