2012-08-01 62 views
0

我有一點我不明白的東西。breadcrumb like steps導航

我有一個頁面,有6個步驟。 如何使麪包屑如導航在下一步處於非活動狀態並且所有先前的步驟都處於活動狀態?

即,

步驟1>步驟2>步驟3>步驟4>步驟5>步驟6

將看起來像這樣當我在步驟4

步驟1>步驟2>步驟3>步驟4>步驟5>步驟6

而這些活動步驟將在指向該步驟頁面的url中有一個參數。

I.e.第1步的頁面參數是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

關閉頂部我腦海中,想到「in_array」檢查鏈接是否存在於數組中,如果是,請應用類和鏈接,否則保持原樣 – asprin 2012-08-01 09:27:26

回答

1

有許多方法可以做到這一點,最好的真的取決於你的代碼的其餘部分。

這樣的線性導航的個人偏好是將用戶在會話中訪問的頁面存儲在數組中,例如,

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

然後,所有你需要做的就是把一個如果陣列周圍的每個項目中的「麪包屑」,例如像

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

+0

我已根據您的答案編輯我的問題!似乎工作!謝謝! 後續問題! 當我說我在步驟6並回到步驟3時,我可以取消設置某些鍵嗎?然後步驟4,5和6將再次失效。 – 2012-08-01 10:20:17

+0

查看我的編輯 – Nick 2012-08-01 10:28:47

+0

感謝您發現缺少的開標籤:) 我接受了您的答案! – 2012-08-01 11:12:02