S'initier au Zend Framework/Mini blog/URL

Zend Framework
Programmation PHP / Zend Framework
Programmation PHP / Zend Framework
Sommaire
Modifier ce modèle


Réécriture d'URL, SEO, Zend_Router. modifier

Actuellement l'URI de lecture d'une nouvelle est en anglais et a des paramètres numériques :

index/read/id/1

Ceci a deux inconvénients, un moteur de recherche va par exemple mal indexer nos articles pour des recherches en français. L'utilisation d'id numériques est pratique mais n'a aucune valeur pour l'indexation. Les sites avec un rang d'indexation élevé ont des URI explicites comme :

index/fr/article/L'automne-est-de-retour

La première étape est de tester une redirection d'URL plus simple comme :

index/read/id/714 vers : nouvelle/714

Dans le Bootstrap il suffira d'ajouter (ou dans Initializer.php : initRoutes() ) :

    	$routeur= $this->_front->getRouter();
    	$routeur->addRoute( 'nouvelle',
    		new Zend_Controller_Router_Route('nouvelle/:id',
            	 	  array(	'controller'	=> 'index',
                          	'action'	 	=> 'read' ) )
	);


Avec $this->_front l'instance du Zend_Controller_Front. Qui est normalement déjà disponible si l'on a créé un projet ZF avec un EDI, sinon il faut rajouter :

$this->_front = Zend_Controller_Front::getInstance();

La nouvelle route étant créé nous pouvons modifier la vue de l'index pour rajouter un lien vers une nouvelle lorsque l'on clique sur le titre. Dans le nœud tbody de la vue 'application/default/views/scripts/index/index.phtml' :

<tbody>
<?php foreach ( $this->nouvelles as $nouvelle ) : ?>
<tr><?php foreach ( $nouvelle->toArray () as $col ) : ?>
<td><a href="<?php echo $this->url( array('id' => $nouvelle->id), 'nouvelle' ) ?>"><?php echo $col; ?></a></td>

L'aide de vue (View Helper) Url() construit automatiquement l'URL réécrite, on peut ainsi changer ad nauseam.

La deuxième étape est de modifier cette route pour y intégrer le titre de la nouvelle. Le titre de la nouvelle est une phrase, il nous faut détecter cette phrase à l'aide de l'expression régulière.