我的所有页面都有以下代码,除了每个页面外,该类都在该特定页面上。
<li><a href="../index.html">Homescreen</a></li>
<li><a href="socialstuff.html">Social Stuff</a></li>
<li><a href="sops.html">SOP's</a></li>
<li><a href="login.php">FTO Documents</a></li>
<li><a class="selected" href="changelog.html">Changelog</a></li>
我正在努力将这些文件放在include文件夹中,这样我创建的每个页面都不必在每个页面中都有这行代码。我唯一的问题是,如何检测我所在的页面,然后自动删除选中的旧类并将新的类添加到当前页面?
答案 0 :(得分:2)
这在很大程度上取决于您处理路由的方式。假设您只使用文件名路由,那么您可以使用URI检查。
<li><a href="socialstuff.html" class="<?php if($_SERVER['REQUEST_URI']) == 'socialstuff.html'){ echo 'selected'; } ?>">Social Stuff</a></li>
然后,您可以为<ul>
元素中的每一行执行此操作。
此外,在if($_SERVER['REQUEST_URI']) == 'socialstuff.html')
行中,'socialstuff.html'
必须是您在该页面上时地址栏读取的确切URI。因此,如果socialstuff.html
位于名为misc
的文件夹中,则该页面的URI可能为misc/socialstuff.html
。
答案 1 :(得分:1)
我解决这个问题的一种方法是使用辅助函数。
function currentPage($page){ if (basename($_SERVER['PHP_SELF']) == $page) { echo 'selected'; } }
<li><a class="<?php currentPage('changelog.html') ?>" href="changelog.html">Changelog</a></li>
您必须将此功能添加到要检查其页面的每个li
我还没有测试过代码,但是你会对如何处理这类事情有一个大概的了解。希望有所帮助。
答案 2 :(得分:0)
从BayssMekanique的答案中获取详细信息,但做出更系统的回应......通过链接进行迭代会有所帮助。我还会创建一个函数renderLinkList()
或类似函数,并返回该字符串。希望这会有所帮助。
<?php
$links = '';
$links = array(
'Homescreen' => '../index.html',
'Social Stuff' => 'socialstuff.html',
'SOP\'s' => 'sops.html',
'FTO Docs' => 'login.php',
'Change Log' => 'changelog.html'
);
for each ($links as $title => $href) {
$selected = '';
if ($_SERVER['REQUEST_URI']) == $href) {
$selected = 'class="selected"';
}
$linkString = '<li>';
$linkString .= '<a href="'.$href.'" '.$selected.' >';
$linkString .= $title.'</a></li>';
$links .= $linkString;
}
//if you made a function you would now return links
print $links;