【问题标题】:PHP to place page-generated title into <head>PHP 将页面生成的标题放入 <head>
【发布时间】:2011-04-13 09:04:55
【问题描述】:

我们在我们网站的所有页面中都包含一个 header.php 文件。因此,我们可以在 header.php 文件中放置一个单独的标题,该文件将应用于整个站点,或者在每个页面中都有一个自定义标题以更具描述性。

问题是这样做时,标题会在头标签之外(保留在 header.php 文件中)并被标记为无效。

是否有某种函数可以用来在页面中定义一个变量($pageTitle),它会显示在 head 标签中?

谢谢。

【问题讨论】:

    标签: php metadata title


    【解决方案1】:

    嗯.....

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

    编辑

    然后在你的 header.php 中

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

    【讨论】:

    • 我应该澄清一下,header.php 文件包含生成页面的必要函数(连接到数据库等)。因此,例如,当我们有一个故事时,我们必须先加载 header.php 文件才能建立连接并拉取故事细节。然后我想让标题成为新闻条目的标题。这是更具体的问题。
    • 是的,使用全局页面标题变量将起作用,您只需确保在回答中声明其值,然后在标题中使用它。您还可以在 header.php 中设置默认值: if(empty($pageTitle)){//set title to default value//}else{//set title to $pageTitle}
    • @scatteredbomb 好吧,你的设计很糟糕,必须重建它。将您的标题分成两部分。
    【解决方案2】:

    您似乎想要在某些页面上使用动态标题?

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

    【讨论】:

    • 问题是我们已经在 header.php 中使用了 head 标签。我们必须设置元标记、样式表等,这些都是在该标题中完成的。这些样式表和其他包含用于设置实际标题(选项卡/链接)的样式,因此在我们提取必要的数据以创建标题后,我们迫不及待地在页面稍后定义它们。
    • @scatteredbomb 是的,您正是针对这个问题!在您提取所有必要的数据以创建整个页面之前,应该没有输出!
    【解决方案3】:

    其实应该是这样的

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

    模板.php:

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

    tpl.news.php

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

    简单明了

    【讨论】:

    • 您一直想知道的一切,包括数据库架构!并在体内转换新线条!你摇滚!
    • 呵呵我喜欢这样的cmets。虽然使用模板的想法并不那么明显。
    • 感谢您的回复和 cmets。我想我确实有糟糕的设计,导致部分页面在其余部分之前被拉出。我必须弄清楚如何将您的基本想法实施到我们的网站中。再次感谢。
    【解决方案4】:

    在我看来,您仍然可以在标题中完成所有这些工作:

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

    这样就结束了 header.php。现在将它包含在您要使用的每个页面上,然后使用您的&lt;body&gt;&lt;/body&gt;&lt;/html&gt;

    只是一个想法,但无论如何你要解决这个问题,你必须先连接到你的数据库,检查页面是否存在,如果存在则将标题设置为变量,然后开始构建 html。

    【讨论】:

    • 它不能包含在每个页面中。只是因为每个页面都需要不同的变量。它的模板应该包含在主页中,而不是相反
    • 怎么样?我目前从 url ($_GET['id']) 获取我的动态请求并将它们直接插入到我的 mysql_query 中(经过一些清理......)。现在我网站上的每个页面都有不同的需求,所以每个文件夹都有一个带有不同标题 php 的索引,我在每个文件夹中都包含了 meta.php。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 2015-06-16
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    相关资源
    最近更新 更多