Nommage centralisé de mes pages dans titre.inc.php

Eléphant du PHP | 418 Messages

23 janv. 2012, 13:40

je pense que tu n'as pas commencer de la bonne manière.

Le premier truc à savoir, lorsque tu commence un site c'est de se poser des questions sur son fonctionnement, et parmi les questions à se poser, dois je traduire mon site?

Si oui, quelle partie, et comment je vais m'y prendre. (au passage tu remarqueras que tu as déjà tout le fonctionnement de ton site en te posant les bonnes questions, vu que tu pose des question et que selon la réponse tu fait tel ou tel chose, ça reviens en php avec faire des condition ou autre ^^)

Pour ton fonctionnement, je te conseil de créer une page qui va contenir des tableaux (array) de toutes les valeurs à traduire en français avec la clés "fr" et un autre en anglais avec la clés "en" que tu incluras dans index.php (ne l'oublie pas, sinon tu va avoir un soucis ^^)

exemple:
fr = array('valeur1','valeur2','valeur3', ....)
en = array('value1','value2','value3', ....)
Ainsi déjà tu auras chaque langues et chaque traduction.

Ensuite, tu fait des pages incluses (c'est à dire: index.php, index.php?p=en-savoir-plus, index.php?p=contact, etc....), et tu n'auras qu'a faire une condition qui définiras la valeur du GET['p'] et le mettras en relation avec celui de ton tableau, et ceci (la condition) dans ta page index.php.
De cette manière chaque pages auras déjà les valeurs récupérer, puisque c'est la page index.php qui les recueilles et que les autres sont incluses dans cette dernière.

Sachant que pour définir la langue ça reste comme dit plus haut.

Donc, voila, pour commencer, et pas trop te perdre, fait déjà ça, ensuite essaye de voir les avantages et inconvénients de cette manière.

Je te donne le lien de mon précédant poste dans le quel j'ai demande les relation entre les tableaux (array) Lien

En espérant que ça va t'aider.

EDIT:

J'ai oublier de préciser de faire un tableau avec les valeurs des titre de pages.
Tu n'auras qu'a faire jouer les valeur de ce dernier tableau et du tableau des langues.

par exemple:
titre=('accueil', 'en-savoir-plus', 'contact' ...);
fr=(Page d'accueil'','En savoir plus','Nous contacter','',...);
en=(''......

Ainsi dans cette exemple tu lie titre avec fr.
Après je pense que ça peux être optimisé, mais moi aussi j'ai mes limites ^^, peut être xTG pourras t'aider mieux que moi, ou d'autre

Désolé pour l'oublie Oo

Cordialement

ViPHP
xTG
ViPHP | 7331 Messages

23 janv. 2012, 14:00

C'est sympa de vous mettre à ma portée ! :wink:

J'ai donc bien compris maintenant que c'était bien la valeur $lang qui pilote le tout. Par contre, comme l'objectif est de voir s'afficher au final le titre du site et en suivant, le titre de ma page, si j'ai :
  'fr' => array( 'index.php' => 'Accueil'),
  'en' => array( 'index.php' => 'Home')
Est-ce que je dois ressaisir à chaque fois le titre de mon site soit :
  'fr' => array( 'index.php' => 'Titre de mon site - Accueil'),
 'fr' => array( 'en-savoir-plus.php' => 'Titre de mon site - En savoir plus'),
 'fr' => array( 'contact.php' => 'Titre de mon site - contact'),
8-|

J'ai conscience que je pars de très bas... :roll:
Non, il faut juste réutiliser $titre_site dans ta page lors de l'affichage.
Je te l'ai dit, ce que je te proposais n'était qu'un plus en fonction de ce que tu avais déjà. Cela ne concernait que le titre de la page, pas le titre du site.
Après si tu veux un titre de site traduit tu peux appliquer la même méthode que pour le titre de page.

Eléphanteau du PHP | 23 Messages

23 janv. 2012, 16:14

Je crois qu'il me manque quelques pièces essentielles pour tout comprendre, les premiers pas dans ce code ne sont pas simple.

Bon, je ne vais pas vous torturer plus longtemps. Pour l'instant j'en suis à placer sur les pages :
<?php
include ('titre.inc.php');
?>
<title><?php echo "$site_titre $titre_page"; ?></title>
A ce stade, j'ai effectivement fait l'économie d'une balise spécifique pour les autres pages de langue (c'est déjà pas mal !)

et ensuite, dans ma page titre.inc.php, il faut que j'intègre le titre du site avant (ou après) le site et c'est là que je rame et ça devient n'importe quoi :
<?php

if (isset($_GET['lang'])) { $lang=$_GET['lang']; }
else { $lang="fr"; }
$titre_site = array(
  'fr' => array( 'index.php' => 'Mon site'),
  'en' => array( 'index.php' => 'My website')
);

if (isset($_GET['lang'])) { $lang=$_GET['lang']; }
else { $lang="fr"; }
$page_titre = array(
  'fr' => array( 'index.php' => 'Accueil'),
  'en' => array( 'index.php' => 'Home'),
  'fr' => array( 'contact.php' => 'contact'),
  'en' => array( 'contact.php' => 'contact')
);

$titre_site = $page_titre[$lang][basename($HTTP_SERVER_VARS["PHP_SELF"])];
?>
Bon, je ne vous en voudrai pas si vous laissez tomber, il faudra que je refasse plusieurs passes sérieuses dans le tuto du siteduzero...

ViPHP
xTG
ViPHP | 7331 Messages

23 janv. 2012, 16:43

C'est comme ça qu'on rempli le tableau :
$page_titre = array(
  'fr' => array( 'index.php' => 'Accueil',
                     'contact.php' => 'contact'),
  'en' => array( 'index.php' => 'Home',
                      'contact.php' => 'contact'),
);

Eléphanteau du PHP | 23 Messages

23 janv. 2012, 17:00

Ok pour cette précision, effectivement, il n'y a maintenant plus de saisie redondante.

Mais je n'ai toujours pas compris où devait figurer le titre de mon site dans le code pour qu'il s'affiche à côté de mes titre de page 8-|

Eléphant du PHP | 418 Messages

23 janv. 2012, 17:31

Avant par exemple

echo $titre_site.' : '.$titrepage;

Eléphanteau du PHP | 23 Messages

23 janv. 2012, 18:17

SI je désigne ici l'ordre de présentation de mon nom de page (titre site + nom page) à quel endroit dois-je inscrire le nom de mon site (une seule fois) ? :?

J'en suis donc à :
<?php

echo $titre_site.' : '.$titrepage;

if (isset($_GET['lang'])) { $lang=$_GET['lang']; }
else { $lang="fr"; }
$page_titre = array(
  'fr' => array( 'index.php' => 'Accueil','contact.php' => 'contact'),
  'en' => array( 'index.php' => 'Home','contact.php' => 'contact'),
);

$titre_site = $page_titre[$lang][basename($HTTP_SERVER_VARS["PHP_SELF"])];
?>

ViPHP
xTG
ViPHP | 7331 Messages

23 janv. 2012, 18:26

#-o #-o #-o #-o

Dans titre.inc.php tu définis une variables $titre_site qui affiche le nom de la page.
Il faut ensuite la réutiliser dans ta page dans la balise title...
Et de même tu définis dans le fichier titre une variable pour le titre du site (tu as mal nommé ta variable du nom de page en fait...) et tu l'utilises dans ta page.

Eléphanteau du PHP | 23 Messages

23 janv. 2012, 19:15

Oui, ce n'était pas effectivement totalement cohérent avec ma balise title. Donc, dans mes pages de site :
<?php
include ('titre.inc.php');
?>
<title><?php echo "$titre_site $titre_page"; ?></title>
et dans ma page titre.inc.php :
<?php

echo $titre_site.' : '.$titre_page;

if (isset($_GET['lang'])) { $lang=$_GET['lang']; }
else { $lang="fr"; }
$page_titre = array(
  'fr' => array( 'index.php' => 'Accueil','contact.php' => 'contact'),
  'en' => array( 'index.php' => 'Home','contact.php' => 'contact'),
);

$titre_site = $titre_page[$lang][basename($HTTP_SERVER_VARS["PHP_SELF"])];
?>
Est-ce que c'est correct ? sachant que je ne sais toujours pas où je dois définir en clair mon titre de site... :?

Eléphant du PHP | 418 Messages

23 janv. 2012, 19:27

....sachant que je ne sais toujours pas où je dois définir en clair mon titre de site... :?
Moi ce que je comprend pas, c'est ce que tu appel le titre de ton site, et qu'est ce que tu entend pas définir en clair?????

ViPHP
xTG
ViPHP | 7331 Messages

23 janv. 2012, 19:48

titre.inc.php
<?php

if (isset($_GET['lang'])) { $lang=$_GET['lang']; }
else { $lang="fr"; }
$page_titre = array(
  'fr' => array( 'index.php' => 'Accueil','contact.php' => 'contact'),
  'en' => array( 'index.php' => 'Home','contact.php' => 'contact'),
);

$titre_page = $titre_page[$lang][basename($HTTP_SERVER_VARS["PHP_SELF"])];
$titre_site = 'Le nom de mon site - ';
?>

Eléphanteau du PHP | 23 Messages

23 janv. 2012, 20:12

Ça fonctionne donc parfaitement et c'est exactement le coup de lessive que je souhaitais sur mon ancien code ! :D :D :D

Sincèrement, je suis impressionné par ta patience et le temps que tu as pris pour m'aider sur un sujet (et un utilisateur) aussi peu motivant pour toi. C'est le premier forum php débutant ou on ne me jette pas à la porte et où je repars avec une vraie solution pro que je comprends presque !!! :wink: :wink: :wink:

Merci aussi à Fre3z69

Très bonne soirée ! en espérant ne pas avoir à revenir sur ce sujet pour une petite retouche :mrgreen:

Eléphant du PHP | 418 Messages

23 janv. 2012, 21:34

oui, j'avais pas compris ça, je croyais que tu avais déjà définit ça dans titre_inc.php

Bref, courage à toi.

Corialement

Eléphanteau du PHP | 23 Messages

02 févr. 2012, 12:46

Bonjour,
Désolé de relancer cette histoire que je croyais en totalité réglée mais j'ai encore un petit bug. Si tout fonctionne parfaitement en français, ça ne fonctionne pas en englais :?

Le code de mes pages est bien :
<title><?php echo "$titre_site $titre_page"; ?></title>
et celui de ma page titre.inc.php est :
<?php

if (isset($_GET['lang'])) { $lang=$_GET['lang']; }
else { $lang="fr"; }
$page_titre = array(
  'fr' => array( 'index.php' => 'Accueil','contact.php' => 'contact'),
  'en' => array( 'index.php' => 'Home','contact.php' => 'contact'),
);

$titre_page = $titre_page[$lang][basename($HTTP_SERVER_VARS["PHP_SELF"])];
$titre_site = 'Le nom de mon site - ';
?>
Est-ce que j'aurais zappé une ligne :shock:

ViPHP
xTG
ViPHP | 7331 Messages

02 févr. 2012, 13:12

As-tu dans l'url la variable lang ayant pour valeur "en" ? ^^
Exemple : mapage.php?lang=en