2013-08-28 40 views
0

注意:原件 & 新的裏面的代碼。用php,js和mysql導航菜單

我的問題在於,原始「父母」不是很友善,不按照計劃行事,它也不會在網站地圖中找到。

是搜索引擎優化友好,將得到拾起在網站地圖,並將按計劃在最後。

我需要它是一個鏈接,以便您可以看到左側的導航菜單和每個菜單/子菜單的名稱,並且在頁面的中間有一張帶有每個子菜單名稱的圖片,菜單取決於您在左側的導航菜單中單擊哪個父級。

隨着新增行添加我得到一個頁面刷新由於鏈接,所以子菜單隻刷新刷新前打開一秒。

什麼,我需要幫助解決的是:

-Making子菜單留頁面刷新過程中打開,以便您可以同時使用從側邊欄導航的導航和中心導航。

預先感謝!
//吉姆

這是我目前的菜單:

<div id="container"> 
    <dl> 
    <?php 
     $select_category = mysql_query("SELECT * FROM menu WHERE hidden = 0 ORDER BY menu ASC"); 
      while($ln = mysql_fetch_array($select_category)){ 
       $idcat = $ln['nmr']; 
       $catname = str_replace(' ', '-', $ln['menu']); 
    ?> 

      *Original*: <dt><a href="#/<?php echo $catname; ?>/" style="color:#000;" ><strong><?php echo $ln['menu']; ?></strong></a></dt> 

     *New*: <dt><a href="http://www.mysite.com/cats/<?php echo $msub['nmr'];?>/<?php echo $mname; ?>/" style="color:#000;" ><strong><?php echo $mn['menu']; ?></strong></a></dt> 

     <?php 
      $select_sub = mysql_query("SELECT * FROM submenu WHERE nmrmenu = '$idcat' AND hidden = 0"); 
      if(mysql_num_rows($select_sub) == 0){ 
      }else { 
     ?> 
     <dd> 
     <ul> 
     <?php 
      while($lsub = mysql_fetch_array($select_sub)){ 
       $subname = str_replace(' ', '-', $lsub['submenu']); 
       $pil = '&raquo;'; 
       $brnr = $lsub['nmr']; 
     ?> 
     <li> <a href="http://www.mysite.com/cat/<?php echo $lsub['nmr'];?>/<?php echo $subname; ?>/" style="color:#333;"> <?php echo $pil; ?>&nbsp;<?php echo $lsub['submenu']; ?></a></li> 
     <?php } ?> 
     </ul> 
     </dd> 
     <?php } ?> 
     </dl> 
    <?php } ?> 
    </div> 

CSS:

#container{ margin:auto; margin-left:10px; } 
dl, dt, dd, ul, li, a{ margin:0; padding:0; } 
a{ text-decoration: none; color:#0F0; } 
li{ padding-left:.6em; list-style-type:none; color:#FF0; } 
dl{ width:100px; } 
dt{ } 

JS:

$(function() 
{ 
    $("dd:not(first)").hide(); 
    $("dt a").click(function() 
    { 
     $("dd").slideUp("normal"); 
     $(this).parent("dt").next("dd").slideDown("normal"); 
    }); 
}); 

這是我的代碼jsFiddle

+1

使用HTML,CSS和JS一個的jsfiddle的任何機會呢? :) – Technoh

+0

@Technoh這裏是一個小提琴http://jsfiddle.net/eFPpC/ 然而,JS似乎並沒有工作,但希望它更有意義。 –

+0

我已經修復了您的jsFiddle並將其添加到您的問題中(您忘記了包含jQuery)。現在,您的新舊代碼之間的主要區別在於舊代碼未觸發刷新,因此導航功能可以保持打開狀態。使用新代碼,整個頁面都會刷新。我唯一能想到的方法就是使用ajax來替換頁面內容。 –

回答

1

首先你要清理你的html和css。然後,您將要檢查用戶正在查看哪個頁面,並且如果它是一個類別,請顯示該特定的子導航。

這裏是你清理的PHP/HTML。我認爲你弄亂了你的變量名稱,所以如果這不起作用,那可能就是原因。

例如,您有*New*: <dt><a href="http://www.mysite.com/cats/<?php echo $msub['nmr'];?>,但在上面的代碼中未設置$msub['nmr'];

<ul id="nav-container"> 
<?php 
$select_category = mysql_query("SELECT * FROM menu WHERE hidden = 0 ORDER BY menu ASC"); 
while ($ln = mysql_fetch_array($select_category)) { 
    $idcat = $ln['nmr']; 
    $catname = str_replace(' ', '-', $ln['menu']); 

    echo '<li>' 
    echo '<a href="http://www.mysite.com/cats/'.$msub['nmr'].'/'.$mname.'/" ><strong>'.$mn['menu'].'</strong></a>'; 
    echo '<ul'; 

    // This is where we check which page you're on, and show the sub navigation if it corresponds to that page. 
    if ($GET['cat'] == $msub['nmr']) 
    echo ' style="display:block;">'; 
    else 
    echo '>'; 


    while ($lsub = mysql_fetch_array($select_sub)) { 
    $subname = str_replace(' ', '-', $lsub['submenu']); 
    $pil = '&raquo;'; 
    $brnr = $lsub['nmr']; 

    echo '<li><a href="http://www.mysite.com/cat/'.$lsub['nmr'].'/'.$subname.'/">'.$pil.'&nbsp;'.$lsub['submenu'].'</a></li>'; 
    } 

    echo '</ul>'; 
    echo '</li>'; 
} 

?> 

</ul> 

下面是CSS的使用方法。

a { 
    text-decoration: none; 
    color: #333; 
} 
li { 
    padding-left: .6em; 
    list-style-type:none; 
    color:#FF0; 
} 

#nav-container li ul { 
    display: none; /* Hide all sub navigations to start with */ 
} 

,因爲我使用CSS的方式,您不再需要使用JavaScript :)

+0

但是當你點擊父類別時你仍然需要顯示子菜單,所以你不需要JavaScript嗎? – Technoh

+0

正在構建頁面時,php將在要顯示的任何子導航欄中插入'style =「display:block;」''。這裏有一個[jsFiddle](http://jsfiddle.net/GrahamW0009/eFPpC/2/)輸出結果應該是什麼樣的。 jsFiddle是當你瀏覽到http:// www.mysite.com/cats/123/Cars /' –

+0

時顯示的內容的一個例子。在你的jsfiddle中,如果你點擊槍,你將被帶到頁面而不是子菜單向下滑動,汽車子菜單向上滑動。如果我錯了,Jim會糾正我,但我認爲這是他期待的預期行爲。 – Technoh