我正在开发一个网站,我正在尝试一个foreach包括我的标题,其中包括我的导航菜单(这里的主要主题)。
我在导航菜单的header.php文件中的代码位于:
<!-- topmenu -->
<div class="menu-header">
<div class="container">
<ul class="top menu">
<?php
$nav = array("Home","About","Portfolio","Products","Services","Contact");
foreach($nav as $item){
if($item == $title){
echo "<li class='current-menu-ancestor parent'><a href='$item.php'>$item</a></li>";
}else{
echo "<li><a href='$item.php'>$item</a></li>"; }
}
?>
</ul>
</div>
</div>
<!--/ topmenu -->
您可能会注意到代码中的条件为if($item == $title)
。在我的index.php中,我已经包含$title="Home";
,我打算将其用于此if语句中。
在我的index.php页面上,我将其包含在以下代码中:
<?php
include("header.php");
$title = "Home";
?>
谁能告诉我哪里出错了?
答案 0 :(得分:3)
header.php无法展望未来。如果要在include中设置变量,则需要在之前设置:
<?php
$title = "Home";
include("header.php");
?>
所以你基本上只是换了一行。
此外,我建议您在开发时将错误报告启用到最高级别,因为它会为您提供有关键入代码时可能发生的常见错误的警告。
您可以通过在脚本顶部添加以下两行来完成此操作:
error_reporting(~0);
ini_set("display_errors", "1″);
或通过更改PHP配置。
答案 1 :(得分:3)
不是答案,但评论不适合格式化代码。您可能希望删除部分HTML:
$class = '';
if($item == $title) {
$class = ' class"current-menu-ancestor parent"';
}
echo "<li{$class}><a href='$item.php'>$item</a></li>";
如果您决定更改菜单结构中的某些内容并仅更改菜单html的其中一个副本,那么像以前一样复制HTML可能会导致维护问题。
答案 2 :(得分:2)
你需要在包含header.php之前设置$ title!
即
<?php
$title = "Home";
include("header.php");
?>