Bon, je ne vais pas vous cacher l’importance d’être bien classé et enregistré par nos chers amis les moteurs de recherche… A moins d’avoir un site destiné uniquement à une communauté restreinte ou connaissant l’existence du site, 99.5% des sites ont besoins d’indiquer clairement aux moteurs de recherche certaines informations.
En consultant les quelques méthodes cités dans ce post : seo-le-referencement-web vous pouvez consulter ce que les moteurs de recherche savent de votre page.
Créer un helper CakePHP
CakePHP permet au développeur de créer des helpers. Ces helpers sont là pour aider (hé oui je suis bilingue!). Ils apportent des fonctionnalités supplémentaires disponibles dans le vues (view) de CakePHP.
Si vous êtes un peu curieux, vous pouvez aller voir dans le répertoire de cake : /cake/libs/view/helpers/*.php. Ce sont les helpers par défaut de CakePHP (au nombre de 18). ils vous donneront une idée plus précise de la structure et vous y retrouverai toutes les fonctions de base disponible dans les vues.
Bon après ce petit détour fort sympatique, nous allons créer notre helper. Je vais l’appeler “Seo”… Original non ? Bon créer un nouveau fichier dans le répertoire suivant : /votre_projet/app/view/helpers et renommé le en SeoHelper.php. Voici le contenu de base:
<?php
/**
* Seo helper
* @desc Helper CakePHP pour fa
*/
class SeoHelper extends Helper {
/**
* Méthode générique qui retourne la valeur SEO si existante
*/
function seoGetValue($seo, $index, $string) {
return (isset($seo[$index])) $seo[$index] : $string;
}
/**
* Retourne le titre SEO de la page (si existant)
*/
function seoTitle($seo = array(), $string = "") {
return seoGetValue($seo, 'exp_cle_title', $title);
}
/**
* Retourne le footer SEO de la page (si existant)
*/
function seoMetaDescription($seo = array(), $string = "") {
return seoGetValue($seo, 'exp_cle_description', $title);
}
/**
* Retourne les keywords SEO de la page (si existant)
*/
function seoKeyword($seo = array(), $string = "") {
return seoGetValue($seo, 'exp_cle_keywords', $title);
}
/**
* Retourne le titre H1 SEO de la page (si existant)
*/
function seoH1($seo = array(), $string = "") {
return seoGetValue($seo, 'exp_cle_1', $title);
}
/**
* Retourne le footer link (bloc de lien) SEO de la page (si existant)
*/
function seoFooterLink($seo = array(), $string = "") {
return seoGetValue($seo, 'exp_cle_footer_link', $title);
}
/**
* Retourne le footer SEO de la page (si existant)
*/
function seoFooter($seo = array(), $string = "") {
return seoGetValue($seo, 'exp_cle_footer', $title);
}
}
?>
Le helper fraîchement créé doit être appelé dans le fichier /app/app_controller.php à l’aide de la variable : var $helpers = array([...], ‘Seo’);
Implémenter dans les vues
Il faut maintenant utiliser ces méthodes dans les vues correspondantes.
app/view/layout/default.ctp (par exemple) pour récupérer le titre de la page, sa description, le footer ou le footer link.
app/view/xxxx/xxx.ctp pour les autres fonctions
Pour appeler les méthodes rien de plus simple. Je vais vous montrer l’exemple de la balisede la page afin de donner un nom au document HTML. Voici le code à écrire :
<!-- Du code --> <title><?php echo seoTitle($seo, 'Le titre par défaut de mon action') ?></title> <!-- Du code -->
De la même façon pour les autres :
<?php echo $html->meta('description', seoMetaDescription($seo, 'La description par défaut de mon action'), array('type' => 'description'), false); ?>
<?php echo $html->meta('keywords', seoKeyword($seo, 'La description par défaut de mon action'), array('type' => 'keywords'), false); ?>
<h1><?php echo seoH1($seo, 'Le titre H1 par défaut de mon action') ?></h1>
<!-- etc ... -->
Assigner la variable $seo depuis les actions
Pour que cela fonctionne, il faut évidemment que la variable $seo (un tableau) soit renseigné quelque part… Et bien c’est dans l’action que nous allons définir cela.
Prenons par exemple la page de profil d’un utilisateur. Nous avons donc un contrôleur “utilisateur” et une action “profil”. Dans cette action nous allons initialiser cette variable $seo, soit avec des valeurs venant de la base de données, soit écrite en dur, soit calculés par un algorithme SEO. Nous allons le faire de la façon suivante :
<?php
// app/controllers/utilisateur_controller.php
function profil($id) {
// Du code :D
$seo = array(
'exp_cle_title' => 'Le titre SEO de mon action',
'exp_cle_description' => 'La description de mon action ...'
);
$this->set('seo', $seo);
}
J’ai volontairement mis uniquement des valeurs pour le titre et la description de la page.
Résultat
Quand vous serait sur votre site web : http://monsite.com/utilisateur/profil/ID_PROFIL, vous verrez les valeurs SEO en priorité, surchargeant les valeurs par défauts définies dans vos vues.
Allez plus loin
Bon et vous allez me dire OK mais peu mieux faire. D’accord ! Promis ! J’vous jure!!!!! Dans un prochain article.
J’expliquerai comment intégrer à ces données SEO les urls afin d’avoir de belles routes et tous ça administrable.
Bon dév’ ![]()









