使用PHP包含特定内容的include()

时间:2015-05-12 04:10:37

标签: php

我有几个带有页眉和页脚的文件,让我们说file1.phpfile2.phpfile3.php

这些文件include()文件header.phpfooter.php.

现在关注的是......每个页面都必须加载具有某些css样式的通用标题内容,而且还要为此类页面加载特定样式。这也发生在页脚上:它为所有页面加载了一堆脚本,但是为特定页面加载了特定的脚本。

我怎样才能做到这一点? 我当然不想把特定的脚本放在特定的页面上,因为它可能不仅附加到一个,而是几个,js脚本或css样式可以附加到五页或十页... < / p>

我在页眉或页脚页面中为每个案例考虑switch(),然后在其他页面中考虑任何条件(例如$_SERVER['PHP_SELF']),但我该如何处理包含内容?它包括()我正在寻找什么?

谢谢。

2 个答案:

答案 0 :(得分:0)

这远远超出了Stackoverflow的范围,但为什么不呢。

切换模板

我看到你补充说你正在考虑使用开关。以下是您可以做的简单示例。

的header.php

<html>
<head>
   <title>...</title>
   <?php switch(basename($_SERVER["SCRIPT_FILENAME"], '.php')) {
   case 'file1': ?>
       <script src="file1.js"></script>
   <?php break;
   case 'file2': ?>
       <script src="file2.js"></script>
   <?php break;
   }
   ?>
</head>
<body>

只需在案例和中断之间采样代码。此代码启动文件名的切换,file1.php将为'file1'。

输出缓冲

你还可以做的是输出缓冲。假设你在file1.tpl.php有一个模板,那么你有header.php。在file1.php中,你可以这样做:

ob_start();
include "file1.tpl.php";
$content = ob_get_clean();
include "header.php";

从file1.tpl.php处理的所有内容都将存储在 $ content 中。然后在header.php中,在你认为合适的地方加载 $ content

<html><head><?= $content ?></head><body>

答案 1 :(得分:0)

一个简单的实现可能是这样的:

定义一个全局样式数组(例如,在每个页面上包含的config.php文件中),它包含一个可以加载的CSS文件数组:

global $styles = array(
    "foo" => "/styles/foo.css",
    "bar" => "/styles/bar.css",
);

,其值保存相关CSS文件的路径。

在相关页面的顶部,设置一个变量以确定要包含的CSS文件:

$activeStyles = array('foo');

然后,在header.php中,检查变量是否存在,以及它是否包含任何值:

<?php
    if(isset($activeStyles) && count($activeStyles) > 0) {
        # iterate through the array, generating the appropriate <link /> tags
        foreach($activeStyles as $styleKey) {
?>

<link rel="stylesheet" type="text/css" href="<?php echo $styles[$styleKey] ?>" />

<?php

        }
    }
?>

您将对脚本使用相同的概念。