1

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

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

现在的问题是问号?是硬编码的,有时URL已经有问号了。所以这段代码创建了类似的链接...spip.php?article123?date=2014-03-30,应该是...spip.php?article123&date=2014-03-30。我不能硬编码一个&符号&,因为不是每个链接都已经有一个问号。

有没有办法将 GET 变量添加到 SPIP 中的 URL?

4

1 回答 1

1

正确的方法是使用过滤器。我们需要创建自己的过滤器,这样的 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>,''})]
于 2014-03-29T09:43:12.720 回答