PHP – come cambiare il titolo della pagina DOPO pagina, tra cui header.php?

page.php:

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

header.php:

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

voglio che il mio titolo da stabilire a seguito di tra cui il file di intestazione. È possibile fare questo? Ho visto un po ‘ simile roba su php-fusion piatto: http://docs.php-fusion.it/temi:output_handling

  • Il miglior modo sarebbe quello di cambiare la logica del vostro programma in modo che si può definire il titolo in tempo prima di emettere il tag del titolo. Ci sono soluzioni alternative, ma sono difettose.
  • Correlate: stackoverflow.com/questions/2825776/…
  • +1 Pekka. E per “difettose” leggere “Complicate”, “Relativamente alto costo del trattamento” e “Crazy gotcha per chi deve gestire la cosa”. Risolvere il tuo architettura, non combatterla.
  • Ok, grazie per le vostre risposte. 🙂

 

9 Replies
  1. 33

    espansione ha detto dainis Abols risposta, e la tua domanda sulla gestione dell’output,

    si consideri il seguente:

    tuo header.php è il titolo tag set di <title>%TITLE%</title>;
    il “%” sono importanti in quanto quasi nessuno tipi %TITOLO% u possibile utilizzare che per str_replace() più tardi.

    quindi, è possibile utilizzare buffer di output come

    <?php
        ob_start();
        include("header.php");
        $buffer=ob_get_contents();
        ob_end_clean();
    
        $buffer=str_replace("%TITLE%","NEW TITLE",$buffer);
        echo $buffer;
    ?>

    e che dovrebbe farlo.

    MODIFICA

    Credo Ragazzo idea funziona meglio in quanto ti dà di default se ne avete bisogno, vale a dire:

    • Il titolo è ormai <title>Backup Title</title>
    • Codice e’:
    <?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;
    ?>
    • +1 per il recupero di buffer di uscita della versione.
    • Grazie, che è quello che mi serviva! 🙂
    • questo metodo è seo friendly??
    • sì e no. se si modifica un titolo ogni pochi giorni, i motori di ricerca di solito piace, ma avere un titolo diverso per ogni pagina, è sicuramente seo friendly.
  2. 11

    1. Basta aggiungere $titolo variabile prima di richiedere funzione

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

    2. Aggiungere il codice riportato di seguito in header.php

    <title><?php echo $title; ?></title>
    • Questa è la risposta corretta.
  3. 9

    Cosa si può fare è, è possibile memorizzare il risultato in una variabile come:

    header.php

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

    PS: non È necessario rimuovere tutti echos/stampe, ecc, in modo che tutti i possibili output viene memorizzato nella $output variabile.

    Questo può essere facilmente fatto, definendo $output = ''; all’inizio del file e quindi trova/sostituisci echo per $output .=.

    E quindi sostituire il %TITLE% di che cosa avete bisogno:

    <?php
        include("header.php");
        $title = "TITLE";
    
        $output = str_replace('%TITLE%', $title, $output);
        echo $output;
    ?>

    Un altro modo è usare la javascript nel codice, invece di:

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

    Mettere questo in ci:

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

    JQuery o, se si preferisce:

    <script type="text/javascript">
        $(document).ready(function() {
            $(this).attr("title", "<?=$title;?>");
        });
    </script>
    • la prima variante non sembra funzionare. e poi, se voglio usare js, il titolo della pagina cambia, ma se si guarda il codice sorgente non è quello di cui ho bisogno
    • beh, in realtà, la prima variante delle opere, ma si mette il titolo della pagina al di fuori dell’area dell’intestazione, perché l’eco non va a header.php pagina
    • Sarà necessario rimuovere tutti echos in header.php e scrivere $output .= ovunque si abbia echo. L’idea e ‘ quella di script.
    • Oh, e JS sempre cambiare client di vista laterale, non il codice sorgente.
    • Vedo. Grazie per il vostro aiuto:)
  4. 7

    Espandendo un po ‘ su di noi.mamat risposta,
    si potrebbe utilizzare un preg_replace invece il semplice sostituire e rimuovere la necessità di un %titolo% del tutto. Qualcosa di simile a questo:

    <?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;
    ?>
  5. 3

    Aggiungere questo codice nella tua pagina

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

    Aggiungere questo codice nel tuo file di intestazione del Modello (includere)

    <title><?php echo $title; ?></title>
    • zkanoca voglio solo dire che questa soluzione è geniale!
    • Facile. Perfetto! Grazie!
  6. 3

    è possibile impostare utilizzando JavaScript

    <script language="javascript">
        document.title = "The new title goes here.";
    </script>
    • bello, ma ha 2 difetti. non è l’uso per il seo, perché questo codice non scrivere il titolo tag nell’intestazione. la seconda è come aggiungere i meta description e keywords?
  7. 1

    È molto facile.
    Mettere questo codice header.php

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

    Poi nella pagina mettete c’ :

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

    Quindi, se siete Index.php Il titolo è Il Nome del Sito.
    E per esempio, se siete sulla pagina di iscrizione , Il titolo è registrati | Il Nome del Sito

  8. 1

    Ogni Semplice utilizzo di una funzione , l’ho creato .

       <?
    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;
    }
    ?>

    Prima di tutto è necessario creare function.php file e mettere questa funzione all’interno ,quindi fare richiedono sotto il Metatag in Header.php .
    Per utilizzare questa funzione change_meta_tags(“TITOLO”,”NUOVA DESCRIZIONE”,NUOVE parole chiave); .
    Non utilizzare questa funzione in Header.php !! solo con un’altra pagine .

    • Basta assicurarsi che si svolge proprio di sequenza del primo titolo, descrizione, parole chiave. altrimenti questa funzione non funziona, in secondo luogo usa virgolette singole per la descrizione e parole chiave. e sì, molto comoda funzione, infatti,
  9. 0

    Utilizzare un jQuery funzione come questa:

    $("title").html('your title');

    • questa è una soluzione valida, ma una cattiva idea, SEO saggio. Il titolo non potrà essere modificato se non in javascript è caricato (tutti i bot non caricare una pagina javascript)

Lascia un commento