像步骤导航一样的痕迹

时间:2012-08-01 09:26:22

标签: php navigation breadcrumbs

我有一件我无法弄清楚的事情。

我有一个页面,其中有6个步骤。 如何制作像导航一样的面包屑,其中后续步骤处于非活动状态且前面的所有步骤都处于活动状态?

步骤1>步骤2>步骤3>步骤4>步骤5>第6步

当我在第4步时会看起来像这样

第1步> 第2步> 第3步> 第4步>步骤5>第6步

这些活动步骤将在url中有一个参数指向该步骤页。

即。第1步的page参数是page = intro

希望有人可以提供帮助吗?

-------解决方案-------

session_start();
$_SESSION['page'][] = $_GET["page"];

$steps = array(
    "selecthouse" => "Vælg hustype og tagform",
    "selectrooftile" => "Vælg tagsten",
    "angleinput" => "Tagvinkel",
    "rfinish" => "Tag-detaljer",
    "inputdims" => "Indsæt mål",
    "matliste" => "Materiale-liste",
    );

foreach($steps as $key => $value) {
    if(in_array($key, $_SESSION['page'])) {       
        echo '<a href="?page='.$key.'">'. $value .'</a></b> >';
    } else {
        echo $value ." > ";
    }
}

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点,最好的方法取决于代码的其余部分。

我个人对这种线性导航的偏好是将用户访问的页面存储在会话中的数组中,例如

<?php
  session_start();
  $_SESSION['pages'][] = $_SERVER['REQUEST_URI'];
?>

然后,您需要做的就是在“面包屑”中的每个项目周围放置一个if in数组,例如

之类的东西
<?php
  if (in_array('/step1.php',$_SESSION['pages'])) {
    ?>
    <a href="/step1.php">Step 1</a>
    <?php
  } else {
    ?>
    Step 1
    <?php
  }
?>

修改

从新发布的代码中,有一个结束</b>但没有开始标记。

至于重新回到某个步骤,你最好做这样的事情:

<?php
  $stepskeys = array_keys($steps);
  $_SESSION['pages'] = array(
    0 => $stepskeys[1],
    1 => $stepskeys[2],
    2 => $stepskeys[3]
  );
?>

这会将阵列重置回第3步。