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

Eléphanteau du PHP | 23 Messages

21 janv. 2012, 19:56

Bonjour,

Ma question va faire s'écrouler les pros du php mais il faut bien commencer... Il s'agit donc tout "simplement" de centraliser le nom de mes pages dans un fichier "titre.inc.php".

Actuellement, j'utilise un méthode rustique :rolleyes:(exemple avec les pages "inde.php" et "contact.php" :

Dans mes pages :

Code : Tout sélectionner

<?php include ('titre.inc.php'); ?> <title><?php echo "$titre_page $site_titre"; ?></title>
et dans ma page titre.inc.php :

Code : Tout sélectionner

<?php $site_titre = "Titre de mon site"; $page_titre["index.php"] = array("Accueil - "); $page_titre["plan-du-site.php"] = array("Plan du site - "); $adresse_fichier = $HTTP_SERVER_VARS["PHP_SELF"]; $adresse_fichier = basename($adresse_fichier); $titre_page = $page_titre[$adresse_fichier][0]; ?>
Je pense donc que la méthode a un peu évolué ? et en option, comment procéder avec des langues supplémentaires ?

ViPHP
xTG
ViPHP | 7331 Messages

21 janv. 2012, 20:34

Pour des langues supplémentaires tu rajoutes une dimension dans ton tableau. ;)

Eléphanteau du PHP | 23 Messages

21 janv. 2012, 22:50

OK mais j'ai un pb. Le code ne semble accepter qu'une seule langue. J'avais ajouté une ligne pour l'anglais

Code : Tout sélectionner

$titre_pageUk = $page_titreUk[$adresse_fichier][0];
en dessous du français

Code : Tout sélectionner

$titre_page = $page_titre[$adresse_fichier][0];
mais si j'utilise les deux sur la même page titre.inc.php, j'ai au final une erreur php qui s'affiche sur mon navigateur et qui précise les ligne qui posent pb soit le français ou l'anglais :shock:

ViPHP
xTG
ViPHP | 7331 Messages

22 janv. 2012, 10:28

Non une dimension supplémentaire, c'est comme ça : ;)
$lang = 'fr';
$page_titre = array(
  'fr' => array( 'index.php' => 'Accueil'),
  'en' => array( 'index.php' => 'Home')
);

$titre_page = $page_titre[$lang][basename($HTTP_SERVER_VARS["PHP_SELF"])];

Eléphanteau du PHP | 23 Messages

22 janv. 2012, 13:13

Et dans mes pages de site, j'imagine que ce n'est plus :

pour le français : <title><?php echo "$titre_page $site_titre"; ?></title>
pour l'anglais : <title><?php echo "$titre_page $site_titre"; ?></title>
:lol:

ViPHP
xTG
ViPHP | 7331 Messages

22 janv. 2012, 15:29

Bah si... Puisque c'est la variable $lang qui va définir si ce sera de l'anglais ou du français.

Eléphanteau du PHP | 23 Messages

22 janv. 2012, 17:03

Désolé, ne perd pas patience mais mon cerveau bloque rapidement sur ce qui est très logique.

Je réalise en plus que dans ma dernière saisie, j'ai rédigé le même code title pour le français et pour l'anglais. Si je reprends donc scolairement :

Dans mes pages fr, je saisis exactement "<title><?php echo "$titre_page $site_titre"; ?></title>"

et pour es pages anglaise, pour distinguer du français, je ne peux pas saisir le même code sinon comment se ferait la différence ?

Sachant qu'il me faudrait au final un nom de pages en deux parties : le titre du site + le titre de la page (ex : "titre mon site - Contactez-moi") 8-|

ViPHP
xTG
ViPHP | 7331 Messages

22 janv. 2012, 20:03

Un site a toujours un fichier de configuration, c'est la première chose qui est lue.
Donc dans ce fichier tu ferras la différence entre les différentes valeurs de $lang.

Ainsi pour tout le reste du code tu auras $lang possédant la bonne valeur.
Et tu n'as plus à te préoccuper du reste. ^^'
et pour es pages anglaise, pour distinguer du français, je ne peux pas saisir le même code sinon comment se ferait la différence ?
Le code est le même, c'est $lang qui fait la différence.

Eléphanteau du PHP | 23 Messages

22 janv. 2012, 21:23

Que le fichier de configuration permette de distinguer les deux langue via les différentes valeurs de $lang, c'est à peu près acquis, par contre, je ne vois pas comment de code peut reconnaitre que telle ou telle page est en anglais ou en français ?

