如果我的网页的每个页面上都列出了一些CSS页面,那么它们会相互负面交互。目标是将整个头部分移除到头部包含文件中以清理页面。我尝试使用php脚本查看SERVER的Request URI变量来检测当前页面,然后在if语句中使用它来选择该页面所需的css链接标记。这就是我的尝试:
<?
$currentLocation = $_SERVER['REQUEST_URI'];
if ($currentLocation == '/index.php' || $currentLocation == '/' || $currentLocation == '')
{
echo '<link href="css/signin.css" rel="stylesheet">';
} elseif ($currentLocation == '/signup.php') {
echo '<link href="css/signin.css" rel="stylesheet">';
} elseif ($currentLocation == '/anotherPage.php') {
echo '<link href="css/anotherPageCSS.css" rel="stylesheet">';
}
?>
这是一个不错的方法吗?你看到它有什么错误吗?请指教。
我还考虑将CSS页面分解为一个样式表,并使用id属性来定位而不是使用标记选择器。你们推荐什么?
答案 0 :(得分:2)
这是一个利用小班级进行页面键控的方法的基本示例。每当你想为html设置输出时,你选择它应该构建哪个pagekey(这样你的url和php文件名就可以不用担心了):
<?php
// include_handler.php
class IncludeHandler {
private $pagekey = 'basic';
private $cssfiles = array();
private $jsfiles = array();
function __construct($key) {
$this->pagekey = $key;
$this->cssfiles = [ // define all css files to pagekeys
'home' => array('home.css'),
'basic' => array(),// if none needed
'accounts' => array('accounts.css'),
'checkout' => array('accounts.css','checkout.css'),
];
$this->jsfiles = [ // define all js files to pagekeys
'home' => array('home.js'),
'basic' => array(),
'accounts' => array('accounts.js'),
'checkout' => array('accounts.js','checkout.js'),
];
}
public function headlinks() { // call this in your html output <head> area
$html = '';
foreach ($this->cssfiles[$this->pagekey] as $cssfile) {
$html .= '<link type="text/css" rel="stylesheet" href="/css/'. $cssfile .'" />';
}
foreach ($this->jsfiles[$this->pagekey] as $jsfile) {
$html .= '<script type="text/javascript" src="/js/'. $jsfile .'"></script>';
}
return $html;
}
}
?>
来自结帐页面的示例用法:
<?php
// checkout.php
require_once(__DIR__.'/include_handler.php');
$htmlincludes = new IncludeHandler('checkout');
// processing code
// html output area
?><html>
<head>
<link type="text/css" rel="stylesheet" href="/css/global.css" />
<?PHP echo $htmlincludes->headlinks();?>
</head>
<body></body>
</html><?PHP
?>
答案 1 :(得分:1)
这是如何做到这一点的一种方式。 我建议使用某种字典(PHP中的关联数组)
像
这样的东西<?php
$currentLocation = $_SERVER['REQUEST_URI'];
$styles = [
"/index.php" => "first.css",
"/" => "first.css",
"/another.php" => "second.css",
//...
];
if (in_array($currentLocation, $styles))
{
$link = "css/" . $styles[$currentLocation];
echo "<link rel=\"stylesheet\" href=\"$link\"/>
}
?>
我的意见:))