1

由于习惯,我目前只将我的页眉设计和页脚设计放在单独的包含文件中,但我没有将整个<head></head>和页脚脚本放在里面。

这是因为,在我看来,每个页面都会有不同的标题/元数据,并且有些页面可能有不同的脚本(有些页面需要一个脚本,而其他页面不需要)。如果所有页面共享一个标题,那么所有页面将共享它们可能不需要使用的同一组脚本。

我知道所有文件共享一个标题(其中包含整个 head 标签)的优点是很容易跨应用脚本(如果要在全球范围内使用)。或者说,如果我添加新的 Google 字体,所有页面都可以访问它,我只更改 1 个文件。

但是如何处理每个页面之间的差异呢?在那些动态的地方放置条件/变量是一种好习惯吗?就像在 Wordpress 等 CMS 中一样?

4

1 回答 1

1

您可以使用主页示例执行以下操作:

<?php 
    // put metadata inside this array
    $pageData = array(
        'title' => 'my page title',
        'metaDataDescription' => 'my meta data for this page',
        'customAssets' => array(
            array(
                'type' => 'js', 
                'src' => '//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js'
            )
        )
    );
    // include your header file now
    require_once 'header.php';
    ?>

    <div>
        This is where the unique content or HTML for this page should go.
        You could also include unique JavaScript here as well
    </div>
    <?php
        require_once 'footer.php';
    ?>

然后header.php文件可能如下所示:

<?php
// TODO add a null check for $pageData 
// and fill in with defaults
?>
<!DOCTYPE html>
<html lang="en-US">
<head>
    <meta charset="utf-8" />
    <title><?php echo $pageData['title'];?></title>
    <!-- add general css and js files here -->
    <?php
    foreach($pageData['customAssets'] as $index => $asset) {
       // TODO do some code to write out custom assets
       // ex:
       if($asset['type'] === "js") {
          echo '<script type="text/javascript" src="' . $asset['src'] . ' "></script>';
       }
    }?>

    <!-- use php to get meta data like title, description, keywords... ex: -->
    <meta name="description" content="<?php echo $pageData['metaDataDescription'];?>" />
    <!-- add favicon and whatever else in the header here -->
</head>
<body>
于 2013-07-31T04:26:57.493 回答