2010-09-16 1 views
3

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

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

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

Спасибо.

ответ

5

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

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

простой и простой

+0

Все, что вы всегда хотели знать, включая схему базы данных! И превращение новых линий в тело! Ты жжешь! – zaf

+0

hehe Я люблю такие комментарии. Хотя идея использования шаблонов не так очевидна. –

+0

Спасибо за ответ и комментарии. Наверное, у меня просто был плохой дизайн, который приводит к тому, что часть страницы вытаскивается перед остальными. Мне нужно выяснить, как реализовать свою основную идею на нашем сайте. Еще раз спасибо. – Andelas

1

Эммм .....

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

EDIT

Затем в header.php

<head> 
    <title><?php echo $pageTitle; ?> </title> 
</head> 
+0

Я должен был уточнить, файл header.php содержит необходимые функции для создания страницы (подключение к базе данных и т. Д.). Так, например, когда у нас есть история, мы должны сначала загрузить файл header.php, чтобы установить соединение и вытащить детали истории. Тогда я хотел бы, чтобы название было заголовком записи новостей. Это более специфично для проблемы. – Andelas

+0

Да, использование переменной глобального заголовка страницы будет работать, и вам просто нужно убедиться, что в ответ вы объявляете ее значение, прежде чем использовать его в заголовке. Вы также можете иметь значение по умолчанию и таким образом в своем файле header.php: if (empty ($ pageTitle)) {// установить значение заголовка по умолчанию //} else {// установить заголовок в $ pageTitle} – Chris

+2

@ scatteredbomb well у вас просто плохая конструкция и ее нужно перестроить. Разделите свой заголовок на 2 части. –

1

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

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

Проблема в том, что мы уже используем теги head в header.php. Мы должны настроить метатеги, таблицы стилей и т. Д., И это делается в этом заголовке.Эти таблицы стилей и другие включают в себя стиль заголовка (вкладки/ссылки), поэтому мы не можем дождаться, чтобы определить их позже на странице после того, как мы вытащили необходимые данные, чтобы создать заголовок. – Andelas

+0

@ Рассеянная бомба Да, вы точно нацелились на проблему! Не должно быть выхода, прежде чем вы вытаскивать все необходимые данные для создания всей страницы! –

+0

К сожалению, я пропустил эту часть, когда впервые прочитал вопрос! :) – Matt

0

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

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

+0

он не может быть включен в каждую страницу. просто потому, что каждая страница нуждается в ** разных ** переменных. Его шаблон должен быть включен в основную страницу, а не наоборот –

+0

Как это сделать? В настоящее время я получаю свои динамические запросы от url ($ _GET ['id']) и подключаю их прямо к моей mysql_query (с некоторой дезинфекцией ...). Теперь каждая страница на моем сайте имеет разные потребности, поэтому каждая папка имеет индекс с другим заголовком php, и я включаю meta.php в каждый. – Bryan

 Смежные вопросы

  • Нет связанных вопросов^_^