Navigationビューヘルパの種類
最後に、Zend_Navigation_PageオブジェクトやコンテナをHTMLに変換する、Zend_ViewモジュールのNavigationビューヘルパについて見ていきます。Navigationビューヘルパは、コンテナに登録されたページを変換する機能を持つ4つクラスと、それらのクラスへのアクセスを仲介するプロキシクラス(Zend_View_Helper_Navigationクラス)から構成されています。
それでは、実際に描画を担当する「メニュー」「パンくずリスト」「リンク」「XMLサイトマップ」の、4つのビューヘルパについて見ていきましょう。
メニュービューヘルパ
メニュービューヘルパはコンテナに含まれるページを、メニューとして出力するためのビューヘルパです。元のコンテナが階層構造を持っていた場合にはそれもメニューに反映します(リスト11)。
$this->view->navigation()->menu()->render()
これを描画した例は次のようになります(図2)。

なお、プロキシクラスに何も指定しないで描画した場合には、このメニュービューヘルパを利用して描画が行われます。
パンくずリストビューヘルパ
「パンくずリスト」は、現在表示されているウェブページがウェブサイトの階層構造の中でどこに位置しているかを表示する仕組みです。トップページから順番に辿って行って、現在表示されているウェブページまでのウェブページを表示します。
リスト12は、「index/breacrumbs」のウェブページを表示してる時のパンくずリストの内容です。
$this->view->navigation()->breadcrumbs()->render()
▼
<a href="/">サイト内トップ</a> > <a href="/">ナビゲーションの種類</a> > パンくずリスト
これを描画した例は次のようになります(図3)。

リンクビューヘルパ
リンクビューヘルパはHTMLのヘッダ部に記述するLINKタグを生成するためのビューヘルパです。リスト13では「index/links」を表示しているときのリンクビューヘルパの出力の内容です。
$this->view->navigation()->links()->render()
▼
<link rel="start" href="/" title="ナビゲーションの種類"> <link rel="next" href="/index/sitemap" title="サイトマップ"> <link rel="prev" href="/index/breadcrumbs" title="パンくずリスト"> <link rel="chapter" href="http://codezine.jp/" title="コードジン"> <link rev="section" href="/" title="ナビゲーションの種類">
サイトマップビューヘルパ
サイトマップビューヘルパはウェブサイトの構成をXMLで記述したサイトマップを出力するためのヘルパです(リスト14)。
$this->view->navigation()->sitemap()->render()
▼
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url><loc>http://localhost/</loc></url> <url><loc>http://localhost/index/menu</loc></url> <url><loc>http://localhost/index/breadcrumbs</loc></url> <url><loc>http://localhost/index/links</loc></url> <url><loc>http://localhost/index/sitemap</loc></url> <url><loc>http://codezine.jp/</loc></url> </urlset>
この出力は直接HTMLに埋め込んで利用するというよりは、検索エンジンがサイト内の情報を収集するのを補助する情報を提供するために利用します。
おわりに
Zend_Navigationモジュールを利用してリンクをまとめて出力する方法について紹介しました。階層構造のあるサイトについてもメニューを自動的に作成したり、パンくずリストを作成したりと本格的なページを作成するのに便利な機能が揃っていることが確認していただけたと思います。
次回はZend_Navigationモジュールの応用を紹介したいと思います。今回紹介し切れなかったZend_Configを利用したリンク集の作成や、Zend_Acl(アクセスコントロール機能)との連携などについて見ていきたいと思います。
