1

Liferayのメインメニュー項目にマウスを合わせるときのツールチップが欲しいのですが。デフォルトでは、これを行う方法はありません。ファイル内であっても*.vm、マークアップにはリンクのタイトル属性は含まれていません。

私がそれについて行おうとしている方法は、ページにカスタム属性を定義することです。これにより、Liferay自体に、必要なタイトル値を入力するためのインターフェイスが提供されます。次に、この値をメニューリンクのタイトル値として使用することを計画しています。しかし、これが機能するかどうかはわかりません。

私が知らないより良い方法はありますか?

4

4 に答える 4

1

HTML Title次に、図に示すように、ページの説明にを使用できると思います。

ここに画像の説明を入力してください

そして、@ Sharanaが言及しているように、カスタムテーマのタグの属性でこれ( $nav_item.getTitle())を使用できます。title<a>navigation.vm

<a title="$nav_item.getTitle()" href="$nav_item.getURL()" $nav_item.getTarget()><span>$nav_item.icon() $htmlUtil.escape($nav_item.getName())</span></a>

これを使用することもできます($nav_item.getLayout().getHTMLTitle($locale)):

<a title="$nav_item.getLayout().getHTMLTitle($locale)" href="$nav_item.getURL()" $nav_item.getTarget()><span>$nav_item.icon() $htmlUtil.escape($nav_item.getName())</span></a>

新しいカスタムフィールドを追加する必要がなく、liferayにすでに存在するものを使用して作業が行われ、呼び出しが減るため、このアプローチの方がはるかにクリーンですexpando(これはそれほど重要ではないかもしれません)。

これがあなたにいくらかのリードを与えるのに役立つことを願っています。

于 2013-01-04T15:21:12.227 に答える
0

なぜnavigation.vmでこれを行う方法がないと思うのですか?

以下はnavigation.vmからのコードです

<a href="$nav_item.getURL()" $nav_item.getTarget()><span>$nav_item.icon() $htmlUtil.escape($nav_item.getName())</span></a>

これにtitle属性を追加すると、

<a title="$htmlUtil.escape($nav_item.getName())" href="$nav_item.getURL()" $nav_item.getTarget()><span>$nav_item.icon() $htmlUtil.escape($nav_item.getName())</span></a>

できます。

子供用アイテムも同様です。

于 2013-01-04T00:18:00.107 に答える
0

正解は私が最初に行っていた方向です。ページに関連するカスタムフィールドを作成し、それをベロシティテンプレートで使用します。ナビゲーションメニューのコード全体を次に示します。ここで、menuTitleはカスタム変数の名前です。

<nav class="$nav_css_class" id="navigation">
    <h1>
        <span>#language("navigation")</span>
    </h1>

    <ul>
        #foreach ($nav_item in $nav_items)
            #if ($nav_item.isSelected())
                <li class="selected">
            #else
                <li>
            #end
                <a title="$nav_item.getLayout().getExpandoBridge().getAttribute("menuTitle")" href="$nav_item.getURL()" $nav_item.getTarget()><span>$nav_item.icon() $nav_item.getName()</span></a>

                #if ($nav_item.hasChildren())
                    <ul class="child-menu">
                        #foreach ($nav_child in $nav_item.getChildren())
                            #if ($nav_child.isSelected())
                                <li class="selected">
                            #else
                                <li>
                            #end
                                <a title="$nav_child.getLayout().getExpandoBridge().getAttribute("menuTitle")" href="$nav_child.getURL()" $nav_child.getTarget()>$nav_child.getName()</a>
                            </li>
                        #end
                    </ul>
                #end
            </li>
        #end
    </ul>
</nav>
于 2013-01-04T17:30:00.950 に答える
0

どちらのソリューションも優れています。

ツールチップのテキストをhtmlページのタイトルと異なるものにする必要があるかどうかによって異なります。含まれている場合は、カスタム属性ルートに移動します。そうでない場合は、htmltitleメソッドを再利用します。

ここで何かが足りない場合はご容赦ください。もしそうなら、はっきりさせてください。

于 2013-01-07T09:26:19.123 に答える