使用PHP / Ajax更改选项卡(和URL)

时间:2014-07-01 06:36:12

标签: php ajax tabs

我不确定这个词的正确用语是什么,但我猜它的标签式网址或类似内容。无论如何,我在网上看到了很多,我想弄清楚效果如何。

一个很好的例子是在编辑你的Github个人资料时找到的标签 https://github.com/settings/profile

我们说我们的菜单上有一些标签:

<ul>
<li><a href="tab1">tab1</a></li>
<li><a href="tab2">tab2</a></li>
<li><a href="tab3">tab3</a></li>
</ul>

然后是内容div:

<div class="tab-content">

</div>

从我所看到的,当单击相应的选项卡链接时,将发送ajax请求以获取数据,然后将其插入到内容区域中。根据我的理解,这几乎是标准的。

但是,我不知道的部分是如何在新标签页或窗口中加载网址时,它会直接进入相应的标签。

例如,如果您访问: https://github.com/settings/notifications 您将直接进入通知标签页。

我正在尝试使用PHP实现类似的标签设置。 ajax部分并不是一个真正的问题,我可以很容易地解决这个问题。但是,让我们在新请求中加载相应标签的网址是我所坚持的。

我想这样做的方法只是检查URL然后加载选项卡,如下所示:

<div class="tab-content">
<?php
$URL = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

if ($URL = "http://example.com/tabs/tab1") {
    echo "this is tab1 content";
}
else if ($URL = "http://example.com/tabs/tab2") {
    echo "this is tab2 content";
}
// etc etc
?>
</div>

但如果我有20个标签,我真的不想在我的页面中添加20个if / else语句。我想到的另一种方法是将URL值放在一个数组中,并循环遍历它。有没有更好的方法用PHP设置这样的标签系统?

2 个答案:

答案 0 :(得分:2)

您还可以将数据放入数据库,然后查询数据库。但是,如果不使用数据库,您还可以将标签内容放入文件中并执行以下操作:

<?php
   $URL = $_SERVER['REQUEST_URI'];

   $file = 'path_with_content' . DIRECTORY SEPARATOR . str_replace('/' , DIRECTORY_SEPARATOR, $URL).'.php';
   if (file_exists($file))  {
     echo file_get_contents($file);
  }

因此,您可以简单地创建目录path_with_content/tabs,并为每个选项卡创建此目录中的文件,其名称与最后一部分相同,作为网址的最后一部分(tab1,tab2等).php扩展名(所以文件应该有名称tab1.php,tab2.php等)。

答案 1 :(得分:0)

你可以使用像这样的数组 $ navigation = Array(&#39; Home&#39; =&gt;&#39; index.php&#39;,&#39;关于&#39; =&gt;&#39; about.php&#39;);

然后,如果你创建一个全局变量,如:$ curPage

然后加载数组

每个循环

然后检查$ curPage是否循环并使其成为另一种字体颜色

$ curPage将是&#39; Home&#39;或者&#39;关于&#39;然后用另一种字体或bg颜色显示它

这是我关于它的粘贴 - 它不是最好的但是它正在工作 - 忘记输出编号xD - http://pastebin.com/H1XcUiiE

提示:您可以创建一个navigation.php文件,而不是将其放在任何页面中 并将其一直包含在导航栏的区域中。