Créer framework PHP : Métadonnées (SEO)

Le SEO est crucial dans l'éllaboration de la plupart des sites web. Ajoutons dynamiquement pour chacune de nos pages un titre et une description.

Icône de calendrier MAJ en
Avancé
10 chapitres

Côté contrôleur

S’il y a bien un endroit où des données dynamiques sont transmises aux templates, c’est dans les contrôleurs.

En ce sens, nous allons ajouter dans le tableau de données de la fonction render(), une clé nommée seo, contenant le titre ainsi que la méta-description de la page.

ArticleController.php
copié !
namespace App\Controller;

use App\Manager\ArticleManager;
use Plugo\Controller\AbstractController;

class ArticleController extends AbstractController {

	public function index()	{
		$articleManager = new ArticleManager();
		return $this->renderView('article/index.php', [
			'articles' => $articleManager->findAll(),
			'seo' => [
				'title' => 'Le blog',
				'description' => 'Découvrez de nombreux articles 100% tech sur notre blog !'
			]
		]);
	}

	// ...
	
}

Côté layout

title et description étant transmis via l’objet $data, il est possible d’en faire usage depuis le layout du site web avec $data['seo'].

Mettons à jour le layout en ajoutant l’extrait de PHP/HTML suivant dans le <head> :

layout.php
copié !
<head>
	<!-- ... -->
	<title>
		<?php if (isset($data['seo']['title'])) echo $data['seo']['title'] . ' - '; ?>
		Plugo
	</title>
	<?php if (isset($data['seo']['description'])) { ?>
		<meta name="description" content="<?= $data['seo']['description'] ?>">
	<?php } ?>
</head>