0

注:コード内のオリジナル新しい。

ここでの私の問題は、元の「親」があまり SEO フレンドリーではなく、計画どおりに動作せず、サイトマップにも取得されないことです。

ただし、新しいものは SEO フレンドリーで、サイトマップで取り上げられ、最終的には計画どおりになります。

左のナビゲーションメニューと各メニュー/サブメニューの名前の両方が表示され、ページの中央に各サブメニューの名前の写真が表示されるように、リンクにする必要があります。親は左側のナビゲーション メニューでクリックします。

新しい行を追加すると、リンクが原因でページが更新されるため、サブメニューは更新の前に 1 秒間だけ開いて点滅します。

私が解決するのに助けが必要なのは:

- ページの更新時にサブメニューを開いたままにして、サイドバー ナビゲーションとセンター ナビゲーションの両方を使用できるようにします。

よろしくお願いします!
//ジム

これは私の現在のメニューです:

<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です。

4

1 に答える 1

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 を使用する必要がなくなりました :)

于 2013-08-28T16:08:04.883 に答える