如何使用PHP更改HTML中的类?

时间:2016-03-31 23:16:21

标签: php html class

我的所有页面都有以下代码,除了每个页面外,该类都在该特定页面上。

<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文件夹中,这样我创建的每个页面都不必在每个页面中都有这行代码。我唯一的问题是,如何检测我所在的页面,然后自动删除选中的旧类并将新的类添加到当前页面?

3 个答案:

答案 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;