[PHP] Récupérer le contenu d'un élément

Un problème technique concernant l'utilisation d'un logiciel / CMS ou d'un service externe à FSH qui ne relève pas du support technique ? Vous pouvez vous entraider et échanger par l'intermédiaire de cette catégorie.
Avatar de l’utilisateur
Tilde3
Messages : 462
Inscription : 19 octobre 2011 à 13:11
Contact :

Bonjour,
Dans la situation suivante, je cherche à récupérer le contenu de h1#pageName pour qu’il génère automatiquement TITRE_PAGE.

Code : Tout sélectionner

<header>NOM_SITE — TITRE_PAGE</header>
<main>
  <h1 id="pageName">Mon titre</h1>
</main>
Je précise que je ne connais pas PHP, mais je l’utilise pour faire des include dans mes pages. Je reste ouvert à toute modification du code HTML.
Merci d’avance pour vos pistes et réponses.
Avatar de l’utilisateur
Elodie
Fondatrice / Responsable
Fondatrice / Responsable
Messages : 7951
Inscription : 2 avril 2010 à 20:14

Bonjour Tilde3,

Comme le titre de la page est renseigné après son affichage, je pense qu'il faudrait temporiser l'affichage en l'envoyant dans un flux ob (ob stream : https://www.php.net/manual/fr/function.ob-start.php) afin de le traiter en amont, avant de l'envoyer sur le navigateur. Ce traitement consisterait en une récupération de l'"id" à l'aide d'un regex puis suffirait de remplacer le TITRE_PAGE à l'aide d'un preg_replace, voir le faire en même temps si le regex est parfait.

Sinon concernant le site de FranceServ Hébergement, j'ai fait autrement et je trouve ça bien plus simple. Je récupère dans l'adresse URL la requête URI (REQUEST_URI) avant tout affichage HTML (avec une réécriture d'URL via le fichier .htaccess) et à l'aide d'un switch PHP, je renseigne le titre et la description de la page. Mais c'est vrai qu'il ne faut pas trop de pages et que ça ne change pas trop souvent, pour que ça soit viable.

Voilà comment je procède (j'ai simplifié mon code pour l'exemple) :

Code : Tout sélectionner

  $title_page = trim(str_replace('/', ' ', $_SERVER['REQUEST_URI']));
  switch ($title_page)
    {
    case 'legal nom-de-domaine':
      $title_page = "Conditions particulières des noms de domaine";
      $description_page = "Dernière version en vigueur au vendredi 16 janvier 2015.";
      break;
    case 'legal cgv':
      $title_page = "Conditions générales et particulières";
      $description_page = "CGV au 14 juin 2014.";
      break;
    case 'presentation':
      $title_page = "Présentation";
      $description_page = "Concevoir son offre, c'est être libre de ses choix.";
      break;
    }
      
Puis dans ma page index.php avant mon include :

Code : Tout sélectionner

<title><?php if(!empty($title_page)){echo($title_page.' - ');}?>FranceServ Hébergement<?php if(empty($title_page)){echo(' - www.franceserv.fr');}?></title>
<meta name="description" content="<?php echo($description_page);?>">
Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, contactez-nous directement.
Avatar de l’utilisateur
Tilde3
Messages : 462
Inscription : 19 octobre 2011 à 13:11
Contact :

Wow ! Merci Élodie pour cette réponse détaillée !
Avatar de l’utilisateur
Elodie
Fondatrice / Responsable
Fondatrice / Responsable
Messages : 7951
Inscription : 2 avril 2010 à 20:14

Il n'y a pas de quoi ;)
Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, contactez-nous directement.
Répondre