Partage d'articles dynamiques sur Facebook

Petit nouveau ! | 2 Messages

24 janv. 2021, 16:24

Bonjour,

Je suis le webmaster d'un site d'actualité sur la Formule 1. Les articles sont stockés dans la base de données et je donne la possibilité de les partager sur les réseaux sociaux. Je remarque que pour le partage sur Facebook, c'est parfois l'image de l'article précédent qui s'affiche pour le partage.

Je vous affiche ici le code de ma page affichant un article:

Code : Tout sélectionner

<?php $titre = $_GET['titre']; $noarticle = $_GET['id']; // récupération des données de table 'newsjour' $req = $bdd->prepare('SELECT sa.id_article,sa.date,sa.chapo,sa.titre,sa.texte,sau.nom FROM spip_articles sa, spip_auteurs_liens saa, spip_auteurs sau WHERE sa.id_article=saa.id_objet and saa.id_auteur=sau.id_auteur and sa.id_article=? and sa.statut=\'publie\''); //parcours de données de la table $req->execute(array($noarticle)); while ($donnees = $req->fetch()) { $pos = strpos($donnees['date'], ' '); $datejour = substr($donnees['date'], 0, $pos); $fin = $pos+5; $heure = substr($donnees['date'], $pos, -3); $datenews = datedujour($datejour, "1"); $idarticle=$donnees['id_article']; $description_page = substr($donnees['texte'], 0, 75).'...'; $ptspace = array("."," "); $ptspace2 = array("","");?> <h4><?php $image_article = $donnees['chapo']; $titre_page = $donnees['titre']; echo $titre_page; ?></h4><br /> <i>Post&eacute; le <?php echo $datenews; ?> - <?php echo $heure; ?> par <?php echo $donnees['nom']; ?></i><br /><br /> <img src="<?php echo $donnees['chapo']; ?>" srcset="<?php echo $donnees['chapo']; ?> 300w, <?php echo $donnees['chapo']; ?> 500w" sizes="35vw" class="imgnews" alt="<?php echo $donnees['chapo']; ?>" /> <?php if ($idarticle>2149) { $texte=str_replace($spip,$spip1,$donnees['texte']); echo nl2br($texte); } else echo $donnees['texte']; ?> <?php } ?>
Mes variables $titre_page et $description_page récupèrent le titre de l'article et les premières phrases de l'article.
Je me suis renseigné pour faire pareil avec l'image et voici ce que j'ai trouvé:

La propriété og :image doit être spécifiée de manière explicite, même si une valeur peut être déduite à partir d’autres balises.

Dès lors, je sauvegarde l'url de mon image dans la variable $image_article.

Je teste et aucun effet. En debuggant, je me rends compte que la variable reste vide. Pourtant, j'ai bien une image qui s'affiche sur chaque article. Voici l'article en question que je veux partager : http://www.superf1.be/news-Un-retour-au ... _4828.html

Juste pour info, je récupère mes variables dans mon footer de cette manière:

Code : Tout sélectionner

<?php // récupération des données de table 'newsjour' $req = $bdd->prepare('SELECT chapo FROM spip_articles WHERE statut=\'publie\' ORDER BY id_article DESC LIMIT 1'); //parcours de données de la table $req->execute(array($noarticle)); while ($donnees = $req->fetch()) { $image=$donnees['chapo']; } ?> <head> <title><?php echo isset($titre_page) ? $titre_page : "Formule 1 - Super F1: Toute l''actu, les résultats et classements de la F1!" ?></title> <meta name="description" content="<?php echo isset($description_page) ? $description_page : "Tout sur la Formule 1: Actualité, Résultats, Photos, Statistiques et Classements depuis 1997!" ?>" /> <meta property="og:image" content="<?php echo isset($image_article) ? $image_article : $image; ?>" /> </head>
Il n'y a rien qui part dans og:image. Même ma requête pour donner une valeur par défaut, qui donne bien un résultat dans phpmyadmin.

Avez-vous une idée d'où vient le problème?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 janv. 2021, 14:47

Bonjour,

Fais un var_dump() de $image_article et de $image à l'endroit où tu veux les afficher pour voir ce qu'ils contiennent, ça devrait t'aider dans ton debugage
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 2 Messages

27 janv. 2021, 15:07

ok, j'avais fait un echo qui ne donnait rien, je vais essayer avec var_dump

Code : Tout sélectionner

var_dump($image_article,$image);
Ceci donne:
NULL string(55) "
http://www.superf1.be/spip/IMG/jpg/buttonwilliams-2.jpg
"

Si je comprends bien $image contient la valeur dont j'ai besoin mais mon isset() ne la prend pas en compte?