Acheminer les demandes de sitemap.xml au contrôleur personnalisé / action
Afin de demandes directes de / sitemap.xml à un contrôleur de la coutume et l'action dans votre Zend Framework application il suffit d'ajouter ce qui suit dans votre application.ini ou de remplacement du fichier de configuration (par exemple, j'utilise navigation.ini):
resources.router.routes.sitemap.route = "sitemap.xml" resources.router.routes.sitemap.defaults.controller = indice resources.router.routes.sitemap.defaults.action = sitemap
Exemple de code pour la sortie peut être vu par la création d'une action dans le contrôleur approprié (par exemple, mon sitemap réside dans le contrôleur index, plan du site d'action):
< php classe IndexController extends Zend_Controller_Action { / ** * Rend un plan du site repose sur Zend_Navigation configuration * / sitemapAction fonction publique () { echo $ cette navigation-> view-> () -> plan du site (); $ This layout-> view-> () -> disableLayout (); $ This-> setNoRender _helper-> viewRenderer-> (true); } }
Sitemaps peut rapidement et facilement être générés en utilisant Zend_Navigation , un grand tutoriel rapide (et généralement très utile pour les tutoriels Zend Framework) est Casts Zend - dynamiquement la création d'un menu, un plan du site et la chapelure .


















































Une chose que j'ai oublié de mentionner, c'est que vous aurez également besoin de préciser votre itinéraire standard de votre sitemap, sinon toutes les URL des / sitemap.xml si vous utilisez Zend_Navigation_Page_Mvc (si vous fournissez des URI il ne sera pas un problème ).
Par exemple, mon dernier projet utilise le routage suivants:
; ==============================
; Ressources de routage
; ==============================
resources.router.routes.www.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.www.route = ": module.example.com"
resources.router.routes.www.defaults.module = "default"
resources.router.routes.www.chains.index.type = "Zend_Controller_Router_Route"
resources.router.routes.www.chains.index.route = ": controller /: action / *"
resources.router.routes.www.chains.index.defaults.controller = "index"
resources.router.routes.www.chains.index.defaults.action = "index"
resources.router.routes.sitemap.type = "Zend_Controller_Router_Route"
resources.router.routes.sitemap.route = "sitemap.xml"
resources.router.routes.sitemap.defaults.controller = indice
resources.router.routes.sitemap.defaults.action = sitemap
C'est pourquoi dans mon navigation.xml (ou n'importe quel config vous décidez d'utiliser), vous aurez besoin de spécifier le routage à utiliser, par exemple
default.pro.pages.aboutUs.label = "Profil de l'entreprise"
default.pro.pages.aboutUs.module = "www"
default.pro.pages.aboutUs.controller = "Qui sommes-nous"
default.pro.pages.aboutUs.action = "index"
default.pro.pages.aboutUs.resource = "www_pages"
default.pro.pages.aboutUs.route = "www-index"
[...] La poursuite sur mon dernier billet sur Zend_Navigation, les demandes de route pour sitemap.xml au contrôleur personnalisé / action, ce poste est d'environ dymnamically ajouter des pages à un conteneur Zend_Navigation à [...] l'exécution du script /