0

現在のアイテムの直後にあるメニューアイテムに特別なフォーマット、つまりCUR+1を適用する方法はあります。

lib.menu = HMENU
lib.menu {
    1 = TMENU {
        NO = 1
        NO = {
            ...
        }
        ...
        # The currently selected item
        CUR = 1
        CUR {
            allWrap = ...
        }

        # The next item
        CUR + 1 = 1
        CUR + 1 {
            allWrap = ...
        }
    }
}

フィードバックをいただければ幸いです。また、代替案:これをタイプミスで書く代わりに、PHPクラス/関数を書くことができます。

4

2 に答える 2

0

残念ながら、これはTypoScriptだけでは不可能です。PHPを使った良い解決策も実際には見当たりません。ただし、PHPを使用して実行することもできますが、PHP内のメニュー自体と同じメニュー項目をロードする必要があります。そのため、非常に非効率的で柔軟性がまったくありません。

リンクに特別なクラス属性を追加するか、JavaScriptでフォーマットをラップして実行します。アクティブなアイテムの後に来るアイテムが変更される場所。

于 2011-10-26T15:28:09.463 に答える
0

だから私はこれを自分で解決することができます。答えは、いわゆるレジスタを使用して、現在のオブジェクトを通過したかどうかをマークすることです。例えば:

lib.menu = HMENU
lib.menu {
    1 = TMENU {
        NO = 1
        NO = {
            # Render using Common Object Array (COA)
            stdWrap.cObject = COA
            stdWrap.cObject {
                # Normal Case (However the an item should normally be rendered
                10 = TEXT
                10 {
                   if {
                       isTrue.data = register:cid
                       value = NORMAL RENDERING
                   }
                }
                20 = TEXT
                20 {
                   if {
                       isTrue.data = register:data
                       value = RENDERING (IMMEDIATELY) AFTER THE CURRENT ITEM
                   }
                }
                # Unset the register (after we've done with our special formatting)
                30 = LOAD_REGISTER
                30.cid= 0
            }
        }
        ...
        # The currently selected item
        CUR = 1
        CUR {
            # Render using Common Object Array (COA)
            stdWrap.cObject = COA
            stdWrap.cObject {
              # However the Current item should normally be rendered
              10 = TEXT
              10.field = title
              # Mark that we've reached the current item
              20 = LOAD_REGISTER
              20.cid= 1
            }    
        }     
    }
}

LOAD_REGISTERを使用して設定されるレジスタは、基本的に実行時変数の一種であり、メニュー項目(またはその他)を反復処理する過程で設定およびリセットできます。そのため、メニュー項目の進行状況を記録するために使用できます。特に、現在のメニュー項目(CUR)を通過したかどうかを記録するために使用できます。

rant beginタイプミスがドメイン固有言語であり、主にメニューなどのこの標準化に使用されることを考えると、エレガントなソリューションはほとんどありません。/ rant end

于 2011-10-28T15:00:29.757 に答える