使用 PHP 或 JavaScript,我可以将一些文本附加到页面中呈现的每个 href URL 吗?

Using PHP or JavaScript, can I append some text to every href URL rendered in a page?

第一次发帖!我会尽量说清楚。

我有一个 Drupal 6 网站,我正在使用自定义模板文件以不同于网站其余部分的方式呈现某些页面。

这是我正在使用的代码的样子:

<?php print $header; ?> 
<?php if ($title): ?><h1><?php print $title; ?></h1><?php endif; ?>
<?php print $content ?>

当 URL 如下所示时,页面正确呈现:http://example.com/somepage/?format=kiosk

除了在页面中呈现的任何 link 将转到:http://example.com/otherpage/

我需要动态附加到任何 URL 末尾的是:

?format=kiosk

是否可以使用 PHP 或 JavaScript 来处理这些 link,而不求助于 .htaccess(尽管这是一个选项),以将该位添加到 URL?

我想这对其他事情也很方便,比如 Google 分析。

谢谢!

乔恩

当然可以,只需收集所有具有 href 属性的元素并从那里添加。

var links = document.querySelectorAll('[href]');
for (var i = 0; i < links.length; i++) {
  links[i].href += '?format=kiosk';
}

您可能想先做一个简单的检查,看看 link 是否包含 ? (links[i].href.indexOf('?') > -1),但这将确保每个 href?format=kiosk.

结尾
window.history.pushState(window.location.href, "Title", "?format=kiosk");

这将获取当前 url 并在末尾附加您指定的字符串

这是一个使用 jQuery 的解决方案,它运行快速正则表达式检查以确保锚标记是指向 http://example.com 页面的 link。它还会检查 link 是否已经有一个 ?与否。

var $links = $('a'); // get all anchor tags

// loop through each anchor tag
$.each($links, function(index, item){
    var url = $(this).attr('href'); // var for value of href attribute
    // check if url is undefined
    if(typeof url != 'undefined') {
        // make sure url does not already have a ?
        if(url.indexOf('?') < 0) {
            // use regex to match your domain
            var pattern = new RegExp(/(example.com\/)(.*)/i);
            if(pattern.test(url))
                $(this).attr('href', url + '?format=kiosk'); // append ?format=kiosk if url contains your domain
        }
    }
});