#1 2014-01-06 23:04:37

gbo
Membre
PACA
2006-11-01
1214

Format des URL

$conf['question_mark_in_urls'] = false;

Permet de supprimer le ? dans les requêtes
http://localhost/26rc2/picture.php?/269/category/12
devient
http://localhost/26rc2/picture.php/269/category/12

C'est un bonne chose :mais chez mon hébergeur, la règle de réécriture pense que /269/category/
est un répertoire et tout plante sauf si on utilise que des chemins absolus.

Est-ce qu'il serait possible d'avoir un format d'url du type:
http://localhost/26rc2/picture.php-269-category-12 ?

Soit par via une variable de configuration comme dans le fil d’Ariane ou l'on peut déjà remplacer le séparateur '/' par '-'.
Soit avec du PHP.

Hors ligne

#2 2014-01-07 05:38:26

rvelices
Équipe Piwigo
2005-12-29
1417

Re: Format des URL

Je ne pense pas que c'est possible.  (Sans modifications manuelle des .htaccess)

Hors ligne

#3 2014-01-09 22:40:20

gbo
Membre
PACA
2006-11-01
1214

Re: Format des URL

Merci pour l'information, je vais chercher une autre solution.

Hors ligne

#4 2014-01-10 10:04:57

barbichou
Membre
2013-01-06
85

Re: Format des URL

Salut et meilleurs vœux,

Je suis en train de travailler sur la même chose que toi.

En fait c'est possible. Tu peux transformer les url de Piwigo pour les formater à ton goût et surtout pour les rendre sexy et "seo friendly"

Cela nécessite pas mal de travail  : réécriture des urls, travail sur htaccess.

Pour ton souci de plantage, je pense que tu es dans le même cas que moi. J'avais posé la question dans ce fil sans succès http://fr.piwigo.org/forum/viewtopic.ph … 05#p207105 et j'ai fini par trouvé la solution : il faut utiliser une base href  dans le head des pages pour que cela fonctionne.

Pour la réécriture des url, 99% du travail peut être effectué via un plugin personnel :
trigger puis get_template_vars() depuis une fonction de réécriture
il faut tout écrire, les variables de type $machin.URL, $TITLE, $CANONICAL etc

Puis dans le htaccess, il faut également écrire les urls (url rewriting via rewrite engine). Si le site est déjà en production, il est indispensable de faire des redirections 301 dans anciennes urls vers les nouvelles.

Voilà pour le principe, j'ai commencé à le réaliser sur mon futur site si ça peut te donner des idées ou des exemples.

Je n'ai pas testé les conséquences sur les plugins, mais un plugin comme sitemap ne fonctionnera plus correctement et devra être corrigé également. Il est fort probable que d'autres plugins doivent être corrigés également.

@+ ;)

Hors ligne

#5 2014-01-10 18:58:51

gbo
Membre
PACA
2006-11-01
1214

Re: Format des URL

Merci barbichou pour ces propositions.

En fait chez mon hébergeur  $_SERVER["PATH_INFO"] reste vide.
Même en forçant l'option PATH_INFO via htaccess ou php.ini.

j'ai une variable d’environnement qui pourrait convenir.

Mais cela reste galère pour faire une  substitution qui fonctionne avec tous les plugins, thèmes sans oublier les cookies.
Je  souhaite une solution pérenne pour ne pas avoir à implanter les modifications à chaque monté de version de PWG.

Hors ligne

#6 2014-01-11 13:15:34

barbichou
Membre
2013-01-06
85

Re: Format des URL

Salut,

Chez moi c'est vide aussi, enfin plus précisément 'UNDEFINED'. Donc lorsque tu changes tes $conf dans piwigo pour supprimer les ? dans les urls, la galerie plante parce que le serveur cherche des fichiers dans des répertoires virtuels qui n'existent pas.

le remède est le suivant :

- une vérification dans ton php.info depuis l'administration pour vérifier que cgi.fix_pathinfo = 1 sinon le accept path info on dans ton htaccess ne fonctionnera pas. S'il est à 0, le passer à 1 si tu as accès, sinon si ton hébergeur l'accepte : un php.ini à la base pour corriger

- indiquer dans quel répertoire aller chercher les fichier : jquery, images, css etc, pour cela il suffit d'indiquer une base href dans le head du header.tpl. Tu peux faire ça sans rien changer à piwigo  grâce au couteau suisse plugin local file editor -> plugin personnel

Code:

add_event_handler ('loc_begin_page_header', 'set_base_href');
function set_base_href()
{
$base_href = '<base href="'.PHPWG_ROOT_PATH.'">';
global $template;
$template->assign(array('BASE_HREF' =>$base_href));
}

il suffit ensuite d'ajouter la variable {$BASE_HREF} dans le header.tpl.
je l'ai mis manuellement ligne 7 comme ceci :

