【发布时间】:2017-02-20 17:56:38
【问题描述】:
我正在使用 php 为我们的内容管理软件制作菜单,但我们遇到了这个小问题。由于我们希望最终以块的形式调用所有内容,因此将某些页面项目分解为块并通过包含文件的函数加载它们。由于这很难解释,我将在下面发布一些示例代码。
这是文件 page.php(删除了不必要的 html 代码)。 这是用户所在的页面:
<?php
define("CURRENT_PAGE", "page.php");
include_once("data/main.inc.php");
?><html>
Content loads here.
<? desktopMenu(); ?>
</html>
好的,下面是 main.inc.php 中 desktopMenu() 的函数:
function desktopMenu() {
// Query to get the top level navigation links with no parents
$query = mysql_query("SELECT * FROM menu WHERE p_id = '0'");
if(mysql_num_rows($query) > 0) {
while($result = mysql_fetch_array($query)) {
extract($result);
if($isparent == "1") {
// Just check if they have children items
$sub_menu_query = mysql_query("SELECT * FROM menu WHERE p_id = '$id'");
if(mysql_num_rows($sub_menu_query) > 0) {
// CODE TO SHOW THE MENU ITEM AND ITS SUBS
}
} else {
// CODE TO SHOW REGULAR MENU ITEMS
// WANT TO INSERT class='active' if the CURRENT_PAGE is this value..
echo "<li><a href='#'>link</a></li>";
}
} else {
echo "<li><a href='javascript:void(0);'>Error Loading Menu</a></li>";
}
}
我想知道如何在包含的脚本上获取 CURRENT_PAGE,以便将class="active" 加载到正确的页面上。我已经在使用以下内容:
$config = include('config.inc.php');
$GLOBALS = $config;
在main.inc.php 的顶部,此菜单函数上方,这样我就可以设置全局变量并包含我的$config['database'] 变量以在函数中调用 SQL 数据库(否则不起作用)。
如何检查 current_page 变量以便在菜单中将其设置为活动状态?我尝试了一些不同的东西,但没有任何东西显示出我们期望的方式。谢谢大佬。
【问题讨论】:
-
你将
CURRENT_PAGE定义为一个常量,这意味着它是一个超级全局的,所以你可以在函数内部使用它。 -
CURRENT_PAGE 在我尝试在我的函数中使用它时不会返回任何内容,即使我在包含页面之前设置了它。这让我很困惑。
标签: php