Zend_Navigation(フレームワークへの甘い追加、ところで)を使用してメニューを作成し、その後、ページに(自明に)レンダリングする必要があります。最初に、コントローラーのどこかにコンテナーを設定しました。
// $pages is the array containing all page information
$nav = new Zend_Navigation($pages);
$this->view->navigation($nav);
次に、レイアウトでは、次のようにレンダリングされます。
echo $this->navigation()->menu();
これは完璧に機能します。今:メニューのレンダリングを少し変えたいです。私が作成しているページは、jQuery Fisheye-pluginを使用して、Macのようなドックメニューを作成しています。ただし、このプラグインには特定のマークアップが必要です...
実際には、 (アイコンの場合)と(ツールチップの場合)の<a>
両方を含む要素のリストを取ります。標準のメニュービューヘルパーは、パラメーターをリンクテキストとして、順序付けされていないリスト内のすべてを(論理的に)レンダリングします。<img>
<span>
'label'
パラメータに渡されたコンテンツは'label'
レンダリング前にエスケープされているように見えるので、そこにhtmlを挿入しても何の役にも立ちません。<li>
さらに、Fisheyeは通常、タグに含まれているアイテムを取得していないようで、すべてがラップされていますが、要素<ul></ul>
の1つのレベルのリストにすぎません。<a>
ドックのカスタムビューヘルパーを作成することを考えていました。これにより、<img>
との挿入を処理できます<span>
が、ナビゲーションクラスにカスタムビューヘルパーをアタッチするのに非常に苦労しています。他のすべてのカスタムクラス(モデルなど)がオートローダーによって適切に処理されているにもかかわらず、どこにどのように配置するかがわかりません。これについて何かアイデアはありますか?
繰り返しになりますが、このビューヘルパーを機能させることができたとしても、HTMLの順序付けされていないリストが残ります-カスタムビューヘルパーを使用してもリストを失う可能性があることはわかっていますが、私は常にメインを含むのが好きですセマンティクスのために、リスト内のナビゲーションメニュー。
誰かが私を少し助けてくれるなら、私はそれを大いに感謝します。Fisheyeが<ul>
'sで動作することを意図していない場合、それは残念です...この場合、Zend_Navigationを完全に失う正当な理由がありますか?