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

page.php:

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

header.php:

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

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

расширяя ответ Dainis Abols, и ваш вопрос по обработке вывода,

рассмотрите следующее:

ваш заголовок.php имеет тег заголовка, установленный в <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; ?> в <?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; ?> в <?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; ?> 

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

header.php

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

PS: вам нужно удалить все эхо / отпечатки и т. Д., Чтобы весь возможный вывод хранился в переменной $output .

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

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

 <?php include("header.php"); $title = "TITLE"; $output = str_replace('%TITLE%', $title, $output); echo $output; ?> в <?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> 

Расширившись немного на ответе 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; ?> в <?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; ?> 

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

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

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

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

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

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

Это очень легко. Поместите этот код в 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, заголовок – это имя вашего сайта. И, например, если вы находитесь на странице регистрации, заголовок зарегистрирован | Имя вашего сайта

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

  <? 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 и поместить эту функцию внутрь, а затем выполнить запрос в MetaTags в Header.php. Чтобы использовать эту функцию change_meta_tags («NEW TITLE», «NEW DESCRIPTION», NEW KEYWORDS); , Не используйте эту функцию в Header.php! просто с другими страницами.

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

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

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

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

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

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