2010-10-26 7 views
0

J'ai un menu codé en dur dans Drupal (car c'est trop complexe pour le système de menu standard dans Drupal).PHP get path et tous les sous-chemins (Drupal)

Je voudrais pouvoir dire: Si cette page est contenue dans le répertoire/about /, appliquez la classe "active", afin que toutes les nouvelles pages créées dans ce répertoire mettent automatiquement en surbrillance la section en cours.

Actuellement, j'ai:

$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> 

J'ai essayé quelques variations de strpos et exploser pour obtenir la variable à droite, mais pas de chance jusqu'à présent.

Merci :)

+2

Qu'est-ce qui vous fait penser que votre menu est trop avancé pour que Drupal puisse le gérer? Il y a beaucoup de modules qui étendent le système de menu, en particulier le menu principal. C'est probablement le mauvais chemin à parcourir, en réinventant la roue. – googletorp

+0

était d'accord avec googletorp - notre menu Drupal est beaucoup plus complexe que cela. Je ne vois rien dans le code que vous avez fourni qui ne puisse être fait facilement avec les modules existants. – Spudley

+0

Je suis d'accord qu'il est presque certainement possible de le faire dans Drupal, cependant pour mon site particulier et ce menu particulier, il est simplement beaucoup plus simple de le coder en dur. Tout simplement parce qu'il peut être mis à jour, cela ne veut pas dire qu'il doit l'être. Merci. – trh88

Répondre

0

Je ne sais rien au sujet de Drupal ou votre système d'URL, mais la tâche de vérifier si $current_page contient "/ about /" vous pouvez faire avec:

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

Vous devrait probablement écouter googletorp cependant.

+0

L'astuce merci. – trh88

0

Essayez cette fonction. C'est comme arg fonction, mais analyser le chemin réel.

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

Dans votre cas:

if(real_arg(0) == 'about') echo 'active';