2010-04-28 2 views
11

Я использую заголовки для создания шаблонов для сайтов. Это легко и очень удобно для отладки.WebDesign: Заголовочный файл, но с пользовательскими названиями страниц?

Теперь я сталкиваюсь с проблемой использования головки НО с пользовательскими названиями страниц. Если это мой header.php>

<html> 
    <head> 
     <title> My Site : ??? </html> 
    </head> 
<body> 


</body> 
</html> 

мне нужно ??? для замены на каждую страницу.

Возможно ли это? Если да, то как? Спасибо. :)

ответ

18

Не зная больше о вашей схеме включения файла, самый простой способ будет:

page2.php

<?php 
$pageTitle = 'Page 2'; 
include 'header.php'; 
?> 

<div>My content</div> 

<?php include 'footer.php'; ?> 

header.php

<html> 
    <head> 
     <title> My Site : <?php echo $pageTitle ?> </title> 
    </head> 
<body> 

footer.php

</body> 
</html> 
+0

О, я думаю, я типа медленно ...:) – Bojack

0

вы можете запросить DB для заголовка страницы, а затем распечатать его с помощью PHP :)

Edit:

Оглядываясь на эту проблему, в зависимости от того, как у вас есть веб-сайт разработан этот может быть не самым простым решением. Но если вы уже используете какую-то систему ID, это должно быть легко.

1

Если i должен был добавить код до включения заголовка, поможет ли он?

<?php 
    $currentPage = "Random Page Title"; 
    include "header.php"; 
?> 

А затем использовать значение в header.php, чтобы напечатать заголовок страницы?

+0

да, но если вы определяете текущую страницу как «случайный заголовок страницы», это будет «случайная страница» title "на каждой странице или вам придется редактировать каждую страницу, где вы хотите получить название ... в конечном счете это плохо. Использование базы данных поможет вам выбрать заголовок страницы. – ChelseaStats

2

Ответ от webbiedave отлично, но в конечном итоге вы должны научиться использовать либо достойный язык шаблонов (Smarty, Twig), либо фреймворк PHP, у которого есть собственные шаблоны. Кохана и Codeigniter оба довольно легко попасть.

+0

Согласовано. По мере того, как он испытывает и нуждается в прогрессе, он должен совершить прыжок. Мой ответ был простой отправной точкой. – webbiedave

0

Да, это определенно поможет. Но вам нужно сделать небольшую настройку.

Прежде всего, убедитесь, что вы подключаетесь к базе данных, если хотите запрашивать/извлекать данные из базы данных. Чтобы это произошло, включите страницу «config.php» в самом начале скрипта, в котором будет присутствовать логика подключения к базе данных.

Затем напишите свой запрос, чтобы получить данные из этой базы данных, и назначьте это значение требуемой переменной для ее использования на титульной странице.

Наконец, включите страницу "header.php".

Для страницы "config.php": -

Логика соединения с базой данных, как использование "mysql_connect()" & "mysql_select_db()" функции.

Для "пользовательских.PHP»страница: -

<?php 
    include "config.php"; 

    $sql = "SELECT pageTitle FROM db_table WHERE condition = 'something'"; 
    $sql_exe = mysql_query($sql) or die("Error in Fetching Page Title"); 
    if(mysql_num_rows($sql_exe)) { 
    $currentPage = mysql_result($sql_exe, 0, 0); 
    } 
    else { 
    $currentPage = "Random Page Title"; 
    } 
    mysql_free_result($sql_exe); 

    include "header.php"; 
?> 

Кроме того, если вы хотите, вы всегда можете использовать некоторый класс для подключения MySQL & запросов для извлечения данных, но это, как он всегда работает

0

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

0

вы также мог бы использовать что-то вроде этого:

если ты женился на РНР имена файлов с вашей страницей названия

Вы можете использовать функцию explode или str replace, чтобы сделать ее более удобной для замены запятых или символов подчеркивания, например.

<?php 
    echo basename($_SERVER['REQUEST_URI']); 
    ?> 

или

<?php 
    // my_page_title.php 
    $var=basename($_SERVER['REQUEST_URI']); 
    $pagetitle=str_replace("_"," ",$var); 

    // my page title 
    ?>  
    <title> My Site : <?php echo $pagetitle; ?> </title> 
0

Исправленная 1 небольшая ошибка в записи header.php Webbiedave в

</html> should be </title> 

<html> 
    <head> 
     <title> My Site : <?php echo $pageTitle ?> </title> 
    </head> 
<body>