CodeZine(コードジン)

特集ページ一覧

PHPアプリでのナビゲーションUIの管理と表示
- Zend_Navigation -

Zend Frameworkによる実践的なPHPアプリケーション開発 26

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/12/22 14:00

ダウンロード sample.zip (9.8 KB)

目次

Navigationビューヘルパの種類

 最後に、Zend_Navigation_PageオブジェクトやコンテナをHTMLに変換する、Zend_ViewモジュールのNavigationビューヘルパについて見ていきます。Navigationビューヘルパは、コンテナに登録されたページを変換する機能を持つ4つクラスと、それらのクラスへのアクセスを仲介するプロキシクラス(Zend_View_Helper_Navigationクラス)から構成されています。

 それでは、実際に描画を担当する「メニュー」「パンくずリスト」「リンク」「XMLサイトマップ」の、4つのビューヘルパについて見ていきましょう。

メニュービューヘルパ

 メニュービューヘルパはコンテナに含まれるページを、メニューとして出力するためのビューヘルパです。元のコンテナが階層構造を持っていた場合にはそれもメニューに反映します(リスト11)。

[リスト11]メニュービューヘルパ(IndexController.php)
$this->view->navigation()->menu()->render()

 これを描画した例は次のようになります(図2)。

図2 リスト11を描画した例
図2 リスト11を描画した例

 なお、プロキシクラスに何も指定しないで描画した場合には、このメニュービューヘルパを利用して描画が行われます。

パンくずリストビューヘルパ

 「パンくずリスト」は、現在表示されているウェブページがウェブサイトの階層構造の中でどこに位置しているかを表示する仕組みです。トップページから順番に辿って行って、現在表示されているウェブページまでのウェブページを表示します。

 リスト12は、「index/breacrumbs」のウェブページを表示してる時のパンくずリストの内容です。

[リスト12]パンくずリストビューヘルパ(IndexController.php)
$this->view->navigation()->breadcrumbs()->render()

 ▼

<a href="/">サイト内トップ</a> &gt; <a href="/">ナビゲーションの種類</a> &gt; パンくずリスト

 これを描画した例は次のようになります(図3)。

図3 リスト12を描画した例
図3 リスト12を描画した例

リンクビューヘルパ

 リンクビューヘルパはHTMLのヘッダ部に記述するLINKタグを生成するためのビューヘルパです。リスト13では「index/links」を表示しているときのリンクビューヘルパの出力の内容です。

[リスト13]リンクビューヘルパ(IndexController.php)
$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)。

[リスト14]サイトマップビューヘルパ(IndexController.php)
$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(アクセスコントロール機能)との連携などについて見ていきたいと思います。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Zend Framework入門

もっと読む

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

  • WINGSプロジェクト 風田 伸之(カゼタ ノブユキ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5