0

开始:不是 Wordpress!只是普通的旧 PHP。这是我正在尝试做的事情:

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

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

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

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

4

1 回答 1

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
}
?>
于 2012-08-23T14:58:00.073 回答