PHP - 根据文件夹名称激活链接

时间:2014-01-31 21:47:13

标签: php html css

这可能很简单,但我刚刚开始使用PHP。

我正在尝试创建一个通用标头,并希望使用PHP使链接具有基于currant url的文件夹结构的CSS类。

这个想法是有3个级别的导航,1级将由第一个文件夹设置,2级由子文件夹设置,3级将由php文件的名称设置。

例如,如果您有网址www.mysite.com/Home/Aboutus/History.php?id=1

选项“Home”将在菜单的第1级激活 “AboutUs”将在第二级激活 并且“历史”将在第3级活跃

HTML      

<a href="#"><div class="Menu-1-Button">
<p class="Menu-1-Button-Text">Option1A</p></div></a>

<a href="#"><div class="Menu-1-Button">
<p class="Menu-1-Button-Text">Option1B</p></div></a>

<a href="#"><div class="Menu-1-Button">
<p class="Menu-1-Button-Text">Option1C</p></div></a>

</div>

<div id="Selected-Option1A">
<div class="Sub-Menu-2">

<a href="#"><div class="Menu-2-Button">
<p class="Menu-2-Button-Text">Option2A</p></div></a>

<a href="#"><div class="Menu-2-Button">
<p class="Menu-2-Button-Text">Option2B</p></div></a>

<a href="#"><div class="Menu-2-Button">
<p class="Menu-2-Button-Text">Option2C</p></div></a>


</div>

<div id="Sub-Menu-3">

<a href="#"><div class="Menu-3-Button">
<p class="Menu-3-Button-Text">Option3A</p></div>

<a href="#"><div class="Menu-3-Button">
<p class="Menu-3-Button-Text">Option3B</p></div>

<a href="#"><div class="Menu-3-Button">
<p class="Menu-3-Button-Text">Option3C</p></div>

</div>
</div>

<div id="Selected-Option1B">
<div class="Sub-Menu-2">

<a href="#"><div class="Menu-2-Button">
<p class="Menu-2-Button-Text">Option2A</p></div></a>

<a href="#"><div class="Menu-2-Button">
<p class="Menu-2-Button-Text">Option2B</p></div></a>

<a href="#"><div class="Menu-2-Button">
<p class="Menu-2-Button-Text">Option2C</p></div></a>


</div>

<div id="Sub-Menu-3">

<a href="#"><div class="Menu-3-Button">
<p class="Menu-3-Button-Text">Option3A</p></div>

<a href="#"><div class="Menu-3-Button">
<p class="Menu-3-Button-Text">Option3B</p></div>

<a href="#"><div class="Menu-3-Button">
<p class="Menu-3-Button-Text">Option3C</p></div>

</div>
</div>

在我的标题上,底部的2个菜单级别将根据在第一个菜单级别上选择的选项进行更改,这样做会给每个Selected-Optionx div一个属性display:none并使用与活动类相似的技术给一个Selected-Option1x div一个display:block,取决于在第一个菜单级选择的选项。

所以基本上我想知道如何根据使用PHP的URL中的currant文​​件夹给出一些“活动”类。

谢谢,

2 个答案:

答案 0 :(得分:1)

坦率地说,我不认为你在这里走的是正确的方向。

当然可以通过PHP执行您的请求,但最终会得到一个糟糕,复杂和单一的结构。

如果您实现该框架,它将强制您扭曲您的内容以适应这个任意3级结构。你最有可能最终得到的内容只是因为你设计的工具强迫你这样做。

此外,您最终会得到一个填充隐藏子页面的单页应用程序 加载和消耗更多资源需要更长的时间,没有额外的好处,因为在整个文档加载之前,您将无法显示任何有意义的内容。

所有这些都说,这里有一些代码可能会显示它的外观:

$tree = array (
    "optionA" => array (
        "optionA1" => array (
            "optionA1a" => "",
            "optionA1b" => "",
            "optionA1c" => ""),
        "optionA2" => array (
            "optionA2a" => "",
            "optionA2b" => "",
            "optionA2c" => ""),
        "optionA3" => array (
            "optionA3a" => "",
            "optionA3b" => "",
            "optionA3c" => "")),
    "optionB" => array (
        "optionB1" => array (
            "optionB1a" => "",
            "optionB1b" => "",
            "optionB1c" => ""),
        "optionB2" => array (
            "optionB2a" => "",
            "optionB2b" => "",
            "optionB2c" => ""),
        "optionB3" => array (
            "optionB3a" => "",
            "optionB3b" => "",
            "optionB3c" => "")));

foreach ($tree as $n1 => $l2)
foreach ($l2   as $n2 => $l3)
foreach ($l3   as $n3 => $junk)
{
    echo "<a href=http::/whatever.what/$n1/$n2/$n3.html>...whatever...</a>";
}

如果你想要一个忠告,放弃制作通用框架的梦想 通用性对于销售产品很有用,也很难实现。
把它留给营销人员。

答案 1 :(得分:0)

我不确定我是否正确理解了您的问题,但这是我使用一个文件进行所有导航的方式,并且仍保留我可能拥有的任何class="active"内容。

标题中的某处:

$url = $_SERVER['REQUEST_URI'];

在每个链接上,相应地更改名称

<a <?php if($url == '/studentdb/index.php'){ echo "class='active'";} ?> href="index.php">

修改 如果您希望在用户位于目录中时回显class active而不管页面是什么,您可以使用strposstristr来检查$ url,如果返回正数,那么您将回显类。我使用!==表示如果不是假,即为真。

<a <?php if(strpos($url, 'myDirectory') !== false){ echo "class='active'";} ?> href="index.php">

注意:Stristr是不敏感的,而Strpos是敏感的