【问题标题】:How do I change a class in HTML using PHP?如何使用 PHP 更改 HTML 中的类?
【发布时间】:2016-07-20 14:48:57
【问题描述】:

我的所有页面都有下面的代码,除了每个页面,课程都在那个特定的页面上。

<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>

我正在努力将这些内容放入包含文件夹中,这样我创建的每个页面都不必在每个页面中都有这行代码。我唯一的问题是,如何检测我在哪个页面上,然后自动删除选择的旧类并将新类添加到当前页面?

【问题讨论】:

  • 你是怎么做到的?

标签: php html class


【解决方案1】:

从 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;

【讨论】:

  • 您应该在将$selected 变量附加到$links 变量后清除它。否则它将对所有后续链接应用相同的类。
【解决方案2】:

我解决这个问题的一种方法是使用辅助函数。

函数 currentPage($page){ if (basename($_SERVER['PHP_SELF']) == $page) { 回声“选择”; } }
        <li><a class="<?php currentPage('changelog.html') ?>" href="changelog.html">Changelog</a></li>

您必须将此函数添加到要检查其是否为该页面的每个li

我还没有测试过代码,但你会大致了解如何处理这类事情。希望对您有所帮助。

【讨论】:

  • 这行得通!我所做的是将这个函数放在我的侧边栏文件中。效果很好!
【解决方案3】:

这在很大程度上取决于您如何处理路由。假设您只使用文件名路由,那么您可以使用 URI 检查。

<li><a href="socialstuff.html" class="<?php if($_SERVER['REQUEST_URI']) == 'socialstuff.html'){ echo 'selected'; } ?>">Social Stuff</a></li>

然后,您将为 &lt;ul&gt; 元素中的每一行执行此操作。

此外,在if($_SERVER['REQUEST_URI']) == 'socialstuff.html') 行中,'socialstuff.html' 必须是您在该页面上时地址栏读取的确切 URI。因此,如果socialstuff.html 位于名为misc 的文件夹中,则该页面的URI 可能是misc/socialstuff.html

【讨论】:

  • 那么我如何将所述类更改为“已选择”
  • 我刚改了。您可以将要应用的类放在 echo 参数中。
猜你喜欢
  • 2014-05-09
  • 2014-03-16
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
  • 1970-01-01
  • 1970-01-01
  • 2019-01-14
相关资源
最近更新 更多