2017-10-18 5 views
0

Je suis conscient que cette question est souvent soulevée, mais je n'ai pas encore réussi à résoudre mon problème.Comment mettre à jour les balises META dynamiquement

J'ai un site Web conduit par php qui contient des vidéos. Les différentes vidéos ont leur propre URL, comme index.php? Id = 1. Pour le partage sur Facebook, je souhaite que chaque vidéo/URL contienne des balises META mises à jour.

Les informations pour chaque vidéo (titre, description, etc.) sont stockées dans une base de données et je récupère avec succès cette information sur mon site.

Voici le script qui passe une variable de Javascript vers PHP:

<script> 
     var video; 
     var URL = document.location; 

     function setVideo(src){ 
      video = src; 

      $(document).ready(function(){ 
        $.ajax({ 
         url: URL, 
         type: 'GET', 
         data: { 
          videoPHP: video,  
          }, 
         success: function(data) { 
          // This prints the php result to html 
          $('#headerFromFile').html(data) 
         } 
        }); 
      }); 
     } 
</script> 

Et voici le PHP:

if (isset($_GET['videoPHP'])) { 

    $videoID = $_GET['videoPHP']; 

    // SQL query 
    $sql = "SELECT * FROM Videos WHERE ID='$videoID'"; 
    $result = $connect->query($sql); 
    $row = $result->fetch_assoc(); 
    ?> 

    <h1><?php echo $row['Header'];?></h1> 
    <p><?php echo $row['Description'];?></p> 
<?php 

En faisant cela, je suis en mesure de faire écho l'en-tête et la description pour la vidéo à la div #headerFromFile dans mon document html.

Le problème, cependant, est que je voudrais avoir ces informations stockées à la propriété méta = « og: titre » et propriété meta = « og: description » de l'URL actuelle.

Toute aide est fortement appréciée.

+0

double possible de [Modification de méta-tags dynamiques avec jQuery] (https://stackoverflow.com/questions/7308970/changing-meta-tags-dynamic-with-jquery) –

+0

Votre _serveur_ doit renvoyer le document HTML avec les méta-données correctes, quand 'index.php? id = 1' est demandé. Vous ne pouvez pas définir les méta-tags OG en utilisant le code côté client, le grattoir Facebook ne s'en soucie pas. Vous voulez fondamentalement enlever complètement la partie AJAX ici, et déplacer le code PHP dans le 'chef', et lui faire des métatags de sortie là. – CBroe

+0

Fantastique. Cela a fait l'affaire. Je me suis débarrassé de l'ajax, et déplacé la section php dans la section tête du code HTML. De là, je pourrais répercuter les variables PHP directement dans les balises META. Merci beaucoup! –

Répondre

0

La balise meta est écrite dans le dom avant l'exécution de votre ajax. Je suggère que vous obteniez le bout de données de la DB avant que la page se charge et placez des variables dans votre étiquette de méta.

Cependant, si je comprends bien, votre contenu peut changer après le chargement de dom et lors de la publication sur facebook, les anciennes métadonnées sont lues. Je ne; sais pas si cela vous aidera parce que Facebook pourrait ne pas obtenir la balise meta mise à jour soit, mais essayez de changer la ot méta comme si tage ...

$('meta[name=description]').remove(); 
$('head').append("<meta name='description' content='Video Title'>"); 
+0

facebook ne fonctionne pas en javascript, donc changer les metatags avec javascript est inutile. – luschn