【问题标题】:Replace [URL] and [TITLE] with current url and title将 [URL] 和 [TITLE] 替换为当前 url 和标题
【发布时间】:2015-10-09 03:34:44
【问题描述】:

我在每一页的顶部都有我的 mata 标签:

<meta property="url" content="http://stackoverflow.com" />
<meta property="title" content="MY PAGE" />

我有多个社交媒体 svg,我想链接到当前的 url 和标题。我对它们有正确的查询,但我想动态添加 url 和标题。所以 Facebook 看起来像:

<a href="http://www.facebook.com/sharer/sharer.php?u=[URL]&title=[TITLE]"><img src="images/logo/facebook.svg"></a>

我认为这可以通过 Javascript/PHP 完成,但最好的方法是什么?

【问题讨论】:

  • 元标签是如何呈现的?您是否将它们写入静态 HTML 文件?是 PHP 生成的吗?

标签: javascript php html svg


【解决方案1】:

你是对的,这可以用 PHP 或 JavaScript 来完成。

PHP 方法

在 PHP 中执行此操作的一种方法是为每个页面创建一个 $title 和 $url 变量:

<head>
<?php
    $metaUrl = "http://stackoverflow.com";
    $metaTitle = "MY PAGE";
?>

并在您的元标记和锚点中引用它们(请注意,我使用快速回显符号来回显 PHP 变量,这不适用于必须使用完整符号的旧 PHP 版本):

<meta property="url" content="<?=$metaUrl?>" />
<meta property="title" content="<?=$metaTitle?>" />
</head>

<body>
    <a href="http://www.facebook.com/sharer/sharer.php?u=<?=$metaUrl?>&title=<?=$metaTitle?>">
        <img src="images/logo/facebook.svg">
    </a>
</body>

JavaScript 方法

通过 JavaScript 也有一种简单的方法。首先给你的锚点一个 ID,这样我们就可以在 DOM 中轻松找到它:

<a id="fb-sharer" href="http://www.facebook.com/sharer/sharer.php?u=[URL]&title=[TITLE]"><img src="images/logo/facebook.svg"></a>

现在在您的脚本中,通过 DOM 文档对象获取标题和 url:

var title = document.title;
var url = document.URL;

在 DOM 中找到你的锚点并使用变量设置 href 值:

var anchor = document.getElementById("fb-sharer");
var link = "http://www.facebook.com/sharer/sharer.php?u=" + url 
           + "&title=" + title;
anchor.setAttribute("href", link);

您还可以使用 JavaScript 一次性编写整个元素,将其扔到您的锚点应该在的任何位置:

<script>
    var title = document.title;
    var url = document.URL;
    document.write('<a id="fb-sharer"'
                  + 'href="http://www.facebook.com/sharer/sharer.php?u="' + url 
                  + '&title=' + title 
                  + '><img src="images/logo/facebook.svg"></a>');
</script>

【讨论】:

  • Javascript 方法很好用,谢谢!我无法让 PHP 方法按原样复制(确认 PHP 正在运行 echo 测试),但我认为这可能只是我目前缺乏 PHP 知识,稍后会回来。谢谢!!!
  • @StuartDurning 由于您的 PHP 版本,您可能无法使用快速回显。如果是这种情况,那么您将不得不使用&lt;?php echo $metaUrl; ?&gt;,而不是使用&lt;?= $metaUrl ?&gt;。如果这不起作用,我将不得不再次测试它。
猜你喜欢
  • 2012-10-07
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
  • 2011-05-30
  • 2014-03-12
相关资源
最近更新 更多