2011-12-12 23 views
12

Vì vậy, tôi đã tìm kiếm SO cho một giờ cố gắng tìm câu trả lời, và cũng đã cố gắng phương pháp khác nhau, including thisPHP thiết lập liên kết hoạt động trên trang sử dụng bao gồm

Tôi cố gắng để bao gồm các trang của tôi, cùng với việc điều hướng. Nhưng trên trang chính xác, tôi cần danh sách mục để có một lớp là active. Điều hướng nằm trong header.php và hiện tại trông giống như sau:

<nav> 
    <ul> 
     <li class="active"> <a href="/">Home</a> </li> 
     <li> <a href="#">Apps</a> </li> 
     <li> <a href="#">Forums</a> </li> 
    </ul> 
    </nav> 

Trước tiên, tôi không biết liệu JS (jQuery) sẽ tốt hơn hay PHP tốt hơn. Cả hai sẽ không thành vấn đề nếu nó hoạt động.

Ngoài ra tôi là một chút mới với PHP và cố gắng tìm hiểu.

Phương pháp đơn giản nhất (hy vọng) sẽ sử dụng là gì? Vì vậy, tôi không cần phải thay đổi rất nhiều mã chỉ để cung cấp cho một nav class="active"

+0

làm cách nào để bạn nhận được giá trị để đặt lớp đang hoạt động trên trang đó, bạn đang sử dụng biến chuỗi truy vấn để nhận id trang. một cái gì đó như ** exmaple.com? page_id = Apps ** – punit

+0

Tôi không phải là tiên tiến trong PHP nào ..... Nó thực sự chỉ là các trang tĩnh với PHP. – nowayyy

Trả lời

25

Asumming bạn có một biến $page (trong đó có tên của trang web mà bạn hiện đang trên):

<nav> 
    <ul> 
     <li class="<?php echo ($page == "home" ? "active" : "")?>"> <a href="/">Home</a> </li> 
     <li class="<?php echo ($page == "apps" ? "active" : "")?>"> <a href="#">Apps</a> </li> 
     <li class="<?php echo ($page == "forums" ? "active" : "")?>"> <a href="#">Forums</a> </li> 
    </ul> 
    </nav> 
+1

Bạn có thể giải thích biến $ page trông như thế nào không? và biến sẽ nằm trên tệp inc hoặc trang tôi sẽ đưa nav vào? Thực sự mới với PHP ở đây. – nowayyy

+4

nếu bạn đặt ' 'trên trang chủ được bao gồm của bạn thì Trang chủ sẽ được đặt thành hoạt động. Đừng quên thiết lập CSS. – Prisoner

0

nếu bạn đang sử dụng chuỗi truy vấn exmaple.com?page_id=Apps để chuyển id trang hơn với php bạn có thể cách tiếp cận này

$ page_id = $ _REQUEST ['page_id'];

<ul> 
      <li class="<?php echo ($page_id == "Home" ? "active" : "");?>"> 
<a href="/">Home</a> 
      </li> 
      <li class="<?php echo ($page_id == "Apps" ? "active" : "");?>"> 
<a href="#">Apps</a> 
      </li> 
      <li class="<?php echo ($page_id == "Forums" ? "active" : ""); ?>"> 
<a href="#">Forums</a> 
      </li> 
     </ul> 
+0

Đó là waaaay quá hackable :-P – Neal

+0

@neal tôi không biết làm thế nào anh ta nhận được tên trang hiện tại, nó chỉ là về một ý tưởng để tiếp cận. – punit

0

Tại trang tiêu đề sử dụng:

<?php $loc = this.location; ?> 

Sau đó, tại mỗi liên kết thêm:

<?php(this.href == $loc) ? echo 'class="active"' : '' ?> 
8

Đây là một cách đơn giản mà bạn không cần phải thêm bất kỳ biến khác

<li class="<?php echo ($_SERVER['PHP_SELF'] == "/index.php" ? "active" : "");?>"> 
<a href="index.php">Start</a> 
</li> 
<li class="<?php echo ($_SERVER['PHP_SELF'] == "/about.php" ? "active" : "");?>"> 
<a href="about.php">About</a> 
</li> 
<li class="<?php echo ($_SERVER['PHP_SELF'] == "/practices.php" ? "active" : "");?>"> 
<a href="practices.php">Practices</a> 
</li> 
0

Nếu bạn không muốn sử dụng jQuery hoặc PHP - ca n làm tiếp theo:

  1. Cung cấp ID hoặc CLASS khác nhau cho mỗi phần tử "your-include-nav.php".
  2. Xác định kiểu "hoạt động" với CSS trong mục <head>, trên mỗi trang.
Các vấn đề liên quan