【问题标题】:Layered navigation system php分层导航系统php
【发布时间】:2013-03-05 18:00:15
【问题描述】:

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

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

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

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

这是我的代码:

导航.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

我的导航功能:

<?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>
<?
};

?>

所以,这里也没有显示,但我正在尝试添加第三个“层”,但它没有嵌套在这个中。

【问题讨论】:

  • 为什么这样?如果您使用的是文本文件,我猜它不是真正动态的,然后最好只编写 HTML 代码并将其放入包含文件中。这样调试起来更快更容易。如果它仅用于 $active_page 部分,那么还有比这更好的方法。
  • 为我指明更好的方向?
  • .txt 文件的原因只是为了使维护更容易,并且在一堆代码之外可以访问导航。

标签: php navigation layered


【解决方案1】:

如果您希望在一堆乱七八糟的代码之外进行导航,您可以使用类似以下的内容。这将允许分层但仍然是简单的编码。而且我认为当您在一年左右检查此代码然后使用-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"); ?>

【讨论】:

  • 谢谢。我猜我想多了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
相关资源
最近更新 更多