Code:

<meta name="generator" content="Piwigo (aka PWG), see piwigo.org">
{$BASE_HREF}
{if isset($meta_ref) }

Je ne sais pas encore comment on positionne précisément une variable dans un tpl depuis un plugin. Si quelqu'un a un lien vers une doc, je suis preneur...

il n'est même pas nécessaire de passer à false les variables $conf["question_mark_in_urls"] et
$conf['php_extension_in_urls'] pour réécrire les urls, le reste se passe dans le .htaccess en l'adaptant à tes besoins.

Code:

#htaccess piwigo

AcceptPathInfo On
Options +FollowSymLinks +MultiViews

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^ma_nouvelle_url$ url_piwigo [flag]
</IfModule>

A ce niveau là, la même page est accessible aussi bien avec l'ancienne que la nouvelle url.
Malheureusement, piwigo continue de produire en interne via les make_picture_url, make_index_url des anciennes urls. Il faut donc parcourir les templates pour choper toutes les urls produites par piwigo et les réécrire pour que seules les nouvelles urls soient montrées à l'utilisateur final.

Encore une fois on utilise un plugin perso comme je l'ai indiqué lors de ma première intervention.
A aucun moment, on intervient dans le code même de piwigo, la seule exception que j'ai pour l'instant c'est avec les photos au hasard car le lien dans le menu pointe d'abord vers random.php puis une redirection est effectuée.

En espérant avoir été clair car je ne suis pas développeur web.

@+ ;)

Hors ligne

#7 2014-01-11 15:07:07

gbo
Membre
PACA
2006-11-01
1214

Re: Format des URL

barbichou a écrit:

Salut,

Je ne sais pas encore comment on positionne précisément une variable dans un tpl depuis un plugin. Si quelqu'un a un lien vers une doc, je suis preneur...

@+ ;)

Cela je sais faire.
Au déclenchement du trigger : 'loc_begin_page_header'
Dans ton plugin tu définis un pré filtre sur le tpl header.

$template->set_prefilter('header', 'Perso_prefilter_header_basehref');

Puis tu indiques  ce que fait le filtre

function Perso_prefilter_header_basehref($content, &$smarty)
{$search = '{if isset($meta_ref) } ';
$replacement = '<base href="http://'.......'/" target="_self">'."\n".$search;
return  str_replace($search, $replacement, $content);   
}

Hors ligne

#8 2014-01-11 15:34:19

barbichou
Membre
2013-01-06
85

Re: Format des URL

Un grand merci, ceci me fera gagner un temps précieux plus tard.

Hors ligne

#9 2014-01-11 16:17:39

flop25
Équipe Piwigo
2006-07-06
6544

Re: Format des URL

Messieurs si vous partagez vos travaux, ce serait super et pourrait même faire l'objet d'une intégration ou d'un plugin :)

Hors ligne

#10 2014-01-11 17:02:11

barbichou
Membre
2013-01-06
85

Re: Format des URL

Bonsoir,

Je ne suis pas certain que faire un plugin d'url rewriting soit une bonne idée, bonjour les plantages de galerie en série selon les erreurs de manipulations des utilisateurs, la complexité du htaccess, les configurations de serveur, l'impossibilité de réaliser du rewriting chez certains hébergeurs gratuits qui oblligerait à passer par du 404....

Grâce à Gbo, j'ai compris comment marche l'ajout de variable dans les tpl, du coup mon code fonctionne directement depuis mon plugin personnel

Code:

add_event_handler ('loc_begin_page_header', 'set_base_href');
function set_base_href()
{
global $template;
$base_href = '<base href="'.PHPWG_ROOT_PATH.'">';
$template->assign(array('BASE_HREF' =>$base_href));
}
add_event_handler ('loc_begin_page_header', 'header_basehref', 50); 
function header_basehref()
{
  global $template;
  $template->set_prefilter('header', 'add_basehref');
}
function add_basehref($content, &$smarty)
{
$search = '{if isset($meta_ref) } ';
$replacement = '{$BASE_HREF}'."\n".$search;
return  str_replace($search, $replacement, $content);   
}

Je pense avoir compris le principe, si un développeur peut jeter un œil et corriger que je comprenne mes erreurs, ça sera parfait.

@+ ;)

Hors ligne

#11 2014-01-16 17:02:55

barbichou
Membre
2013-01-06
85

Re: Format des URL

Salut à tous,

Je me suis aperçu d'un bug avec le code ci-dessus. Cela tient à la façon dont piwigo construit PHPWG_ROOT_PATH.
Pour y remédier, c'est simple, il suffit de mettre en "dur" la racine de son site
$base_href = '<base href='http://monsite.com/[éventuellement le répertoire d'installation]/>' à la place de $base_href = '<base href="'.PHPWG_ROOT_PATH.'">'.

@+ ;)

Hors ligne

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact