0

getTextを使用して、各グローバルタブに基づいて異なるhtmlページをロードしようとしています(各タブは異なるhtmlページをロードします)。異なるテキストごとに特定のタブを指定するコードを知っている人はいますか? 以下のコードは、同じテキストをすべてのタブにロードします。

<div class="col_3" metal:define-macro="highlights" i18n:domain="plone">
<h2>Highlights</h2>
<p> 
<tal:block tal:condition= "exists:here/graduate-study/highlghts-grad"
tal:replace="structure here/graduate-study/highlghts-grad/getText">Footer content here</tal:block>
</p>
</div>
<div class="col_3" metal:define-macro="highlights" i18n:domain="plone">
<h2>Highlights</h2>
<p> 
<tal:block tal:condition= "exists:here/undergraduate-study/highlghts-grad"
tal:replace="structure here/undergraduate-study/highlghts-grad/getText">Footer content here</tal:block>
</p>
</div>

など、すべてのタブで...

4

2 に答える 2

1

Plone のグローバル タブはナビゲーション ルートです。現在アクティブなナビゲーション ルートは、次の 2 つの方法で検出できます。

  • body HTML タグには、各セクションのパス名によって異なるsection-[id_of_section]CSS クラスがあります。id_of_section

    ビューレットまたはポートレットから、次の@@plone_layoutビューを使用してこれらのクラスを取得できます。

    tal:define="plone_layout context/@@plone_layout;
                bodyClass python:plone_layout.bodyClass(template, view)"
    

    state-その後、特定の文字列が bodyClass 値に存在するかどうかをテストする必要があります。

  • @@plone_portal_state現在のナビゲーション ルートをビューから直接取得することにより、次のようになります。

    tal:define="plone_portal_state context/@@plone_portal_state;
                nav_root plone_portal_state/navigation_root;
                nav_root_id nav_root/getId"
    

    次に、に基づいてビューレットまたはポートレットを変更できますnav_root_id

ただし、各ナビゲーション ルートには、ビューレットまたはポートレットの登録に使用できるポータル タイプと、場合によってはインターフェイス宣言があることに注意してください。正確なナビゲーションを検出することは、通常、最適なオプションではありません。

于 2012-08-16T06:22:50.413 に答える
0

この効果は一般に「メガメニュー」と呼ばれます。Plone用にこれを実装する製品があります、http://plone.org/products/collective.collage.megamenu/。使用したことはありませんが、出発点として検討することをお勧めします。

于 2012-08-16T18:19:18.253 に答える