0

Opencartには次のカテゴリ構造があります

<ul>
<li class="bu">
    <a href="http://brandoutlet.lv/index.php?route=product/category&amp;path=205" class="active">PARENT 1</a>
        <ul>
            <li>
                <a href="/index.php?route=product/category&amp;path=205_66"> CHILD 1</a>
                <ul>
                    <li><a href="index.php?route=product/category&amp;path=205_66_230"> - GRANDCHILD 1</a></li>
                    <li><a href="/index.php?route=product/category&amp;path=205_66_229"> - GRANDCHILD 2</a></li>
                    <li><a href="/index.php?route=product/category&amp;path=205_66_228"> - GRANDCHILD 3</a></li>
                </ul>
            </li>
            <li>
                <a href="/index.php?route=product/category&amp;path=205_67" class="active"> CHILD 2</a>
                <ul>
                    <li><a href="/index.php?route=product/category&amp;path=205_67_231"> - GRANDCHILD 1</a></li>
                    <li><a href="/index.php?route=product/category&amp;path=205_67_217"> - GRANDCHILD 2</a></li>
                    <li><a href="/index.php?route=product/category&amp;path=205_67_216"> - GRANDCHILD 3</a></li>
                    <li><a href="/index.php?route=product/category&amp;path=205_67_215"> - GRANDCHILD 4</a></li>
                </ul>
            </li>
        </ul>
</li>
<li class="bu">
    <a href="/index.php?route=product/category&amp;path=206"> PARENT 2</a>
//....ETC

親、子、孫に異なるスタイル(色、重さ、装飾)を与えるにはどうすればよいですか?

JSでULを検索し、位置に応じてクラスを適用して動作させようとしましたが、結果が乱雑で正しくありません。

何か案は?ありがとう!

ビューファイル:

<ul>
    <?php foreach ($categories as $category) { ?>
    <?php if($category['children']) { ?>
        <li class="bu">
        <?php } else { ?>
        <li class="onit" >
        <?php } ?>
      <?php if ($category['category_id'] == $category_id) { ?>
      <a href="<?php echo $category['href']; ?>" class="active" ><?php echo $category['name']; ?></a>
      <?php } else { ?>
      <a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
      <?php } ?>
      <?php if ($category['children']) { ?>
      <ul>
        <?php foreach ($category['children'] as $child) { ?>
        <li class="onit" >
          <?php if ($child['category_id'] == $child_id) { ?>
          <a href="<?php echo $child['href']; ?>" class="active">  <?php echo $child['name']; ?></a>
          <?php } else { ?>
          <a href="<?php echo $child['href']; ?>">  <?php echo $child['name']; ?></a>
          <?php } ?>
        </li>
        <?php } ?>
      </ul>
      <?php } ?>
    </li>
    <?php } ?>
  </ul>
4

2 に答える 2

0

このフォームを生成するphpファイルを検索して変更できます。いくつかのcssクラスでコードを完成させるよりも。


編集された質問への回答:
hrefを見ると、パス部分に同じ世代の同じ数の変数があることがわかります。

  • 親:path = 205
  • 子:path = 205_66
  • 孫:path = 205_66_230

テキストのこの部分を取得でき、変数番号に応じてフォーマットを実行します。したがって、条件は次のようになります。

if(count(explode("_",strstr($child['href'],"path=")))==1)
   //Do the formating for parent.
  • strstr()を使用して、パーツの前を削除しpath=ます。の前に「_」文字がない場合は、これを省略できますpath=
  • explode()を使用すると、文字列を「_」文字の配列に分割できます。
  • count()よりも配列の要素をカウントします。

親が1、子供が2、孫が3と比較してください。
そうでなければ、コードを書き直すことで、この目標を達成するためのより良い方法があるはずだと思います。

于 2012-11-19T14:02:10.490 に答える
0

私はあなたが多分このようにそれをすることができると思います:

ul li {
 color:red;
}

ul li > ul li {
 color:blue;
}

ul li > ul li > ul li {
 color:green;
}
于 2012-11-19T15:18:00.530 に答える