PHP HTML CSS для начинающих ИСПОЛЬЗОВАТЬ CASE / SWITCH / IF ELSE? Нужен совет - PullRequest
0 голосов
/ 27 мая 2010

Создание веб-сайта с использованием продукта электронной коммерции на основе PHP Magento.

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

Моя идея заключалась в том, чтобы использовать CSS для отображения вкладки поверхсоответствующий пункт меню навигации на основе URL.

Однако один URL-адрес всегда изменяется, поэтому я хотел каким-то образом использовать оператор ifelse.

Я нашел два метода, которые, я думаю,могли бы работать, могли бы какие-нибудь эксперты сказать мне, что они думают, что лучше и как они это реализовали бы?

Метод 1

<div id="nav">
<ul id="mainnav">
<li><a href="index.php" title="Welcome page" <?php if ($page == 'index.php') { ?>class="active"<?php } ?>>Welcome</a></li>
<li><a href="about_us.php" title="About us page" <?php if ($page == 'about_us.php') { ?>class="active"<?php } ?>>About us</a></li>
<li><a href="services.php" title="Services page" <?php if ($page == 'services.php') { ?>class="active"<?php } ?>>Services</a></li>
<li><a href="testimonials.php" title="Testimonials page" <?php if ($page == 'testimonials.php') { ?>class="active"<?php } ?>>Testimonials</a></li>
<li><a href="contact_us.php" title="Contact us page" <?php if ($page == 'contact_us.php') { ?>class="active"<?php } ?>>Contact us</a></li>
else
  <li><a href="store.php" title="Store Page" <?php ($page == 'store.php') { ?>class="active"<?php } ?>>Store</a></li>
</ul>
</div>

Метод 2

$URL = store.php; 
SWITCH ($sample) { 
CASE home.php: 
<li><a href="index.php" title="Welcome page" <?php if ($page == 'index.php') { ?>class="active"<?php } ?>>Welcome</a></li>
  break; 
CASE services.php: 
<li><a href="services.php" title="Services page" <?php if ($page == 'services.php') { ?>class="active"<?php } ?>>Services</a></li>
  break; 
CASE aboutus.php: 
<li><a href="about_us.php" title="About us page" <?php if ($page == 'about_us.php') { ?>class="active"<?php } ?>>About us</a></li>
  break; 
DEFAULT: 
<li><a href="store.php" title="Store Page" <?php ($page == 'store.php') { ?>class="active"<?php } ?>>Store</a></li>
}

Ответы [ 4 ]

5 голосов
/ 27 мая 2010

Если это конечная форма меню, как насчет абстрагирования его в массиве?

$menu = array("index" =>        "Index", 
              "about_us" =>     "About us",
              "services" =>     "Services",
              "testimonials" => "Testimonials",
              "contact_us" =>   "Contact us",
              "store" =>        "Store");

/* Render the menu */
$activeFound = false;
foreach ($menu as $url => $item)
 { 
   if ($url == $page) 
   { $class = "active"; 
     $activeFound = true; 
   }
   else $class = "";
   echo "<li><a href='$url.php' $class>".htmlentities($item)."</a></li>";
  }

 if (!$activeFound)
  /* Render your changing store URL here */ 
  echo "store URL";

таким образом, вам придется редактировать массив только в долгосрочной перспективе.

2 голосов
/ 27 мая 2010

Лично я бы сделал это так:

В вашем head

<style>
a#<?= $currentPage ?> {
    color:red;
}
</style>

Где вам нужно как-то получить переменную currentPage (полезно $ _SERVER).

Затем просто добавьте идентификатор имени страницы к каждой ссылке.

1 голос
/ 27 мая 2010

Исходя из ответа Pekkas, я бы изменил его, добавив третичный оператор sprintf и использовав код шаблона php для цикла foreach (выглядит аккуратно):

$menu = array("index" => "Index", 
              "about_us" => "About us",
              "services" => "Services",
              "testimonials" => "Testimonials",
              "contact_us" => "Contact us",
              "store" => "Store");

/* Render the menu */
foreach ($menu as $url => $item):
    echo sprintf("<li><a href="%s.php" class="%s">%s</a></li>", $url, (($url==$page) ? "active" : ""), htmlentities($item));
endforeach;
0 голосов
/ 27 мая 2010

Лично я бы сделал это так:

<?php $act[$page] = 'active'; ?>
<div id="nav">
<ul id="mainnav">
<li><a href="index.php" title="Welcome page" class="<?= $act['index.php'] ?>">Welcome</a></li>
<li><a href="about_us.php" title="About us page" class="<?= $act['about_us.php'] ?>>About us</a></li>
<!-- and so on-->
</ul>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...