0

CODNITIVE の Sidebar Navigation Menu Professional for Magento を使用しており、デフォルトで拡張できるようにしています。特に、最初のリスト項目だけをデフォルトで展開するソリューションが必要です。app/code/community/codnitive/sidenav/block/ で Navigation.php を編集しようとしています:

    $collapsibleClass = '';
    if ($config->isCollapsible()) {
        $collapsibleClass = ' collapsible';
    }

    // add collapsible arrow and wrraper
    $arrow = '';
    $extraStyle = '';
    $collapsibleIconPosition = $config->getCollapsibleIconPosition();
    if ($config->isCollapsible()) {
        $width = $config->getCollapsibleIconType() === 'arrow' ? 8 : 16;
        $height = 0;
        $expanded = 0;
        if ($hasActiveChildren) {
            $width = $config->getCollapsibleIconType() === 'arrow' ? 8 : 16;
            $height = 16;
        }
        if ($height == 0) {
            $extraStyle = ' display:none;';
        }
        if ($height == 0 && $collapsibleIconPosition === 'left') {
            $liMarginLeft += $width;
        }
        if ($this->isCategoryActive($category)) {
            $expanded = 1;
        }

        $expanded = ' expanded="' . $expanded .'"';
        $spanOnclick = 'onclick="Codnitive.expandMenu(this.parentNode)';
        $spanClass   = $config->getCollapsibleIconType() . '-' . $collapsibleIconPosition;
        $arrow = '<span class="' . $spanClass . ' " ' . $spanOnclick . '" style="width: ' . $width . 'px; height: ' . $height . 'px;' . $extraStyle . '"></span>';
    }

このコードを追加して、目的のカテゴリを展開すると

        if ($category->getId() == '35') {
        $expanded = 1;
    }

2 つの問題が発生します。

  1. 別のカテゴリがアクティブな場合でも、カテゴリは展開されたままです。
  2. 「プラス」記号 (カテゴリを展開できることを示す) は残りますが、「マイナス」にする必要があります。$collapsibleIconPosition は「正しい」べきだと思いますか?

            if ($height == 0 && $collapsibleIconPosition === 'left') {
            $liMarginLeft += $width;
        }
    
4

2 に答える 2

0

ブロックするように設定されている親がわかりませんが、これを試してください。<li>span タグは親ではないため、 a タグの上の最初のタグだと思います

$( document ).ready(function() {
  $('.nav-1').css( "display", "block" );
});

これがあなたが望む方法であるかどうかを確認してくださいhttp://jsfiddle.net/6VSUm/

于 2013-10-03T12:42:05.823 に答える
0

HTML がロードされた後 (十分に) いつでもその JavaScript を実行したいとします。

あなたのサイトが を使用している場合、jQueryそれを準備完了のコールバックに入れることができます:

$(function(){
    Codnitive.expand(document.getElementById('the-menu-parent-element-id'))
})

HTML ドキュメントの最後、または少なくともすべてのナビゲーション HTML コードの後に​​配置できます。

...
  <script type="text/javascript" language="javascript">
    Codnitive.expand(document.getElementById('the-menu-parent-element-id'))
  </script>
</body>

onloadまたは、コールバックに入れることもできます。(警告:これはサイトの他の JavaScript に干渉する可能性があります) 既存の がある場合は、window.onloadその関数の先頭または末尾に追加しても安全です。

window.onload = function(){
  Codnitive.expand(document.getElementById('the-menu-parent-element-id'))
}

ターゲットにしたい要素は次のとおりです。<ul class="level0 collapsible" ...

現在は がないidため、 を直接使用することはできませんgetElementById()

1つの解決策(私のお気に入りのアプローチではありません)は、id

<ul id="start-open" class="level0 collapsible" ...

そしてそれを展開します:

Codnitive.expand(document.getElementById('start-open'))

最善の解決策は、HTML を変更して、HTML に対して行うことを行うことだと思いexpandます。

<li class="level0 nav-1 first parent collapsible" style="margin-left: 0px;">
<span class="plus-right " onclick="Codnitive.expandMenu(this.parentNode)" style="width: 16px; height: 16px;background-position: right center"></span>

<a class="collapsible-wrapper collapse-name" onclick="Codnitive.expandMenu(this.parentNode);return false;" href="#"><span class="category_name">WANT TO BE EXPANDED BY DEFAULT</span></a>

        <ul class="level0 collapsible" style="margin-left: 5px; padding-left: 10px;display: block" expanded="1">

<span class="plus-right"...を取得しstyle="...;background-position: right center"ます。

<ul class="level0"...取得expanded="1"し、 style="...;display:block"


これがうまくいかない場合は、コードのライブ バージョンを確認すると非常に役立ちます。(フィドル、JSとCSSの欠如は十分ではありません)

于 2013-10-03T08:06:03.547 に答える