PHP - 使用 Active_Page 显示两个或更多类别的包含导航的活动页面
PHP - Use Active_Page to show active page for navigation in include for two or more categories
我正在使用 Active_Page 来显示我所在的页面,因为我的导航包含在内,但我有一个多级导航,如果我在Print.php 页面,我希望 "What We Do" 选项卡与 "What We Do" 选项卡中的 "Print" 选项卡一起突出显示。
导航包含
<li>
<a href="#" id="<?php if (ACTIVE_PAGE == "What We Do") echo "active"; ?>">What We Do</a>
<ul>
<li>
<a href="index.html#modal">Portfolios</a>
<ul>
<li><a href="solportfolios.php" id="<?php if (ACTIVE_PAGE == "Port-Solicitors") echo "active"; ?>">Solicitors</a></li>
<li><a href="esportfolios.php" id="<?php if (ACTIVE_PAGE == "Port-Estate-Agents") echo "active"; ?>">Estate Agents</a></li>
<li><a href="miscportfolios.php" id="<?php if (ACTIVE_PAGE == "Port-Additional") echo "active"; ?>">Additional</a></li>
</ul>
</li>
<li>
<a href="print.php" id="<?php if (ACTIVE_PAGE == "Print") echo "active"; ?>">Print</a>
</li>
<li>
<a href="web.php" id="<?php if (ACTIVE_PAGE == "Web") echo "active"; ?>">Web Design</a>
</li>
<li>
<a href="services.php" id="<?php if (ACTIVE_PAGE == "Additional Services") echo "active"; ?>">Additional Services</a>
</li>
</ul>
</li>
活动主页
<?php
define ('ACTIVE_PAGE',"Port-Estate-Agents");
define ('ACTIVE_PAGE',"What We Do");
include ('inc/nav.inc.php');
?>
也试过..
<?php
define ('ACTIVE_PAGE',"Port-Estate-Agents","What We Do");
include ('inc/nav.inc.php');
?>
和
<?php
define ('ACTIVE_PAGE',"Port-Estate-Agents, What We Do");
include ('inc/nav.inc.php');
?>
好吧,如果你的导航总是只有两层深,你可以只使用两个常量。类似于 ACTIVE_LEVEL1 和 ACTIVE_LEVEL2。
<?php
define ('ACTIVE_LEVEL1',"Port-Estate-Agents");
define ('ACTIVE_LEVEL2',"What We Do");
include ('inc/nav.inc.php');
?>
虽然这不是所有解决方案中最好的。特别是如果您打算添加第三、第四、第五……级别。如果您打算这样做,您应该将导航结构建模为树。这可以使用嵌套数组或完全成熟的基于数据库的树。不是直接检查页面是否处于活动状态,而是调用一个方法来检查给定的页面是否是从树的根到当前活动页面的路径的一部分。
我正在使用 Active_Page 来显示我所在的页面,因为我的导航包含在内,但我有一个多级导航,如果我在Print.php 页面,我希望 "What We Do" 选项卡与 "What We Do" 选项卡中的 "Print" 选项卡一起突出显示。
导航包含
<li>
<a href="#" id="<?php if (ACTIVE_PAGE == "What We Do") echo "active"; ?>">What We Do</a>
<ul>
<li>
<a href="index.html#modal">Portfolios</a>
<ul>
<li><a href="solportfolios.php" id="<?php if (ACTIVE_PAGE == "Port-Solicitors") echo "active"; ?>">Solicitors</a></li>
<li><a href="esportfolios.php" id="<?php if (ACTIVE_PAGE == "Port-Estate-Agents") echo "active"; ?>">Estate Agents</a></li>
<li><a href="miscportfolios.php" id="<?php if (ACTIVE_PAGE == "Port-Additional") echo "active"; ?>">Additional</a></li>
</ul>
</li>
<li>
<a href="print.php" id="<?php if (ACTIVE_PAGE == "Print") echo "active"; ?>">Print</a>
</li>
<li>
<a href="web.php" id="<?php if (ACTIVE_PAGE == "Web") echo "active"; ?>">Web Design</a>
</li>
<li>
<a href="services.php" id="<?php if (ACTIVE_PAGE == "Additional Services") echo "active"; ?>">Additional Services</a>
</li>
</ul>
</li>
活动主页
<?php
define ('ACTIVE_PAGE',"Port-Estate-Agents");
define ('ACTIVE_PAGE',"What We Do");
include ('inc/nav.inc.php');
?>
也试过..
<?php
define ('ACTIVE_PAGE',"Port-Estate-Agents","What We Do");
include ('inc/nav.inc.php');
?>
和
<?php
define ('ACTIVE_PAGE',"Port-Estate-Agents, What We Do");
include ('inc/nav.inc.php');
?>
好吧,如果你的导航总是只有两层深,你可以只使用两个常量。类似于 ACTIVE_LEVEL1 和 ACTIVE_LEVEL2。
<?php
define ('ACTIVE_LEVEL1',"Port-Estate-Agents");
define ('ACTIVE_LEVEL2',"What We Do");
include ('inc/nav.inc.php');
?>
虽然这不是所有解决方案中最好的。特别是如果您打算添加第三、第四、第五……级别。如果您打算这样做,您应该将导航结构建模为树。这可以使用嵌套数组或完全成熟的基于数据库的树。不是直接检查页面是否处于活动状态,而是调用一个方法来检查给定的页面是否是从树的根到当前活动页面的路径的一部分。