как заставить элементы навигации отображать правильный активный класс с помощью php - PullRequest
0 голосов
/ 07 марта 2012

Я создаю CMS и у меня проблемы с навигацией. Я хочу добавить активный класс к активному элементу в навигации. Это было бы хорошо, если бы у меня была страница для каждого элемента, но у меня есть другие разделы и ссылки

Вот мой код:

<div id="main-menu">
<?php foreach ($items as $item) : ?>
    <?php $active = ''; ?>
    <?php if (isset($page)) : ?>
    <?php ($item->pageId === $page->id) ? $active = 'active' : $active = ''; ?>
    <?php endif; ?>
    <?php if ($item->link == '') : ?>
    <a href="<?php echo ROOT_PATH; ?>front/site/page?x=<?php echo $item->id; ?>" class="<?php echo $active; ?>"><?php echo $item->label; ?></a>
    <?php else : ?>
    <a href="<?php echo $item->link; ?>" class="<?php echo $active; ?>"><?php echo $item->label; ?></a>
    <?php endif; ?>
    <?php endforeach; ?>

Когда у меня нет страницы, тогда я даю ссылке значение, указанное для указания конкретного раздела. Как я могу заставить их все работать нормально?

Ответы [ 2 ]

0 голосов
/ 07 марта 2012

Вот как это сделать, используя только одну пару тегов PHP:

<?php

foreach($items as $item)
{
   $active = ($item->pageId == $page->id) ? 'active' : '';
   if(!$item->link)
   {
      echo '<a href="' . ROOT_PATH . '/front/site/page?x=' . $item->id . '" class="' .$active . '">' . $item->label . '</a>';
   }
   else
   {
      echo '<a href="' . $item->link . '" class="' .$active . '">' . $item->label . '</a>';
   }
}

?>
0 голосов
/ 07 марта 2012

Вам не нужно столько <?php ?> тегов!В любом случае, ваша проблема заключается в неправильном использовании троичного оператора .Попробуйте это:

<?php 
foreach ($items as $item) :
    $active = ''; 
    if (isset($page)) :
        $active = ($item->pageId === $page->id) ? 'active' : '';
    endif;
    if ($item->link == '') :
        ?>
        <a href="<?php echo ROOT_PATH; ?>front/site/page?x=<?php echo $item->id; ?>" class="<?php echo $active; ?>"><?php echo $item->label; ?></a>
    <?php else : ?>
        <a href="<?php echo $item->link; ?>" class="<?php echo $active; ?>"><?php echo $item->label; ?></a>
    <?php
    endif;
endforeach; 
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...