web-dev-qa-db-fra.com

PHP - comment changer le titre de la page APRES y compris header.php?

page.php:

<?php
include("header.php");
$title = "TITLE";
?>

header.php:

<title><?php echo $title; ?></title>

je veux que mon titre soit défini APRÈS le fichier d’en-tête. Est-il possible de faire cela? J'ai vu des trucs similaires sur les télévisions php-fusion: http://docs.php-fusion.it/temi:output_handling

10
John Stockton

développer la réponse Dainis Abols, et votre question sur la gestion de la sortie,

considérer ce qui suit:

votre en-tête.php a la balise de titre définie sur <title>%TITLE%</title>; les "%" sont importants car presque personne ne tape% TITLE% afin que vous puissiez l'utiliser ultérieurement pour str_replace ().

alors, vous pouvez utiliser buffer de sortie like so

<?php
    ob_start();
    include("header.php");
    $buffer=ob_get_contents();
    ob_end_clean();

    $buffer=str_replace("%TITLE%","NEW TITLE",$buffer);
    echo $buffer;
?>

et cela devrait le faire.

MODIFIER 

Je crois L'idée de Guy fonctionne mieux car elle vous donne un défaut si vous en avez besoin, c'est-à-dire:

  • Le titre est maintenant <title>Backup Title</title>
  • Le code est maintenant:
<?php
    ob_start();
    include("header.php");
    $buffer=ob_get_contents();
    ob_end_clean();

    $title = "page title";
    $buffer = preg_replace('/(<title>)(.*?)(<\/title>)/i', '$1' . $title . '$3', $buffer);

    echo $buffer;
?>
32
we.mamat

Ce que vous pouvez faire est de stocker la sortie dans une variable comme:

header.php

<?php
   $output = '<html><title>%TITLE%</title><body>';
?>

PS: Vous devez supprimer all echos/prints etc. pour que toutes les sorties possibles soient stockées dans la variable $output.

Cela peut être facilement fait en définissant $output = ''; au début du fichier, puis find/replaceecho à $output .=.

Et remplacez ensuite le %TITLE% par ce dont vous avez besoin:

<?php
    include("header.php");
    $title = "TITLE";

    $output = str_replace('%TITLE%', $title, $output);
    echo $output;
?>

Une autre façon consiste à utiliser javascript dans votre code, au lieu de:

<title><?php echo $title; ?></title>

Mettez ceci dedans là:

<script type="text/javascript">
    document.title = "<?=$title;?>"
</script>

Ou jQuery, si vous préférez:

<script type="text/javascript">
    $(document).ready(function() {
        $(this).attr("title", "<?=$title;?>");
    });
</script>
9
Peon

1. Ajoutez simplement la variable $ title avant la fonction require

<?php

$title = "Your title goes here";
require("header.php");

?>

2. Ajouter le code suivant dans header.php  

<title><?php echo $title; ?></title>
7
J Perera

En développant un peu la réponse de we.mamat, .__, vous pouvez utiliser un preg_replace au lieu du simple remplacer et supprimer la nécessité d'un% title% . Quelque chose comme ça:

<?php
ob_start();
include("header.php");
$buffer=ob_get_contents();
ob_end_clean();

$title = "page title";
$buffer = preg_replace('/(<title>)(.*?)(<\/title>)/i', '$1' . $title . '$3', $buffer);

echo $buffer;
?>
7
Guy

vous pouvez définir en utilisant JavaScript

<script language="javascript">
    document.title = "The new title goes here.";
</script>
3
Nirav Ranpara

Ajoutez ce code en haut de votre page

<?php
    $title="This is the new page title";
?>

Ajoutez ce code sur votre fichier d'en-tête de modèle (inclure)

<title><?php echo $title; ?></title>
2
Thilanka De Silva

C'est très facile . Mettez ce code dans header.php 

        <? 
$sitename = 'Your Site Name'
$pagetitle;

if(isset($pagetitle)){
 echo "<title>$pagetitle." | ". $sitename</title>";
} 
  else {
echo "<title>$sitename</title>";
}
?>

Puis dans la page mise là:

 <?
    $pagetitle = 'Sign up'
    include "header.php";
    ?>

Donc, si vous êtes sur Index.php, le titre est Votre nom de site . Et par exemple si vous êtes sur la page d'inscription, Le titre est Inscription | Votre nom de site

1
JamilHammash

Chaque simple en utilisant simplement une fonction, je l'ai créée.

   <?
function change_meta_tags($title,$description,$keywords){
        // This function made by Jamil Hammash
    $output = ob_get_contents();
    if ( ob_get_length() > 0) { ob_end_clean(); }
    $patterns = array("/<title>(.*?)<\/title>/","<meta name='description' content='(.*)'>","<meta name='keywords' content='(.*)'>");
    $replacements = array("<title>$title</title>","meta name='description' content='$description'","meta name='keywords' content='$keywords'");

    $output = preg_replace($patterns, $replacements,$output);  
    echo $output;
}
?>

Tout d’abord, vous devez créer un fichier function.php et y insérer cette fonction, puis placer require sous les méta-tags dans Header.php . Pour utiliser cette fonction change_meta_tags ("NEW TITLE", "NEW DESCRIPTION", NEW KEYWORDS); . N'utilisez pas cette fonction dans Header.php !! juste avec une autre page.

1
JamilHammash