Route Anfragen für sitemap.xml, um benutzerdefinierte controller / action

Von Steven Lloyd Watkin , Mittwoch 6. Januar 2010 00.13 Uhr

Um den direkten Anfragen / sitemap.xml eine benutzerdefinierte Controller und die Aktion in Ihrem Zend Framework -Anwendung fügen Sie einfach folgendes in Ihre application.ini oder alternative Konfigurationsdatei (zB ich navigation.ini):

 resources.router.routes.sitemap.route = "sitemap.xml"
 resources.router.routes.sitemap.defaults.controller = Index
 resources.router.routes.sitemap.defaults.action = sitemap

Beispiel-Code für die Ausgabe kann durch die Schaffung einer Aktion in den entsprechenden Controller zu sehen (zB meine sitemap liegt in der Index-Controller, Übersicht Aktion):

 < php
 Klasse IndexController
     erstreckt Zend_Controller_Action
 {
     / **
      * Renders eine Sitemap auf Zend_Navigation basiertes Setup
      * /
     öffentliche Funktion sitemapAction ()
     {
    	 echo $ this-> view-> navigation () -> Sitemap ();
    	 $ This-> view-> layout () -> disableLayout ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (true);
     }
 }

Sitemaps können schnell und einfach mit Hilfe erzeugt werden Zend_Navigation , ein großer Kurzanleitung (und in der Regel sehr nützlich für Zend Framework Tutorials) ist Zend Casts - Dynamisches Erstellen eines Menü eine Sitemap und Paniermehl .

4 Responses to "Route Anfragen für sitemap.xml, um benutzerdefinierte controller / action"

  1. Eine Sache habe ich vergessen zu erwähnen ist, dass Sie auch brauchen, um Ihre Standard-Route für Ihre XML-Sitemap angeben, da sonst alle URLs zu / sitemap.xml Punkt, wenn Sie Zend_Navigation_Page_Mvc (wenn Sie liefert URIs sind da nicht ein Problem sein Einsatz ).

    Zum Beispiel mein neuestes Projekt verwendet die folgenden Routing:

    ; ==============================
    ; Resource Routing
    ; ==============================
    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 = Index
    resources.router.routes.sitemap.defaults.action = sitemap

    Daher in meinem navigation.xml (oder was auch immer config Sie sich entscheiden), müssen Sie angeben, das Routing zu verwenden, zB

    default.pro.pages.aboutUs.label = "Firmenprofil"
    default.pro.pages.aboutUs.module = "www"
    default.pro.pages.aboutUs.controller = "about-us"
    default.pro.pages.aboutUs.action = "index"
    default.pro.pages.aboutUs.resource = "www_pages"
    default.pro.pages.aboutUs.route = "www-Index"

  2. [...] Eine Fortsetzung zu meinem letzten Post über Zend_Navigation, Route Anfragen für sitemap.xml, um benutzerdefinierte controller / action, dieser Post ist über dymnamically Hinzufügen von Seiten zu einer Zend_Navigation Container zur Laufzeit / script [...]

  3. Walter sagt:

    Ich habe ernsthafte Probleme, kann ich nicht lösen es: (

    Ich habe router.ini

    resources.router.routes.sitemap.type = "Zend_Controller_Router_Route"
    resources.router.routes.sitemap.route = "sitemap.xml"
    resources.router.routes.sitemap.defaults.controller = Index
    resources.router.routes.sitemap.defaults.action = sitemap

    und bootstrap.php

    geschützten Funktion _initRouter ()
    {
    $ FrontController = Zend_Controller_Front:: getInstance ();
    $ Config = new Zend_Config_Ini (APPLICATION_PATH "/ config / router.ini '.);
    $ Router = $ frontController-> getRouter ();
    $ Router-> AddConfig ($ config "Router");
    }

    und ich diese Fehlermeldung:

    Informationen zur Ausnahme:

    Message: Invalid controller specified (sitemap.xml)

    Request-Parameter:

    array (
    'Controller' => 'sitemap.xml',
    'Action' => 'index',
    'Modul' => 'Standard',
    )

    • Es scheint, dass er verpasst ein paar Einträge, aktualisieren Sie Ihre Routen zu entsprechen:

      resources.router.routes.sitemap.type = "Zend_Controller_Router_Route_Static"
      resources.router.routes.sitemap.route = "sitemap.xml"
      resources.router.routes.sitemap.controller = "index"
      resources.router.routes.sitemap.action = "Sitemap"
      resources.router.routes.sitemap.defaults.module = "www"
      resources.router.routes.sitemap.defaults.controller = "index"
      resources.router.routes.sitemap.defaults.action = "Sitemap"
      resources.router.routes.sitemap.defaults.route = "www-Index"

Lassen Sie eine Antwort













Panorama Thema von Themocracy

4 Besucher jetzt online
2 Gäste, 2 Bots, 0 Mitglieder
Max Besucher heute: 11 um 02:18 Uhr UTC
Diesen Monat: 22 am 2011.08.06 12.30 UTC
Dieses Jahr: 130 an 28-03-2011 10.40 UTC
Insgesamt: 130 an 28-03-2011 22.40 UTC