SPIP将GET变量添加到URL

时间:2014-03-28 09:28:28

标签: url get spip

我正在使用SPIP我自己的文件,这些文件是根据关键字包含的。例如,将关键字inc-bla添加到文章会使文件.../squellettes/.../inc-bla.html包含在内。在其中一个文件中,我想要添加到URL的GET变量链接到当前页面:

[(#ENV{date}|diffdays|<{40}|?{<a href="#URL_ARTICLE?date=[(#ENV{date}|next_sunday)]">Some text...</a>,''})]

现在的问题是问号?是硬编码的,有时网址已经有了问号。因此,此代码会创建...spip.php?article123?date=2014-03-30之类的链接,该链接应为...spip.php?article123&date=2014-03-30。我无法对&号进行硬编码&,因为并非所有链接都有问号。

有没有办法在SPIP中为URL添加GET变量?

1 个答案:

答案 0 :(得分:1)

正确的方法是使用filters。我们需要创建自己的过滤器,这样的PHP函数:

function url_add_get_var($url,$name,$value) {
    $name = urlencode($name);
    $value = urlencode($value);
    // If there is no question mark in the URL ...
    if (strpos($url,'?') === false) {
        // Add the variable with a question mark
        return "$url?$name=$value";
    } else {
        // If there is a question mark, add the variable with an ampersand
        return "$url&$name=$value";
    }
}

现在,我们可以在SPIP中使用它:

[(text|filter{var1,var2, ...})]

所以,在这种情况下:

[(#URL_ARTICLE|url_add_get_var{date,[(#ENV{date}|next_sunday)]})]

完整代码:

[(#ENV{date}|diffdays|<{40}|?{<a href="[(#URL_ARTICLE|url_add_get_var{date,[(#ENV{date}|next_sunday)]})]">Some text...</a>,''})]