首先:不是Wordpress!只是简单的老PHP。这就是我想要做的事情:
我的页面顶部有一个水平导航栏,其中包含“主页,关于,信息,联系人”链接
大多数页面还有一个垂直导航栏,侧边栏。 如果我在主页上,则不需要显示侧栏。 如果我在“关于”页面上,则必须有一个包含各种其他主题的侧边栏。联系页面需要显示带有路径描述和联系表单链接等的侧栏。
我正在考虑使用$ GLOBAL变量来实现这一点,并将$GLOBAL['sidebar] = 'home'
$GLOBAL['sidebar'] = 'contact'
之类的东西放在每个页面的顶部。在将我的侧边栏呈现的PHP文件中,我将使用if结构来查看需要呈现的侧边栏。但是,使用全局变量是我一直被教导的错误,不应该被使用。在那之后,我的思绪漂移到了$ SESSION变量,但这实际上是完全相同的,但有一些额外的问题,比如session_start()等。
我是用PHP自学的,所以我不知道什么才能最好地解决这个问题(我认为非常常见)“问题”。任何关于此事的见解将不胜感激。感谢。
答案 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
}
?>