PHP для размещения заголовка, сгенерированного страницей, в ‹head›

Мы включаем файл header.php на все страницы нашего сайта. Таким образом, мы могли бы либо поместить один заголовок в файл header.php, который будет применяться ко всему сайту, либо иметь собственный заголовок на каждой странице, чтобы быть более наглядным.

Проблема в том, что при этом заголовок будет вне тегов заголовка (которые остаются в файле header.php) и помечен как недопустимый.

Есть ли какая-то функция, которую мы можем использовать для определения переменной ($ pageTitle) на странице, которая будет отображаться в теге заголовка?

Спасибо.


person Andelas    schedule 16.09.2010    source источник


Ответы (4)


На самом деле так и должно быть

news.php:

<?
include "config.php"; //connect to database HERE.
$data = getdbdata("SELECT * FROM news where id = %d",$_GET['id']);
$page_title = $data['title'];
$body = nl2br($data['body']);

$tpl_file = "tpl.news.php";
include "template.php";
?>

template.php:

<html>
<head>
<title><?=$page_title?></title>
</head>
<body>
<? include $tpl_file ?>
</body>

tpl.news.php

<h1><?=$page_title?></h1>
<?=$body?>

легко и просто

person Your Common Sense    schedule 16.09.2010
comment
Все, что вы всегда хотели знать, включая схему базы данных! И преобразование новых линий в тело! Ты жжешь! - person zaf; 16.09.2010
comment
хе-хе я люблю такие комментарии. Хотя идея использования шаблонов не так очевидна. - person Your Common Sense; 16.09.2010
comment
Спасибо за ответ и комментарии. Думаю, у меня просто был плохой дизайн, из-за которого часть страницы вытягивалась раньше остальных. Придется придумать, как реализовать вашу основную идею на нашем сайте. Еще раз спасибо. - person Andelas; 16.09.2010

Эммм .....

<?php 
$pageTitle = "Test";
include('header.php');
?>

ИЗМЕНИТЬ

Затем в вашем header.php

<head>
    <title><?php echo $pageTitle; ?> </title>
</head>
person Jimithus    schedule 16.09.2010
comment
Я должен был уточнить, файл header.php содержит необходимые функции для создания страницы (подключение к базе данных и т. Д.). Так, например, когда у нас есть история, мы должны сначала загрузить файл header.php, чтобы установить соединение и получить подробности истории. Тогда я бы хотел, чтобы заголовок был заголовком новости. Это более конкретно для проблемы. - person Andelas; 16.09.2010
comment
Да, использование глобальной переменной заголовка страницы будет работать, и вам просто нужно убедиться, что в ответе вы объявляете ее значение, прежде чем использовать его в заголовке. У вас также может быть значение по умолчанию, и таким образом в вашем header.php do: if (empty ($ pageTitle)) {// установить для заголовка значение по умолчанию //} else {// установить для заголовка значение $ pageTitle} - person Chris; 16.09.2010
comment
@scatteredbomb ну, у вас просто плохой дизайн, и вам нужно его перестроить. Разделите заголовок на 2 части. - person Your Common Sense; 16.09.2010

Похоже, вам нужен динамический заголовок на некоторых страницах?

<?php
$defaultPageTitle='Default Title'; //Default title
include('header.php');
?>

<?php
/* You would define $newPageTitle here if necessary
 (i.e. use $_SERVER['REQUEST_URI'] to get the URL
 and check a database for the $newPageTitle */
?>
<head>
<?php
if(isset($newPageTitle)){echo '<title>'.$newPageTitle.'</title>';}
else{echo '<title>'.$defaultPageTitle.'</title>';}
?>
</head>
person Matt    schedule 16.09.2010
comment
Проблема в том, что мы уже используем теги заголовка в header.php. Нам нужно настроить метатеги, таблицы стилей и т. Д., И это делается в этом заголовке. Эти таблицы стилей и другие включения используются для стилизации фактического заголовка (вкладок / ссылок), поэтому нам не терпится определить их позже на странице после того, как мы извлекли необходимые данные для создания заголовка. - person Andelas; 16.09.2010
comment
@scatteredbomb Да, вы точно поставили задачу! Не должно быть вывода, пока вы не извлечете все необходимые данные для создания всей страницы! - person Your Common Sense; 16.09.2010

Насколько я понимаю, вы все еще можете проделать всю эту работу в своем заголовке:

<?php
include(...your config/connect file...);
mysql_query(... get page variables ...);
$pageTitle = stripslashes($titlefromDB);
?>
<html><head><title><?php echo $pageTitle; ?></head>

На этом вы завершаете header.php. Теперь включите это на каждую страницу, которую хотите использовать, и следуйте за своим <body></body></html>.

Только одна идея, но в любом случае вам нужно будет сначала подключиться к своей БД, проверить, существует ли страница, если это так, установить заголовок как переменную, а затем начать создание html.

person Bryan    schedule 16.09.2010
comment
его нельзя включить на каждую страницу. просто потому, что для каждой страницы нужны разные переменные. Его шаблон должен быть включен на главную страницу, а не наоборот. - person Your Common Sense; 16.09.2010
comment
Как же так? В настоящее время я получаю свои динамические запросы с URL-адреса ($ _GET ['id']) и подключаю их прямо к моему mysql_query (с некоторой очисткой ...). Теперь у каждой страницы на моем сайте разные потребности, поэтому каждая папка имеет индекс с разным заголовком php, и я включаю meta.php в каждую. - person Bryan; 16.09.2010