我在网上搜索了解决方案,但似乎无处可去。
我的页面 (php) 正在加载页面中的一个 url(比如说 www.mysite.com),可以完成几个关于音乐(专辑)的搜索选项并显示曲目。(不刷新页面)。信息来自数据库。所以网址保持不变。在这个搜索过程中,facebook 元标记(描述、url、标题)保持不变也是因为我从不重新加载页面,我只将内容加载到 div 中。
我希望能够“喜欢”这张专辑,并反向链接到它。所以我创建了使用 url 加载专辑的功能:www.mysite.com?album=12345 我可以显示一个带有这个 url 的弹出窗口来分享这个。所以,如果你去这个 url,内容是根据 url 参数自动加载的。
在这个地方(你可以看到带有参数 ?album=12345 的 url)我也想显示“喜欢”按钮。(我生成了 url,所以我在代码中使用它:)
echo '<div style="overflow:visable" class="fb-like" data-href="http://mysite.com/?album='.$albumid.'" data-send="false" data-width="300" data-show-faces="false">?</div>';
到目前为止它可以工作......(在我添加解析代码以启用按钮之后)但是,like 按钮采用默认的元标记描述和标题等。在这张专辑或艺术家上并不特别 - 所以它不是唯一的。
注意:如果我从标题中删除 meta[property=og:url],我可以使用 ?album 参数使按钮反向链接到正确的 url。否则它将返回到站点 mysite.com 的默认根目录(这确实会使 lint 工具在丢失的元数据上给出错误)
我试图添加到相同的功能中,例如:
$("meta[property=og\\:url]").attr("content", "http://mysite.com/?album=<?php echo $albumid; ?>");
$("meta[property=og\\:title]").attr("content", "<?php echo $artistname; ?>");
$("meta[property=og\\:description]").attr("content", "<?php echo $albumname; ?>");
我这样做是为了更改元标记,只是为了让点赞按钮显示正确的描述等。但这不起作用。我知道 facebook 会抓取页面(我使用了 lint 工具等),但我永远不会执行 javascript,因此元标记将保持默认(首次加载页面时)
我能做些什么来制作一个独特的类似按钮,它有自己的描述(专辑名等),而无需为每个按钮制作一个 html 页面(数据库中的数百万张专辑......)
我希望这是有道理的。
我似乎无法弄清楚这一点,请帮助:-)
根据以下评论,我使用了以下解决方案:
您应该在打开 url(使用参数 ?alb_id=12345)时创建正确的 fb 元标记。这足以让like按钮完成它的工作。