开始:不是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
}
?>