PHP获取路径和所有子路径(Drupal)

时间:2010-10-26 10:41:40

标签: php drupal

我在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和爆炸的变种来获得正确的变量,但到目前为止没有运气。

谢谢:)

3 个答案:

答案 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

不应该花很长时间,你将删除一层变通方法。