Bonjour,
Sur mes sites j'insère dynamiquement le contenu de la balise titre et l'attribut content de la balise description.
Je n'avais pas noté le probleme jusqu'a présent car ça marche, quand on se rend sur le site :
http://www.photos.lau-concept.com/
je vous laisse vérifier ça.
le controller crée une variable
(bon j'ai pas réellement de get_bdd() c'est juste pour illustrer)
$this->view->page_infos = this->model->get_page_infos($pagename);
donc j'insere ces chaines de caractères dans ma vue aux emplacements prévus
et ça marche.
<title><?= $this->page_infos->title; ?></title>
<meta name="description" content="<?= $this->page_infos->description; ?>">
SAUF :
Si on met ce lien vers mon site sur facebook on a droit a un gros :
(capture de partage facebook)
edit : grr j'ai testé mon SEO avec yakaferci et il trouve le même resultat que facebook : A savoir une grosse erreur, mais du coup j'ai trouvé :
le $_SERVER['HTTP_ACCEPT_LANGUAGE'] n'est pas reconnu et je m'en sers des le début. du coup ça fait foirer mes requetes et ma variable n'est pas correctement remplie.
Il faut vérifier que HTTP_ACCEPT_LANGUAGE
est bien défini dans $_SERVER
(comme l'a montré Flay0r un peu plus haut) et non de se contenter d'y mettre directement $_SERVER['HTTP_ACCEPT_LANGUAGE']
car dans le cas de facebook, il s'agit d'un robot qui examine ton site et ce robot n'a pas forcément d'en-tête http concernant le langage.
(curl http://www.photos.lau-concept.com/
on y verra toutes les erreurs aussi ;-))
Bonjour
L'erreur parle d'elle même
ça veut juste dire que :
<title><?= $this->page_infos->title; ?></title>
<meta name="description" content="<?= $this->page_infos->description; ?>">
N'est pas un objet
peux-tu me dire qu'elles sont les valeurs renvoyé de
<?php
var_dump($this->page_infos);
?>
Si page_infos est bien un objet, le truc c'est que lorsque l'on se rend soit même sur la page , il n'y a aucun souci.
en revanche en partageant ce lien via facebook, ou en utilisant yakaferci par exemple, on se retrouve avec ce probleme. D'apres ce que j'ai identifié cela vient du fait que j'ai une requete qui dit select title_fr ou select title_en en fonction de ce que renvoi $_SERVER['HTTP_ACCEPT_LANGUAGE']
$langue = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$langue = strtolower(substr(chop($langue[0]),0,2));
$title = 'title_'.$langue;
$desc = 'description_'.$langue;
$request = "SELECT $title as title, $desc as description FROM etc..."
Du coup si pour une raison ou une autre $_SERVER['HTTP_ACCEPT_LANGUAGE'] n'existe pas, ça fait que mon objet non plus d'où l'erreur.
Au final j'ai contouné ça en forçant $langue = 'fr'...
Tu as quel version de PHP ?
Sinon tu peux faire ceci :
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
$langue = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
else
$langue = 'fr';
tiens j'étais persuadé d'avoir répondu, oui ça fonctionne bien sur mais ce n'est pas tout à fait une solution, c'est juste un sparadrap, mais ça ira pour l'instant. merci pour ton aide :)
;)
Mais pour ton soucis de variable qui n'existe pas ça m'intrique .... tu as un serveur dédié ou hébergement mutualisé ?
mutualisé. d'ailleurs voici le message d'erreur :
Notice : Undefined index: HTTP_ACCEPT_LANGUAGE in /homepages/36/d569545754/htdocs/photos/system/libs/Conf.core.php on line 81 Notice : Undefined index: HTTP_ACCEPT_LANGUAGE in /homepages/36/d569545754/htdocs/photos/system/libs/Conf.core.php on line 81 Warning : PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 't.contents_' in 'field list' in
sachant que 't.contents_' a la fin devrait valoir : t.contents_fr (ou en) du coup forcément ma requete est fausse donc mes variables ne sont pas remplies d'où l'erreur à mon premier post.
Ce qui est marrant c'est que si on va directement sur mon site et qu'on vérifie dans <head> mes balises title et meta description, ça fonctionne. c'est uniquement avec ces outils de seo (génial pour le référencement hein ?) et facebook
Dans ce cas la je te conseille fortement de contacter le support de ton hébergeur ils pourront arranger ton problème :)
merci à vous deux pour vos réponses, je connaissais pas curl, c'est au poil ! je l'ai ajouté dans ma class Conf du coup :)
et je ne pensais pas que les robots ne s'encombrait pas de l'en-tête,du coup ça répond à ma question bref, j'ai déjà fait comme vous dites, et je passe en résolu :)