C'est pour cette raison que j'avais précisé $titre_page = $page_titre[$adresse_fichier][0]; pour le français et $titre_pageUk = $page_titreUk[$adresse_fichier][0];
pour l'anglais en rajoutant "Uk"

Dans le cas de ton nouveau code, comment ça se passe ? #-o

Eléphant du PHP | 418 Messages

22 janv. 2012, 22:01

Si je peu me permettre, je pense que ce qu'il à voulut dire, c'est que une fois la langue de l'utilisateur définie (via un GET par exemple. Du style index.php?lg=en) tu n'as plus à te soucier de quoi que ce soit, vu que dans les paramètres de ton code, tu défini chaque valeur pour chacune des langue pouvant être utilisé sur ton site.
Si jamais tu comprend pas, je connais un super tuto video qui devrais te mettre sur la voie

Tuto video

Ça ne fonctionne pas vraiment comme tu veux, mais ça devrais t'aider à comprendre comment ça fonctionne et peu être de donner une idée pour te débloquer tout seul ;-)

Voila, en espérant que ça peu t'aider, bon courage et cordialement

Eléphanteau du PHP | 23 Messages

23 janv. 2012, 01:11

Merci de prendre le relai de mes questions un peu laborieuses. Le tuto est très intéressant (quoique le niveau soit limite pour moi) mais je dispose de la traduction et mon besoin se limite au français et à l'anglais.

Ok, si je crois avoir un peu compris, il suffit d'inclure seulement mon fichier "titre.inc.php" dans chaque page (comme c'est déjà le cas) et il est inutile que j'ajoute un code dans la balise title ? je laisse le champ vide ?

Dans mon fichier "titre.inc.php", c'est la variable $lang quidé signe la langue, ok mais pour obtenir au final pour chaque page, le titre du site + le nom de ma page, que manque t-il dans le code de xTG :
$lang = 'fr';
$page_titre = array(
  'fr' => array( 'index.php' => 'Accueil'),
  'en' => array( 'index.php' => 'Home')
);

$titre_page = $page_titre[$lang][basename($HTTP_SERVER_VARS["PHP_SELF"])];
Je précise aussi que dans l'immédiat, le site n'utilise pas de bdd mais je pense que ça ne change pas la question. :lol:

Eléphant du PHP | 418 Messages

23 janv. 2012, 02:00

Ce qu'il y a dans ton titre_inc.php, tu t'en fou un peu.

Le truc, c'est de savoir comment tu récupère la langue (via GET ou SESSION) et de définir ta variable $lang en fonction du choix de l'utilisateur.

Par exemple, si tu met en get, tu peu faire
if (isset($_GET['lang']))
{
  $lang=$_GET['lang'];
}
else
{
  $lang="fr";
}
Après pour l’inclusion de ta page script, je c pas comment tu gère les pages, mais il faut que ton script soit dispo partout où une traduction est à faire.

Perso, ce que tu demande n'est pas plus compliquer que ça, c'est tout au niveau des includes et des récupération de valeurs.

Je pense que si tu sais faire un include et récupérer les valeurs (GET, POST, SESSION ...), tu devrais arriver sans problème à faire ça.

Commence facile, et ensuite tu optimiseras avec l’Expérience.

Cordialement

ViPHP
xTG
ViPHP | 7331 Messages

23 janv. 2012, 09:58

Mon code est complémentaire au tien.
Dans la balise title tu auras ta variable $titre_page.
Elle prendra la valeur Accueil si $lang = 'fr' et Home si $lang = 'en'.
C'est la valeur de $lang qui dirige le tout.

Eléphant du PHP | 418 Messages

23 janv. 2012, 11:18

Comme le dit xTG, ton code est déjà bien avancer.

voici à quoi il pourrais ressembler au final

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

$titre_page = $page_titre[$lang][basename($HTTP_SERVER_VARS["PHP_SELF"])];
Au final tu n'auras plus qu'a fournir au moyen d'un lien, les valeurs du GET.

Sachant que tu peux aussi utiliser les sessions pour permettre le passage aisé d'une page à une autre.

Voila, j'éspére qu'on t'auras permis de comprendre comment ça fonctionne, et que tu arriveras à faire ce que tu souhaite.

Cordialement

Eléphanteau du PHP | 23 Messages

23 janv. 2012, 12:42

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: