Zend_Navigationでsitemap.xmlを作る
サイト構成は以下の通り(URL)
/ /sitemap.xml /grid/
configs/navigation.xml
<route>default</route>を設定しないと
Zend_NavigationはURLの生成にsitemap用のRouteを使用してしまう。
参考:http://framework.zend.com/issues/browse/ZF-6486
参考:http://zendframework.com/issues/browse/ZF-6733
参考:http://forums.zend.com/viewtopic.php?f=69&t=7625&start=0
<config> <navigation> <index> <action>index</action> <controller>index</controller> <label>Top</label> <route>default</route> <pages> <grid> <action>index</action> <controller>grid</controller> <label>jqGrid</label> <route>default</route> </grid> <sitemap> <label>Sitemap</label> <action>sitemap</action> <controller>index</controller> <route>sitemap</route> </sitemap> </pages> </index> </navigation> </config>
Bootstrap.phpにZend_Navigationを設定
public function _initNavigation() { $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'navigation'); $navigation = new Zend_Navigation($config); Zend_Registry::set('Zend_Navigation', $navigation); }
IndexControllerにindexActionを設定
(めんどうでなければSitemapControllerを作ってもよい)
public function sitemapAction() { this->_helper->viewRenderer->setNoRender(true); echo $this->view->navigation()->sitemap(); }
Application.iniに/sitemap.xmlでindex/sitemapにアクセスするよう設定
resources.router.routes.sitemap.type = "Zend_Controller_Router_Route_Static" resources.router.routes.sitemap.route = "sitemap.xml" resources.router.routes.sitemap.defaults.controller = "index" resources.router.routes.sitemap.defaults.action = "sitemap"