Forum ZitePLUS

La communauté des utilisateurs du CMS ZitePLUS

Vous n'êtes pas identifié(e).

#1 03/05/2009 17:59:04

vincecat
Membre
Inscription : 15/04/2009
Messages : 50

Multiview au lieu d'URL rewriting chez FREE.

Bonjour à tous.

Avant tout, je dois préciser que ne connais rien au langage PHP (juste Include), désolé.

Ensuite, étant chez FREE et ne pouvant donc bénéficier de l'URL rewriting standard puisque mod_rewrite est désactivé, j'ai cherché des palliatifs.

J'ai trouvé tout d'abord l'astuce du fichier .htaccess avec traitement de l'erreur 404.
Mais j'ai aussi trouvé cette méthode dite du multiview, fonction qui est disponible chez FREE et qui est annoncée plus 'propre' aux yeux des programmeurs PHP.

Voici le lien vers la page qui détaille toutes ces méthodes pour FREE dont le multiview (tout en bas) http://www.fabienletort.com/blog/2008/m … iting-free.

Je demande aux personnes qui en ont la compétence de bien vouloir se pencher sur cette solution et peut-être de l'intégrer en tant que module par exemple.

Merci.

Cordialement.

Hors ligne

#2 08/05/2009 20:27:01

phpeur
Membre
Inscription : 06/05/2009
Messages : 54

Re : Multiview au lieu d'URL rewriting chez FREE.

Slt vincecat,

Et bien en effet le Multivieuw  est actif par default.

Je peux si tu veut faire en sorte que t'est URL soient de la façon suivantes:
Aulieu de tonsite.com/index.php?z=1 soit tonsite.com/index/z/1.html ou encore tonsite.com/index/z/TON-TITRE.html

Si c'est ce que tu veut, dit le moi je te détaillerai ici les manips à faire!

++

Dernière modification par phpeur (08/05/2009 20:51:58)

Hors ligne

#3 08/05/2009 21:15:52

vincecat
Membre
Inscription : 15/04/2009
Messages : 50

Re : Multiview au lieu d'URL rewriting chez FREE.

Salut phpeur,
c'est exactement ça, t'as tout compris.
Je supposes que le '/z' est inéluctable mais tonsite.com/index/z/TON-TITRE.html ira très bien.

C'est vraiment sympa de te pencher sur ce problème pour nous, pauvres incompétents du PHP et freenautes de surcroit. Merci beaucoup.

Bon week-end.

Hors ligne

#4 08/05/2009 21:26:23

phpeur
Membre
Inscription : 06/05/2009
Messages : 54

Re : Multiview au lieu d'URL rewriting chez FREE.

Re,

Normalement le "z/" peut être enlevé...

Je n'ai pas de compte Free, pour cela je ne peux pas faire de test,

On va essayé la premiere Manip, tu va me dire ce que sa donne, chez Free,

Pour commencer, fait une sauvegarde de tous ton dossier où tu as installé zite au cas où.

1) Ouvrir index.php, remplacer le tout par:

<?php
	if (isset($_SERVER['PATH_INFO'])) {
    	$arg = explode('/', $_SERVER['PATH_INFO']);
    	if (isset($arg[1]) && !empty($arg[1]) && isset($arg[2]) && !empty($arg[2])) {
                $_GET[$arg[1]] = (substr($arg[2],-5)=='.html') ? substr($arg[2],0,-5) : $arg[2];
    	}
    	if (isset($arg[3]) && !empty($arg[3]) && isset($arg[4]) && !empty($arg[4])) {
               $_GET[$arg[3]] = (substr($arg[4],-5)=='.html') ? substr($arg[4],0,-5) : $arg[4];
    	}
	}
	
	include('zite/zite.php');

	// Initalisation de zene, avec le template 'main'
	$zite = & new zite(__FILE__);

	// Décommenter si l'on souhaite inhiber la réécriture d'URL
	$zite->rewrite = true;

	// On génère le contenu
	$zite->builder();

	// On affiche la page
	print $zite->output();
?>

