【问题标题】:How to update meta tags dynamically如何动态更新元标记
【发布时间】:2018-03-30 04:49:51
【问题描述】:

我知道这个问题经常出现,但我还没有解决我的问题。

我有一个由 php 驱动的网站,其中包含视频。不同的视频有自己的 URL,例如 index.php?id=1。对于 facebook 分享,我希望每个视频/URL 都有更新的元标记。

每个视频的信息(标题、描述等)都存储在数据库中,我正在成功地将这些信息检索到我的网站。

这是将变量从 javascript 传递到 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>

这里是 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

通过这样做,我可以将视频的标题和描述回显到我的 html 文档中的 div #headerFromFile

但是,问题是我希望将此信息存储到 meta property="og:title"meta property="og:description" 的当前 URL。

非常感谢任何帮助。

【问题讨论】:

  • 您的 服务器 需要在请求 index.php?id=1 时返回带有正确元数据的 HTML 文档。您不能使用客户端代码设置 OG 元标记,Facebook 抓取工具不关心这一点。你基本上是想把这里的 AJAX 部分完全废弃,把 PHP 代码移到head 中,并在那里输出元标记。
  • 太棒了。那成功了。我摆脱了 ajax,并将 php 部分移动到 html 的 head 部分。从那里我可以将 php 变量直接回显到元标记中。谢谢!

标签: javascript php facebook meta


【解决方案1】:

meta 标签在你的 ajax 运行之前被写入 dom。我建议您在页面加载之前获取数据库的数据并将变量放入元标记中。

但是,如果我理解正确,您的内容可能会在 dom 加载后发生变化,并且在发布到 facebook 时会读取旧的元数据。我不知道这是否会有所帮助,因为 Facebook 可能也无法获取更新的元标记,但尝试像这样更改元标记...

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

【讨论】:

  • facebook 不运行 javascript,因此用 javascript 更改元标记是没有意义的。
猜你喜欢
  • 2010-12-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2019-05-21
  • 2020-01-04
  • 2017-07-03
  • 2011-11-10
  • 2011-10-09
相关资源
最近更新 更多