我有几个带有页眉和页脚的文件,让我们说file1.php
,file2.php
和file3.php
这些文件include()
文件header.php
和footer.php.
现在关注的是......每个页面都必须加载具有某些css样式的通用标题内容,而且还要为此类页面加载特定样式。这也发生在页脚上:它为所有页面加载了一堆脚本,但是为特定页面加载了特定的脚本。
我怎样才能做到这一点? 我当然不想把特定的脚本放在特定的页面上,因为它可能不仅附加到一个,而是几个,js脚本或css样式可以附加到五页或十页... < / p>
我在页眉或页脚页面中为每个案例考虑switch()
,然后在其他页面中考虑任何条件(例如$_SERVER['PHP_SELF']
),但我该如何处理包含内容?它包括()我正在寻找什么?
谢谢。
答案 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
}
}
?>
您将对脚本使用相同的概念。