L'envoyer sur le serveur.

2) dans zite/ ouvrir zite.php:

Ligne 134, remplacer toute la ligne:

if ($s[4] || $isadmin) $nav = '<li class="zli'.$s[2].' zon"><a href="'.$base.($rewrite ? $s[0].'.html' : $n).'">'.$s[1].'</a></li>';

Par

if ($s[4] || $isadmin) $nav = '<li class="zli'.$s[2].' zon"><a href="index/'.$base.($rewrite ? $s[0].'.html' : $n).'">'.$s[1].'</a></li>';

Ligne 164, remplacer toute la ligne:

$nav .= '<li class="zli'.$d.'"><a href="'.$base.$f.'">'.$s[1].'</a></li>';

Par:

$nav .= '<li class="zli'.$d.'"><a href="index/'.$base.$f.'">'.$s[1].'</a></li>';

Pour commencer fait ces manips et dit moi ce que sa donne, deconnecte toi de ta session Admin, si sa marche c'est pas fini encore,

++

Dernière modification par phpeur (09/05/2009 03:10:36)

Hors ligne

#5 08/05/2009 21:59:25

vincecat
Membre
Inscription : 15/04/2009
Messages : 50

Re : Multiview au lieu d'URL rewriting chez FREE.

Salut phpeur,

la sauvegarde est faite, la modif 'index.php' aussi, mais je ne peux pas modifier 'zite.php' car je n'ai pas la même version que toi.
Je bosse avec Zite+ 0.8.1 et même avec une recherche sur les caractères 'if ($s[4] || $isadmin)', je ne trouve rien de similaire à modifier.
Par contre, ligne 191, je trouve ça: if ($s[cPageOn] || $isadmin) $nav = '<li class="zli'.$s[2].' zon"><a href="'.$base.($rewrite ? $s[0].'.html' : $n).'">'.$s[1].'</a></li>';
Je vais donc tenter de faire ta modif ligne 134 sur ma ligne 191...

Pour toi, a priori ça devrait le faire?

A+

Hors ligne

#6 08/05/2009 22:16:37

vincecat
Membre
Inscription : 15/04/2009
Messages : 50

Re : Multiview au lieu d'URL rewriting chez FREE.

Et ça se complique pour la ligne 164 dont le code a comme équivalent le plus proche ceci:
$nav .= '<li class="zli'.$d.'"><a href="'.(($s[cPageType]&pgbitType)!=5?$base.$f:$s[cPageIdent]).'">'.$s[cPageTitre].'</a></li>';
ce qui est assez loin de celle que tu indiques.
Donc autant pour ta ligne 134/ma ligne 191 je n'ai pas trop de doute, pour ta ligne 164/ma ligne 231, là je n'ose pas trop y insérer ta modif 'index\\'.

A+

Hors ligne

#7 08/05/2009 22:57:12

vincecat
Membre
Inscription : 15/04/2009
Messages : 50

Re : Multiview au lieu d'URL rewriting chez FREE.

Finalement, je l'ai fait quand même et ça marche pas trop mal.
Si tu veux voir le résultat, c'est là http://ecolonomiqhome.free.fr.

Avec ton code, j'obtiens ça http://ecolonomiqhome.free.fr/index\philosophie.html
au lieu de ça http://ecolonomiqhome.free.fr/index.php?z=3.

En fait, il y a juste le '\' qui jure dans la ligne. Est-ce que je peux tenter de remplacer 'index\\' par 'index//'?

Merci pour ce code qui promet.
A+

Dernière modification par vincecat (08/05/2009 23:19:14)

Hors ligne

#8 08/05/2009 23:10:20

davyk
Membre
Inscription : 09/09/2008
Messages : 819
Site Web

Re : Multiview au lieu d'URL rewriting chez FREE.

