it-roy-ru.com

PHP изменить название страницы ПОСЛЕ, включая header.php?

page.php:

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

header.php:

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

я хочу, чтобы мой заголовок был установлен ПОСЛЕ, включая заголовочный файл. Можно ли сделать это? Я видел кое-что похожее на php-fusion телевизорах: http://docs.php-fusion.it/temi:output_handling

10
John Stockton

развивая ответ Дайниса Аболса и ваш вопрос об обработке вывода,

учитывать следующее:

ваш header.php имеет тег title, установленный на <title>%TITLE%</title>; "%" важны, так как вряд ли кто-либо введет% TITLE%, так что вы можете использовать его для str_replace () позже.

тогда вы можете использовать выходной буфер как так

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

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

и это должно сделать это.

ПРАВКА 

Я верю идея Гая работает лучше, так как она дает вам значение по умолчанию, если вам это нужно, IE:

  • Название теперь <title>Backup Title</title>
  • Код сейчас:
<?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

Что вы можете сделать, вы храните вывод в переменной, как:

header.php

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

PS: Вам нужно удалить все echos/prints и т.д., Чтобы все возможные выходные данные были сохранены в переменной $output.

Это можно легко сделать, определив $output = ''; в начале файла, а затем find/replaceecho в $output .=.

А затем замените %TITLE% на то, что вам нужно:

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

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

Другой способ - использовать javascript в вашем коде вместо:

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

Поместите это туда:

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

Или jQuery, если вы предпочитаете:

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

1. Просто добавьте переменную $ title перед функцией require

<?php

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

?>

2. Добавьте следующий код в header.php  

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

Если немного расширить ответ we.mamat, Вы можете использовать preg_replace вместо простой замены и полностью исключить необходимость в% title% . Что-то вроде этого:

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

вы можете установить с помощью JavaScript

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

Добавьте этот код вверху вашей страницы

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

Добавьте этот код в заголовочный файл вашего шаблона (включите)

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

Это очень легко . Поместите этот код в header.php 

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

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

Затем на странице поставить там:

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

Так что, если вы находитесь на Index.php, заголовок - это название вашего сайта .... И, например, если вы находитесь на странице регистрации, заголовок - Регистрация | Название вашего сайта

1
JamilHammash

Каждый простой, просто используя функцию, я создал ее.

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

Прежде всего вы должны создать файл function.php и поместить эту функцию внутрь, а затем сделать require в MetaTags в Header.php . Чтобы использовать эту функцию change_meta_tags («NEW TITLE», «NEW DESCRIPTION», NEW KEYWORDS); . Не используйте эту функцию в Header.php !! просто с другими страницами.

1
JamilHammash

Используйте jQuery функцию так:

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

0
Mohammadreza