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.
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.
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>
:
<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>