&m nav – activeNodeId

私は次のメニュー構造を持っています:

menustructure as
you can see, the Item “Clients” points to the same Url as its Child
“Client Portfolio” does.

残念ながら、これはアクティブなmenuitemsの子要素で構成する必要がある私のサブメニューでは機能しません:

{% set activeNodeId = craft.amNav.getActiveNodeIdForLevel('mainmenu','1') %}

{% if activeNodeId %}
   {{ craft.amNav.getNav('mainmenu', {
    class: 'subnav-inner',
    startFromId: activeNodeId
                }) }}
{% endif %}

変数
“activeNodeId”は常に、そのURLを持つ最も深いレベルの子です。したがって、私の場合、「Clients」をクリックするとactiveNodeId
= 66となります。もちろん、「Client
Portfolio」には子がないため、このサブ項目を取得することは意味をなさないものです。

プラグインが常に正しい(親)IDを取るように強制する方法はありますか?または、アクティブなメニューのサブメニュー項目を取得する他の方法ですか?

ベストアンサー

I finally found a solution of my problem that makes the A&M
Nav plugin the perfect choice for me.

一般的な問題は、amnavがactivenode idを取得するためにこの関数を提供していることです。

{% set activeNodeId = craft.amNav.getActiveNodeIdForLevel('mainmenu',1) %}

これは助けにはならない:

残念ながら、level1(最後のパラメータ)は、プラグインではなくクラフトの構造に関連しています。私のケースでは、メニュー項目の子は必ずしも工芸品の子供ではありません(例えば、単一の内容)。

つまり、この関数は、アクティブな子を持つ親の子を取得するのに役立ちません。

This code works to get the active menu item of the first level
in the A&M Nav structure:

{# for first level #}
{% set activeNodeId = craft.amNav.getActiveNodeIdForLevel('mainmenu',1) %}

{# for second level #}
{% set nav = craft.amNav.getNavRaw("mainmenu") %}

{% for item in nav %}
    {% if item.hasActiveChild or item.active %}
        {% set activeNodeId = item.id %}
        {% set activeNode = item %}
    {% endif %}
{% endfor %}

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です