【发布时间】: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