1

SilverStripe 3.1 テンプレートに 3 層のナビゲーション メニューをまとめており、テンプレートには次のコードがあります。

<% loop $Menu(1) %>
...
  <% loop $Children %>
...
    <% loop $Children %>
     <li><a href="$Link">$Model</a></li>
    <% end_loop %>
  <% end_loop %>
<% end_loop %>

ただし、第 3 層から期待する出力が得られません。チルドレン・オブ・ザ・チルドレンを手に入れることは実際に可能ですか?そうでない場合、代わりに何をすべきですか?ありがとう!

4

1 に答える 1

3

はい、Children of a Children ループをループすることは可能です。

あなたのコードは私には正しいようです。正しく動作するはずです。

考えられるいくつかの問題を確認してください。

各レベルのすべてのページShowInMenusが true に設定されていることを確認してください。true に設定された$Childrenページ$Menu(1)のみを返します。ShowInMenusこのチェックボックスは、任意のページの [設定] タブにあります。それ以外の場合は、$AllChildren代わりに$Children非表示のページを取得するためにも使用できます。

サイト ツリーに 3 レベルの深さのページがあることを確認します。確認すべき明らかなこと。

$Model組み込みのページ変数ではありません。これは、設定したカスタム変数である必要があります。これがページに設定され、値が入力され、フロントエンドでアクセスできることを確認してください。

サイト ツリーの出力を確認するために使用できるテスト テンプレート コードを次に示します。これは、問題のデバッグに役立つ場合があります。

<ul>
<% loop $Menu(1) %>
    <li>
        <a href="$Link">$Title - $Model</a>
        <% if $Children %>
        <ul>
        <% loop $Children %>
            <li>
                <a href="$Link">$Title - $Model</a>
                <% if $Children %>
                <ul>
                <% loop $Children %>
                    <li>
                        <a href="$Link">$Title - $Model</a>
                    </li>
                <% end_loop %>
                </ul>
                <% end_if %>
            </li>
        <% end_loop %>
        </ul>
        <% end_if %>
    </li>
<% end_loop %>
</ul>
于 2015-04-29T04:51:41.197 に答える