我在Drupal中有一个硬编码菜单(因为它对于Drupal中的标准菜单系统来说太复杂了。)
我希望能够说:如果此页面包含在/ about /目录中,请应用“active”类,以便在此目录中创建的所有新页面自动突出显示当前部分。
目前我有:
$current_page = $_SERVER['REQUEST_URI'];
<ul class="main">
<li class="home"><a href="<?php echo $base_path?>">Home</a></li>
<li class="about
<?php if ($current_page == "/xxxxxxx.com/dev/about/")
{
echo "active";
}
?>"><a href="javascript:void(0)">About</a></li>
<li class="services"><a href="javascript:void(0)">Services</a></li>
<li class="work"><a href="javascript:void(0)">Work</a></li>
<li class="awards"><a href="javascript:void(0)">Awards</a></li>
<li class="environment"><a href="javascript:void(0)">Environment</a></li>
<li class="contact"><a href="javascript:void(0)">Contact</a></li>
</ul>
我尝试了一些strpos和爆炸的变种来获得正确的变量,但到目前为止没有运气。
谢谢:)
答案 0 :(得分:0)
我对Drupal或您的网址方案一无所知,但检查$current_page
是否包含“/ about /”可以执行的任务:
if (strpos($current_page, '/about') !== false) echo "active";
你应该听googletorp。
答案 1 :(得分:0)
试试这个功能。它就像arg函数,但解析实际路径。
function real_arg($index = NULL) {
$ofset = strlen(base_path());
$q = explode('?', substr($_SERVER['REQUEST_URI'], $ofset));
$q = explode('/', trim($q[0], '/'));
return isset($index) ? $q[$index] : $q;
}
在你的情况下:
if(real_arg(0) == 'about') echo 'active';
答案 2 :(得分:0)
使用菜单api然后主题链接以匹配您想要的。您不需要复制已存在的功能。您将获得可以重复使用的技能。
请参阅:
http://api.drupal.org/api/function/theme_menu_item/6
http://api.drupal.org/api/function/theme_menu_item_link/6
不应该花很长时间,你将删除一层变通方法。