SEO pour les News.

Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
#1
Article involontairement proche de celui de JLC : http://www.cmsmadesimple.fr/forum/viewto...d=1457&p=1


Objectif.
CMSMS est performant pour le référencement des pages, mais en ce qui concerne les articles, étant donné qu'ils sont tous affichés sur la même page (paramètre detailpage), ils ont tous la même balise title et les même balises meta.

Nous allons voir ici comment personnaliser la balise title et meta description pour les news.

Comment ça marche.

Nous allons ajouter un champ supplémentaire à la news et y saisir la description.
On peut soit utiliser le champ extra déjà présent ou bien en ajouter un nouveau avec "Définition des champs".

Nous allons utiliser le titre de la news comme <title> de page.
Si vous ne voulez pas que la balise "title" reprenne le titre de votre news, opérez comme pour la description: ajoutez un champ.

Dans notre exemple, nous nous contenterons de reprendre le titre saisi dans la news pour le reporter dans la balise <title> et utiliser le champ 'extra'.

Comment faut-il faire :

Nous devrons modifier le gabarit du détail d'article et le gabarit de la page.

Dans le gabarit du détail d'article, nous allons ajouter au tout début :
Code :
{assign var='newspagetitle' value=$entry->title}
{assign var='newsmetadesc' value=$entry->extra}

Il faudra supprimer toute référence éventuelle à $entry->extra plus loin dans le gabarit pour éviter un affichage intempestif Wink

Dans le gabarit de page, nous allons tester la présence de ces variables et agir en conséquence.
Pour la balise <title> :
Code :
<title>{if !empty($newspagetitle)}{$newspagetitle|strip_tags}{else}{title}{/if} - {sitename}</title>

Pour la balise meta description :
Code :
{if !empty($newsmetadesc)}<meta name="description" content="{newsmetadesc|strip_tags}" />{/if}

A condition bien sûr de n'avoir pas mis de balise description dans les options de la page qui réceptionne les news.
Sinon, cela fera doublon et aura un effet négatif sur le SEO.

Voilà, vous pouvez appliquer cette technique pour les mots-clé


Astuce : si vous utilisez le champ extra, il est intéressant de pouvoir modifier son libellé. "extra" n'indique en rien la destination du champ.
Pour ce faire, il faut créer à la racine le dossier 'module_custom' puis à l'intérieur 'News' dans lequel on créer un dossier 'lang'.
Nous obtenons donc : module_custom/News/lang
Cela doit vous rappeler quelque chose?
Le dossier lang contient les fichiers de traduction.
Ensuite, créez autant de fichiers de traduction que nécessaire, chaque variable traduite viendra remplacer celle du module d'origine.
Nous avons créer un dossier News du même nom que le module installé, donc, le système va le détecter et prendre en priorité les variables contenue dans les fichiers de traduction.

Dans l'exemple, nous allons créer le fichier fr_FR.php et y copier le contenu de son équivalent issu du module News.
On obtient alors:
Code :
<?php

$lang['info_detail_returnid'] = 'Cette pr&eacute;f&eacute;rence est utilis&eacute;e pour d&eacute;termin&eacute;e si une page (et donc un gabarit) sert pour l'affichage des pages de d&eacute;tails. Les URLs individualis&eacute;es ne fonctionneront pas si ce param&egrave;tre n'est pas d&eacute;fini pour une page valide. En outre, si cette pr&eacute;f&eacute;rence est activ&eacute;e, et aucun param&egrave;tre page de d&eacute;tail n'est fourni sur la balise {news}, alors cette valeur sera utilis&eacute;e pour des liens pages de d&eacute;tails';

$lang['title_detail_returnid'] = 'Page par d&eacute;faut &agrave; utiliser pour des vues de d&eacute;tail';

$lang['title_submission_settings'] = 'Param&egrave;tres de soumission des articles (News)';

$lang['title_fesubmit_settings'] = 'Param&egrave;tres de soumission via le Frontend';

$lang['title_notification_settings'] = 'Param&egrave;tres des notifications';

$lang['title_detail_settings'] = 'Param&eacute;tres d'affichage des d&eacute;tails';

$lang['error_invalidurl'] = 'URL incorrecte <em>(peut-&ecirc;tre d&eacute;j&agrave; utilis&eacute;e, ou il y a des caract&egrave;res non valides)</em>';

$lang['url'] = 'URL ';

$lang['expired_searchable'] = 'Les articles expir&eacute;s peuvent appara&icirc;tre dans les r&eacute;sultats de recherche&nbsp;';

