2013-03-05 127 views
0

我一直在尝试为网站创建基本的导航系统。分层导航系统php

我有一个.txt文件,我试图把整个网站导航,然后我循环逐行并创建嵌套s。这工作正常,但我有两个问题:

1-我有一个单独的导航不同的部门,所以它不嵌套,我不知道如何填充,因为它不会发生在第一个循环。

2 - 我不知道如何更改父导航链接的类而不使用JQuery或手动向每个页面添加$ parent变量。

这里是我的代码:

nav.txt

index.php:Home 
products.php:Products:2 
    ace.php:Ace Blade 
    electrodes.php:Electrodes 
    megasoft.php:Mega Soft 
    lletz.php:Lletz Loops 
    megapower.php:Mega Power:-2 
samples.php:Samples 
gogreen.php:Go Green:2 
    wastecalculator.php:Waste Calculator 
    environmental.php:Environmental Considerations:-2 
about.php:About Us 

MY NAV功能:

<?php 

function main_navigation() 
{  

$active_page = basename($_SERVER['PHP_SELF']); 

?> 

<div class="main_nav"> 
    <ul> 

     <?php 
      $nav = fopen("template/nav.txt", "r") or exit("Unable to open file!"); 
      //Output a line of the file until the end is reached   
      while(!feof($nav)){ 
       $line = fgets($nav); 
       list($url, $name, $layer) = explode(":", $line); 

       echo "<li>"; 
       if ($active_page == $url) { 
         echo "<div class='active'>".$name."</div>"; 
        }else{ 
         echo "<a href='".$url."'>".$name."</a>"; 
        }; 
       if ($layer == 2){ 
        echo "<ul>"; 
       }elseif($layer == -2){ 
        echo "</ul>"; 
       }else{ 
        echo "</li>"; 
       }; 

      }; 
      fclose($nav); 
     ?> 
    </ul> 
</div> 
<? 
}; 

?> 

所以,再次它的这里没有显示,但我尝试添加第三个“层”,但它不嵌套在这里。

+0

为什么这样?如果你正在使用一个文本文件,我猜它不是真正的动态文件,然后写一个HTML代码并把它放在一个包含文件中就更好了。这是更快,更容易调试。如果它只适用于$ active_page部分,那么比这更好的方法。 – 2013-03-05 18:05:25

+0

指向我更好的方向吗? – 2013-03-05 18:07:25

+0

.txt文件的原因只是为了便于维护,并且可以在一堆代码之外访问导航。 – 2013-03-05 18:09:44

回答

0

如果你想在一团乱七八糟的代码之外导航,你可以使用类似下面的东西。这将允许分层但仍然简单的编码。我想了很多更容易理解,当你检查这个代码早在一年左右的时间,然后使用-22

menu.php 

<?php 
function AddMenuItem($url, $name) 
{ 
    $active_page = basename($_SERVER['PHP_SELF']); 

    if ($active_page == $url) 
    echo "<div class='active'>".$name."</div>"; 
    else 
    echo "<a href='".$url."'>".$name."</a>"; 
} 
?> 

<ul> 
    <li> 
    <?php echo AddMenuItem("index.php", "Home"); ?> 
    </li> 
    <li> 
    <?php echo AddMenuItem("products.php", "Products"); ?> 
    <ul> 
     <li> 
     <?php echo AddMenuItem("ace.php", "Ace Blade"); ?> 
     </li> 
     <li> 
     <?php echo AddMenuItem("electrodes.php", "Electrodes"); ?> 
     </li> 
     <li> 
     <?php echo AddMenuItem("megasoft.php", "Mega Soft"); ?> 
     </li> 
    </ul> 
    </li> 
    <li> 
    <?php echo AddMenuItem("samples.php", "Samples"); ?> 
    </li> 
</ul> 



index.php, products.php, ace.php, etc. 

<?php require_once("menu.php"); ?> 
+0

谢谢。猜猜我是在想它。 – 2013-03-05 20:45:01