每页主题不同的边栏


Different sidebars per page subject

开始:不是Wordpress!只是普通的老PHP。以下是我要做的:

我在页面顶部有一个水平导航栏,链接为"主页、关于、信息、联系"

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

我想用$GLOBAL变量来实现这一点,并在每页的顶部放上$GLOBAL['sidebar] = 'home'$GLOBAL['sidebar'] = 'contact'等。在将呈现侧边栏的PHP文件中,我将使用if结构来查看需要呈现的侧边栏。但我一直认为使用全局变量是错误的,不应该使用。在那之后,我的思绪转向了$SESSION变量,但这实际上是完全一样的,只是有一些额外的问题,比如SESSION_start()等。

我自学了PHP,所以我不知道什么可以最好地用来解决这个特殊的(我认为是非常常见的)"问题"。如对此事有任何见解,我们将不胜感激。谢谢

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

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

按照以下内容设置侧边栏:

<?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
}
?>
相关文章:
  • 没有找到相关文章