PHP получить путь и все подпути (Drupal) - PullRequest
0 голосов
/ 26 октября 2010

У меня есть жестко запрограммированное меню в Drupal (поскольку оно слишком сложно для стандартной системы Menu в 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 голосов
/ 26 октября 2010

Попробуйте эту функцию.Это похоже на 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';
0 голосов
/ 27 октября 2010

Используйте меню api, а затем добавляйте тематические ссылки так, как вам хочется.Вам не нужно дублировать функциональность, которая уже существует.Вы приобретете навык, который сможете использовать повторно.

См .:
http://api.drupal.org/api/function/theme_menu_item/6
http://api.drupal.org/api/function/theme_menu_item_link/6

Это не займет много времени, и вы удалите слой обходных путей.

0 голосов
/ 26 октября 2010

Я ничего не знаю о Drupal или вашей схеме URL, но задача проверки, содержит ли $current_page "/ about /", вы можете сделать с помощью:

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

Возможно, вы должны послушатьgoogletorp хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...