$lang['helpshowall'] = 'Si positionn&eacute; &agrave; 1 : affiche tous les articles, quelle que soit la date de fin';

$lang['error_invaliddates'] = 'Une ou plusieurs dates entr&eacute;es sont invalides';

$lang['notify_n_draft_items_sub'] = '%d article(s)';

$lang['notify_n_draft_items'] = 'Vous avez %s article(s) non publi&eacute;(s)';

$lang['unlimited'] = 'Sans limite';
$lang['none'] = 'Aucun';

etc...
?>
La variable qui nous occupe dans cet exemple est $lang['extra'] = 'extra ';
Comme c'est la seule, nous supprimerons les autres, c'est préférable en cas de mise à jour, pour modifier celle-ci:
$lang['extra'] = 'Meta description ';
Et voilà, on sauvegarde le fichier fr_FR.php et le libellé dans l'admin de création des news est plus clair.
{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
Répondre
#1
Article involontairement proche de celui de JLC : http://www.cmsmadesimple.fr/forum/viewto...d=1457&p=1


Objectif.
CMSMS est performant pour le référencement des pages, mais en ce qui concerne les articles, étant donné qu'ils sont tous affichés sur la même page (paramètre detailpage), ils ont tous la même balise title et les même balises meta.

Nous allons voir ici comment personnaliser la balise title et meta description pour les news.

Comment ça marche.

Nous allons ajouter un champ supplémentaire à la news et y saisir la description.
On peut soit utiliser le champ extra déjà présent ou bien en ajouter un nouveau avec "Définition des champs".

Nous allons utiliser le titre de la news comme <title> de page.
Si vous ne voulez pas que la balise "title" reprenne le titre de votre news, opérez comme pour la description: ajoutez un champ.

Dans notre exemple, nous nous contenterons de reprendre le titre saisi dans la news pour le reporter dans la balise <title> et utiliser le champ 'extra'.

Comment faut-il faire :

Nous devrons modifier le gabarit du détail d'article et le gabarit de la page.

Dans le gabarit du détail d'article, nous allons ajouter au tout début :
Code :
{assign var='newspagetitle' value=$entry->title}
{assign var='newsmetadesc' value=$entry->extra}

Il faudra supprimer toute référence éventuelle à $entry->extra plus loin dans le gabarit pour éviter un affichage intempestif Wink

Dans le gabarit de page, nous allons tester la présence de ces variables et agir en conséquence.
Pour la balise <title> :
Code :
<title>{if !empty($newspagetitle)}{$newspagetitle|strip_tags}{else}{title}{/if} - {sitename}</title>

Pour la balise meta description :
Code :
{if !empty($newsmetadesc)}<meta name="description" content="{newsmetadesc|strip_tags}" />{/if}

A condition bien sûr de n'avoir pas mis de balise description dans les options de la page qui réceptionne les news.
Sinon, cela fera doublon et aura un effet négatif sur le SEO.

Voilà, vous pouvez appliquer cette technique pour les mots-clé


Astuce : si vous utilisez le champ extra, il est intéressant de pouvoir modifier son libellé. "extra" n'indique en rien la destination du champ.
Pour ce faire, il faut créer à la racine le dossier 'module_custom' puis à l'intérieur 'News' dans lequel on créer un dossier 'lang'.
Nous obtenons donc : module_custom/News/lang
Cela doit vous rappeler quelque chose?
Le dossier lang contient les fichiers de traduction.
Ensuite, créez autant de fichiers de traduction que nécessaire, chaque variable traduite viendra remplacer celle du module d'origine.
Nous avons créer un dossier News du même nom que le module installé, donc, le système va le détecter et prendre en priorité les variables contenue dans les fichiers de traduction.

Dans l'exemple, nous allons créer le fichier fr_FR.php et y copier le contenu de son équivalent issu du module News.
On obtient alors:
Code :
<?php

$lang['info_detail_returnid'] = 'Cette pr&eacute;f&eacute;rence est utilis&eacute;e pour d&eacute;termin&eacute;e si une page (et donc un gabarit) sert pour l'affichage des pages de d&eacute;tails. Les URLs individualis&eacute;es ne fonctionneront pas si ce param&egrave;tre n'est pas d&eacute;fini pour une page valide. En outre, si cette pr&eacute;f&eacute;rence est activ&eacute;e, et aucun param&egrave;tre page de d&eacute;tail n'est fourni sur la balise {news}, alors cette valeur sera utilis&eacute;e pour des liens pages de d&eacute;tails';

$lang['title_detail_returnid'] = 'Page par d&eacute;faut &agrave; utiliser pour des vues de d&eacute;tail';

$lang['title_submission_settings'] = 'Param&egrave;tres de soumission des articles (News)';

$lang['title_fesubmit_settings'] = 'Param&egrave;tres de soumission via le Frontend';

$lang['title_notification_settings'] = 'Param&egrave;tres des notifications';

$lang['title_detail_settings'] = 'Param&eacute;tres d'affichage des d&eacute;tails';

$lang['error_invalidurl'] = 'URL incorrecte <em>(peut-&ecirc;tre d&eacute;j&agrave; utilis&eacute;e, ou il y a des caract&egrave;res non valides)</em>';

$lang['url'] = 'URL ';

$lang['expired_searchable'] = 'Les articles expir&eacute;s peuvent appara&icirc;tre dans les r&eacute;sultats de recherche&nbsp;';

$lang['helpshowall'] = 'Si positionn&eacute; &agrave; 1 : affiche tous les articles, quelle que soit la date de fin';

$lang['error_invaliddates'] = 'Une ou plusieurs dates entr&eacute;es sont invalides';

$lang['notify_n_draft_items_sub'] = '%d article(s)';

$lang['notify_n_draft_items'] = 'Vous avez %s article(s) non publi&eacute;(s)';

$lang['unlimited'] = 'Sans limite';
$lang['none'] = 'Aucun';

etc...
?>
La variable qui nous occupe dans cet exemple est $lang['extra'] = 'extra ';
Comme c'est la seule, nous supprimerons les autres, c'est préférable en cas de mise à jour, pour modifier celle-ci:
$lang['extra'] = 'Meta description ';
Et voilà, on sauvegarde le fichier fr_FR.php et le libellé dans l'admin de création des news est plus clair.
{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
Répondre
#2
Merci pour ton tuto Smile
Pour la meta description, j'utilise plutôt ce code :
Dans le gabarit détail des news :
Code :
{if isset($entry->summary)}
{capture assign='descriptionNews'}{eval var=$entry->summary}{/capture}
{/if}
Et dans les paramètres globaux j'ajoute :
Code :
{if !empty($descriptionNews)}
<meta name="description" content="{$descriptionNews|strip_tags|strip|replace:'"':''|truncate:150}" />{/if}
Bien entendu, il faut un contenu dans le sommaire des news... mais comme le rédacteur devrait en mettre dans extra.

Autrement, s'il n'y a pas de sommaire, vous pouvez ajouter dans le gabarit détail des news
Code :
{if isset($entry->summary)}
{capture assign='descriptionNews'}{eval var=$entry->summary}{/capture}
{else}{capture assign='descriptionNews'}{eval var=$entry->content}{/capture}
{/if}
Ce qui prendra les 150 premiers caractères du contenu de la news.
Répondre
#2
Merci pour ton tuto Smile
Pour la meta description, j'utilise plutôt ce code :
Dans le gabarit détail des news :
Code :
{if isset($entry->summary)}
{capture assign='descriptionNews'}{eval var=$entry->summary}{/capture}
{/if}
Et dans les paramètres globaux j'ajoute :
Code :
{if !empty($descriptionNews)}
<meta name="description" content="{$descriptionNews|strip_tags|strip|replace:'"':''|truncate:150}" />{/if}
Bien entendu, il faut un contenu dans le sommaire des news... mais comme le rédacteur devrait en mettre dans extra.

Autrement, s'il n'y a pas de sommaire, vous pouvez ajouter dans le gabarit détail des news
Code :
{if isset($entry->summary)}
{capture assign='descriptionNews'}{eval var=$entry->summary}{/capture}
{else}{capture assign='descriptionNews'}{eval var=$entry->content}{/capture}
{/if}
Ce qui prendra les 150 premiers caractères du contenu de la news.
Répondre
#3
Lorsque vous utilisez {eval var=$entry->summary} ou {eval var=$entry->content} pour insérer automatiqument une metadonnée, il se peut que l'auteur ai inséré des guillemets (je viens d'avoir le cas).
Vous devez donc toujours ajouter le modificateur smarty : |replace:'"':'' sans quoi votre meta se plantera.
Et, bien sûr, entourez la meta par des doubles quotes Wink
Répondre
#3
Lorsque vous utilisez {eval var=$entry->summary} ou {eval var=$entry->content} pour insérer automatiqument une metadonnée, il se peut que l'auteur ai inséré des guillemets (je viens d'avoir le cas).
Vous devez donc toujours ajouter le modificateur smarty : |replace:'"':'' sans quoi votre meta se plantera.
Et, bien sûr, entourez la meta par des doubles quotes Wink
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)