oups vincecat ton site n'a pas de contenu, comme s'il n'y avait pas de css
vérifie aussi le lien de ton post vers ton site (ça renvoie vers  http://ecolonomiqhome.free.fr%3C/strong>)

j'attends la suite impatiemment

vYk

Dernière modification par davyk (08/05/2009 23:12:00)


Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows

Hors ligne

#9 08/05/2009 23:17:27

vincecat
Membre
Inscription : 15/04/2009
Messages : 50

Re : Multiview au lieu d'URL rewriting chez FREE.

Bon ben maintenant les liens sont OK, sauf que mon CSS ne s'applique plus dès que je quitte la première page, c'est à dire dès que je vais sur une page où le lien contient 'index/'.

Quand je vais sur une page différente d' index.php, les liens sont modifiés et 'index/' est ajouté à chaque changement de page.

Dans l'attente de tes nouveaux codes, phpeur.

Merci.
A+

Hors ligne

#10 08/05/2009 23:20:44

vincecat
Membre
Inscription : 15/04/2009
Messages : 50

Re : Multiview au lieu d'URL rewriting chez FREE.

Lien corrigé Davyk (inversion balises de fermeture... bête hein?).

Merci.

Hors ligne

#11 08/05/2009 23:24:41

davyk
Membre
Inscription : 09/09/2008
Messages : 819
Site Web

Re : Multiview au lieu d'URL rewriting chez FREE.

ça arrive ce genre de bévues.

c'est drôle que ça rajoute un "index/" à chaque fois qu'on clique sur un lien!

en fait, il y a du contenu mais il se retrouve en bas de page (enfin sur mon msi u100 1024x600px)

donc pb de css.

Et si tu remplaçait "index//" par "/"?

vYk

Dernière modification par davyk (08/05/2009 23:30:57)


Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows

Hors ligne

#12 08/05/2009 23:32:30

vincecat
Membre
Inscription : 15/04/2009
Messages : 50

Re : Multiview au lieu d'URL rewriting chez FREE.

Ca doit être un problème d'adresse de départ pour réécrire l'adresse finale.
J'explique, si pour constituer l'adresse finale tu reprends l'adresse actuelle, que tu pars du '.' entre le nom de la page et l'extension et que tu remontes jusqu'au '/' précédent et qu'ensuite tu décide que tout ce qui est à gauche du '/' est ton adresse de base puis que tu ajoutes 'index/+nom fichier+'.html', alors tu ajoutes 'index/' à chaque fois que tu changes de page.

Pour le CSS, je ne comprends pas pourquoi il n'est pas lu (comme s'il n'était pas dans le bon répertoire) hors de la page d'accueil.

A+

Hors ligne

#13 08/05/2009 23:35:58

vincecat
Membre
Inscription : 15/04/2009
Messages : 50

Re : Multiview au lieu d'URL rewriting chez FREE.

En fait je viens de m'apercevoir que les liens ne sont plus bons.
Quel que soit celui que j'active, je retombes invariablement sur ma page d'accueil sans CSS.

A+

Hors ligne

#14 08/05/2009 23:35:59

davyk
Membre
Inscription : 09/09/2008
Messages : 819
Site Web

Re : Multiview au lieu d'URL rewriting chez FREE.

peut être que régler le pb du index/ résoudra aussi le pb du css, enfin, espérons.

tu as essayé de remplacer "index//" par "/ "   dans le code?

Dernière modification par davyk (08/05/2009 23:36:29)


Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows

Hors ligne

#15 08/05/2009 23:47:17

vincecat
Membre
Inscription : 15/04/2009
Messages : 50

Re : Multiview au lieu d'URL rewriting chez FREE.

Si je remplace 'index/' par '/', les adresses sont tops affichées dans la barre dinfo de Firefox, genre http://ecolonomiqhome.free.fr/contact.html, mais j'ai une erreur 404 chez FREE.
Ce qui veut dire que le code PHP actuel n'adapte pas l'adresse en retour au vrai nom des pages.

A+

Hors ligne

#16 08/05/2009 23:51:43

davyk
Membre
Inscription : 09/09/2008
Messages : 819
Site Web

Re : Multiview au lieu d'URL rewriting chez FREE.

pµ#ain, free, intenet explorer et tinymce sont vraiment à ch...!

on perd quand même pas mal de temps à essayer de résoudre des problèmes qui ne dépendent pas de nous.

mais bon, c'est passionnant quand même.

vYk


Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows

Hors ligne

#17 09/05/2009 00:08:44

davyk
Membre
Inscription : 09/09/2008
Messages : 819
Site Web

Re : Multiview au lieu d'URL rewriting chez FREE.

une piste:
rajouter dans le .htaccess:
Options +MultiViews

vYk


Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows

Hors ligne

#18 09/05/2009 00:30:47

phpeur
Membre
Inscription : 06/05/2009
Messages : 54

Re : Multiview au lieu d'URL rewriting chez FREE.

Re!

Très simple pour le css, il te suffit de mettre dans template.php entre les balises
<head> et </head>

<base href="http://www.tonsite.com/" />

Sa devrait fonctionner,

Sinon pour zite.php ce n'est pas encore sa, je vai analyser un peu le code de zite+ pour voir ce que je peux faire, sa devrait se faire sans trop de soucis.

++

Hors ligne

#19 09/05/2009 00:31:32

vincecat
Membre
Inscription : 15/04/2009
Messages : 50

Re : Multiview au lieu d'URL rewriting chez FREE.

Il semble que ce ne soit pas nécessaire.
En tout cas ça ne change rien aux comportements décrits ci-avant.

A+

Hors ligne

#20 09/05/2009 00:36:38

phpeur
Membre
Inscription : 06/05/2009
Messages : 54

Re : Multiview au lieu d'URL rewriting chez FREE.

Si si c'est obligatoire même! ^^!

Enfaite j'ai regardé, toi c'est une rédirection que tu fait avec ton nom de domaine, celui-ci n'est pas attaché au serveur Free avec les DNS de ceux-ci.

Donc toi il te faut mettre:
<base href="http://ecolonomiqhome.free.fr/" />

++

Hors ligne

#21 09/05/2009 00:48:02

phpeur
Membre
Inscription : 06/05/2009
Messages : 54

Re : Multiview au lieu d'URL rewriting chez FREE.

Re!

J'ai trouvé peut être en regardant vite fait le code de zite+,

On va faire un truc un peu a la barbard ^^ (façon de parler, c'est du codage propre), pour que ton site soit accessible, et j'y pencherai un peu plus quand j'aurai un peu temps.

Donc dans zite.php, ligne 129 à 174, remplacer toute la partie:

function builder() {
		if (array_key_exists('perma', $_GET)) {
			$z=-1;//au lieu de 1 !!!
			$p = $_GET['perma'];   // recheche page perma= !!!! trop long
//			$z = array_search($p , $this->struct);
//			if ($z==FALSE) $z=1;
			foreach ($this->struct as $k => $v) if ($v[0]==$p) $z=$k;
			if ($z==-1) {
					$this->content['main'] = $this->get_message('error404');
					header("HTTP/1.0 404 Not Found");
			}
			$_GET['z'] = $this->args[0] = $z;
		}
		$page = strlen($_GET['z']) ? $this->args[0] : 1;  // fixer page en cours
		if (in_array($page, $this->syspages)) {   // Est-ce une page système ?
			$pagefun = "page_$page";
			if (in_array($page.'.php', array_keys($this->module))) { // page de modulaire
				$this->content['main'] = $this->page_module($page);
			} else $this->content['main'] = $this->$pagefun();  // vrai page système
		} else { // page standard
			if ($this->config['site_status']=='on'|$_SESSION['zite_admin']>0) {
				if (array_key_exists($page, $this->struct) && ($this->struct[$page][cPageOn] || $_SESSION['zite_admin']>0)) {
							// Voir si la page est affichable
					$infos = $this->struct[$page];
					if ($this->isPageAuth($page)) {
						$this->content['menu_title'] = $infos[1];
						$this->truepage = $page;
						if (($infos[cPageType]&pgbitType)!=5) {
							$tmp = $this->get_content($infos[cPageIdent], ($infos[cPageType]%2)==0 , true);
							$this->content['main'] = $tmp ? $tmp : $this->get_message('errorNOFILE');
						} else header('Location: '.$infos[cPageIdent]); // si URL
				 	} else {
				 	$this->content['main'] = $this->get_message('error401');} // page interdite
          //header('HTTP/1.0 401 ident error');
				} else {
						$this->content['main'] = $this->get_message('error404');
						header("HTTP/1.0 404 Not Found");
				}
			} else {
				$this->content['main'] = $this->get_message('errorCLOSED');
			}
		}
		$this->navbuilder();
		if ($_SESSION['showadminbar']) $this->prepend($this->adminbar());
//		if ($_SESSION['zite_admin']) $this->prepend($this->adminbar());
	}

Par

function builder() {
		if ($this->rewrite==true) {
			$v = explode('.',basename($_SERVER['REQUEST_URI']));
			if (count($v)==2) {
				if (!array_key_exists('z',$_GET)) {
					$_GET['perma']=$v[0];
				}
			} else {
				$_GET['z'] = $this->args[0] = 1;
			}
		}
		if (array_key_exists('perma', $_GET)) {
			$z=-1;
			$p = $_GET['perma'];
			foreach ($this->struct as $k => $v) if ($v[0]==$p) $z=$k;
			$_GET['z'] = $this->args[0] = $z;
		}
		$page = strlen($_GET['z']) ? $this->args[0] : 1;
		if (in_array($page, $this->syspages)) {
			$pagefun = "page_$page";
			$this->content['main'] = $this->$pagefun();
		} else {
			if ($this->config['site_status']=='on'|$_SESSION['zite_admin']>0) {
				if (array_key_exists($page, $this->struct) && ($this->struct[$page][4] || $_SESSION['zite_admin']>0)) {
					$infos = $this->struct[$page];
					$this->content['menu_title'] = $infos[1];
					$this->truepage = $page;
					$tmp = $this->get_content($infos[0], $infos[3]==2);
					$this->content['main'] = $tmp ? $tmp : $this->get_message('errorNOFILE');
				} else {
					$this->content['main'] = $this->get_message('error404');
					header("HTTP/1.0 404 Not Found");
				}
			} else {
				$this->content['main'] = $this->get_message('errorCLOSED');
			}
		}
		$this->navbuilder();
		if ($_SESSION['showadminbar']) $this->prepend($this->adminbar());
//		if ($_SESSION['zite_admin']) $this->prepend($this->adminbar());
	}

Dernière modification par phpeur (09/05/2009 00:57:59)

Hors ligne

#22 09/05/2009 00:51:21

davyk
Membre
Inscription : 09/09/2008
Messages : 819
Site Web

Re : Multiview au lieu d'URL rewriting chez FREE.

oui mais est-ce qu'il s'agit de zite ou zite+ que tu "customises" car c'est zite+ que vincecat utilise.

vYk

Dernière modification par davyk (09/05/2009 00:52:12)


Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows

Hors ligne

#23 09/05/2009 00:53:01

phpeur
Membre
Inscription : 06/05/2009
Messages : 54

Re : Multiview au lieu d'URL rewriting chez FREE.

Oui, c'est pour zite+ ce que je vien de dire dans mon avant-dernier post, pour zite normal il faut faire les manips de mes 1er posts

Dernière modification par phpeur (09/05/2009 00:53:20)

Hors ligne

#24 09/05/2009 00:54:17

davyk
Membre
Inscription : 09/09/2008
Messages : 819
Site Web

Re : Multiview au lieu d'URL rewriting chez FREE.

oki


Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows

Hors ligne

#25 09/05/2009 01:01:39

davyk
Membre
Inscription : 09/09/2008
Messages : 819
Site Web

Re : Multiview au lieu d'URL rewriting chez FREE.

c'est bizarre, en local (easyphp), il n'y a aucun changement, toujours les mêmes liens affichés (index?z=1 par exemple)

vYk


Quand Chuck Norris utilise Windows, il ne plante pas.
ChuckNorrisN'aimePasWindows

Hors ligne

Pied de page des forums