2010-10-26 140 views
0

我在Drupal中有一個硬編碼的菜單(因爲它對於Drupal中的標準菜單系統來說太複雜了)。PHP獲取路徑和所有子路徑(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的一些變化和爆炸得到正確的變量,但至今沒有運氣。

謝謝:)

+2

是什麼讓你覺得你的菜單太高級了,Drupal無法處理?有很多擴展菜單系統的模塊,特別是主菜單。這很可能是錯誤的方式,重新發明輪子。 – googletorp 2010-10-26 10:51:11

+0

與googletorp一致 - 我們的Drupal菜單比這更復雜。我沒有看到您提供的代碼中的任何內容,使用現有模塊無法輕鬆完成。 – Spudley 2010-10-26 11:54:22

+0

我同意在Drupal中幾乎可以做到這一點,但是對於我的特定網站和這個特定的菜單來說,它只是簡化了它的硬編碼。只是因爲它可以更新,並不意味着它必須是。謝謝。 – trh88 2010-10-26 13:07:03

回答

0

我不知道的Drupal或你的URL方案的任何東西,但檢查是否$current_page的任務包含「/約/」你可以這樣做:

if (strpos($current_page, '/about') !== false) echo "active"; 

你儘管應該聽取googletorp。

+0

感謝你了。 – trh88 2010-10-26 13:08:52

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';