Bonsoir les amis,
je souhaiterai changer la balise <meta description> et <meta keyword> en fonction de l'article.
Pour cela dans le layout il y a le code suivant :

<?php 
echo $this->fetch('meta');
echo $this->fetch('css');
echo $this->fetch('script');around  ?>

et dans la vue associée à l'article je fais ceci:

<?php 
echo $this->Html->meta('keywords', 'enter any meta keyword here');?>
<?php echo $this->Html->meta( 'description', 'enter any meta description here');?>

ça ne passe pas, vous avez une idée de l'utilisation de fetch?

Merci d'avance!!!

4 réponses


Romano83
Réponse acceptée

Salut,
si tu veux avoir les meta qui changent en fonction de tes vues, il faut que tu entoure ton deuxième bout de code par :

<?php 
$this->start('meta', array('inline' => false));
    echo $this->Html->meta('keywords', 'enter any meta keyword here');
    echo $this->Html->meta( 'description', 'enter any meta description here');
$this->end();  
?>

Ceci te permet de créer un block de vue.

Wa3aR
Réponse acceptée

Tu dois juste ajouter comme options un inline a false. En gros tu specifies à Cake de ne pas écrire ta balise meta suivant l'ordre d'apparition mais de la rattacher au fetch meta que tu mets plus haut. Dans ta vue donc :

<?php $this->Html->html("keywords", "tes keywords", array("inline" => false")); ?> 

Ca marche de la même manière avec du css ou du javascript. Je te conseille de lire la partie du book qui traite du sujet : http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html

Sean78
Auteur

Merci de votre aide!!!!
Ca nécessitera peut-être un autre billet mais quel code cakephp pour : link rel="canonical" href="www.site.com,
J'ai essayé ceci :
echo $this->Html->meta('Site','http://www.site.com', array('type' => 'html','rel'=>'canonical'));
Merci beaucoup!!!

Le code que tu mets sert à générer une balise meta et non pas un lien !

$this->Html->link("Site", "http://www.site.com", array("rel" => "canonical"));