У меня есть веб-страница с боковой панелью, которая использует некоторый класс css. Если класс = «активный», то ссылка будет выделена. Я хочу сделать так, чтобы на любой странице скрипт проверил, к какой ссылке он подключен, а затем определите, какая ссылка будет выделена. , но у меня действительно нет подсказки, как действовать дальше, пожалуйста, укажите мне в правильном и лучшем направлении! Если у меня будет 20 ссылок, этот скрипт будет слишком длинным …. Спасибо!
<?php $arr = array( '1' => '/about.php', '2'=> '/abt-history2.php', '3' => '/abt-shop.php', ); $host = $_SERVER['REQUEST_URI']; if($host == $arr['1']) { $class1 = "active"; } else if ($host == $arr['2']) { $class2 = "active"; } else if ($host == $arr['3']) { $class3 = "active"; } ?> <ul id="navigationSide"> <div style="padding-left:20px; padding-bottom:10px; font-size:16px; font-weight:800; color:#777;">TITLE</div> <li><a href="<?php print $arr['1']; ?>" class="<?php echo"$class1" ?>">AA</a></li> <li><a href="<?php print $arr['2']; ?>" class="<?php echo"$class2" ?>">BB</a></li> </ul> <div style="padding:5px;"></div> <ul id="navigationSide"> <div style="padding-left:20px; padding-bottom:10px; font-size:16px; font-weight:800; color:#777;">TITLE2</div> <li><a href="<?php print $arr['3']; ?>" class="<?php echo"$class3" ?>" >CC</a></li> </ul>
Хорошо, это новое, я удалил все, что я разместил раньше, и это еще один ответ. Так как $_SERVER['REQUEST_URI']
получает /Portal/TEST/file.php
в моем локальном /Portal/TEST/file.php
, я добавил /Portal/TEST/
в скрипт, вы можете удалить его в зависимости от структуры ваших файлов.
<?php $arr = array( '0' => '/Portal/TEST/about.php', '1'=> '/Portal/TEST/abt-history2.php', '2' => '/Portal/TEST/abt-shop.php', '3' => '/Portal/TEST/extra.php', '3' => '/Portal/TEST/blaze.php', ); ?> <h2>TITLE</h2> <?php for($i=0; $i< count($arr); $i++) { if($_SERVER['REQUEST_URI'] == $arr[$i]) { $class = 'active'; ?> <li><a href="<?php print $arr[$i]; ?>" class="<?php echo "$class".$i ?>"><?php echo $class ?> </a></li> <?php }else { $class = 'In active'; ?> <li><a href="<?php print $arr[$i]; ?>" class="<?php echo "$class".$i ?>"><?php echo $class ?> </a></li> <?php } }?>
Try <?php $arr = array( '1' => 'about.php', '2'=> 'abt-history.php', '3' => 'abt-shop.php', ); foreach($arr as $key => $page){ $class = ""; $currentPage = $_SERVER['REQUEST_URI']; // check its value and get page name if($currentPage == $page){ $class = 'class ="active"'; } ?> <li> <a href ="yourdomainname/<?php echo $page; ?>" <?php echo $class; ?>> link<?= $key; ?> </a> </li> <php } ?>
Ваша идея в порядке. Дело в том, что ваши ключи заканчиваются на .php
а ваши классы <li>
ищут abt-shop
, нет .php
, поэтому они ничего не находят.
Я только понял
Если у меня 20 ссылок, этот скрипт будет слишком длинным …. Спасибо!
Ну, вот когда цикл for
, пригодится.
<?php for($i=0; $i<20; $i++){ ?> <li> <a href ="<?php echo $arr['abt-shop']; ?>" class="<?php echo "$class.$i" ?>"> link<?= $i; ?> </a> </li> <?php } ?>
ОБНОВИТЬ
<?php $arr = array( '1' => '/about.php', '2'=> '/abt-history2.php', '3' => '/abt-shop.php', ); $host = $_SERVER['REQUEST_URI']; switch($host){ case $arr['1']; $class1 = "active"; break; case $arr['2']; $class2 = "active"; break; case $arr['3']; $class3 = "active"; break; case $arr['4']; $class4 = "active"; break; }