每页主题不同的侧边栏

时间:2012-08-23 14:47:37

标签: php navigation sidebar

首先:不是Wordpress!只是简单的老PHP。这就是我想要做的事情:

我的页面顶部有一个水平导航栏,其中包含“主页,关于,信息,联系人”链接

大多数页面还有一个垂直导航栏,侧边栏。 如果我在主页上,则不需要显示侧栏。 如果我在“关于”页面上,则必须有一个包含各种其他主题的侧边栏。联系页面需要显示带有路径描述和联系表单链接等的侧栏。

我正在考虑使用$ GLOBAL变量来实现这一点,并将$GLOBAL['sidebar] = 'home' $GLOBAL['sidebar'] = 'contact'之类的东西放在每个页面的顶部。在将我的侧边栏呈现的PHP文件中,我将使用if结构来查看需要呈现的侧边栏。但是,使用全局变量是我一直被教导的错误,不应该被使用。在那之后,我的思绪漂移到了$ SESSION变量,但这实际上是完全相同的,但有一些额外的问题,比如session_start()等。

我是用PHP自学的,所以我不知道什么才能最好地解决这个问题(我认为非常常见)“问题”。任何关于此事的见解将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

解决方案将在很大程度上取决于您如何设置代码结构,但更一般地说,我通常采用的方式是:

将边栏作为每个页面上包含的模板的一部分。

按照以下方式设置侧栏:

<?php
if (sizeof($sidebarModules)>0) {
  ?>
  <div id="sidebar">
  <?php
    if (in_array('contact',$sidebarModules)) {
    // display contact form
  }
  if (in_array('route',$sidebarModules)) {
    // display route description
  }
  if (in_array('login',$sidebarModules)) {
    // display login
  }
  ?>
  <\div>
  <?php
}
?>

然后在每个页面的顶部确保定义数组$sidebarModules。类似的东西:

<?php
  $sidebarModules = array(
    'contact',
    'login',
    'description'
  );
?>

我不确定这是否是最好的解决方案,但过去它对我来说效果很好。

编辑:

如果你的模板是在标准惯例中命名的,那么

或者更有效率,例如:

<?php
if (sizeof($sidebarModules)>0) {
  ?>
  <div id="sidebar">
  <?php
    foreach ($sidebarModules as $module) { // loop round all modules
      include($module.'_tpl.php'); // include module template
    }
  ?>
  <\div>
  <?php
}
?>