In HUGO - 如何读取模板中的查询参数
In HUGO - How to read query parameters in template
我有一个 hugo 模板,我正在提供从一页到另一页的超链接。我想在 URL 中传递一些查询参数并在模板中读取它们。
/list-page/?{{(querify "somekey" "value")}}
我想做的是检查 /list-page/
是否在 url 中有 ?somekey=value
。如果有,我想根据传递的参数过滤列表。如果没有,我将显示整个列表。如果不清楚,我可以尝试解释更多。
我试过了 {{ $value := (.Get "value") }}
但这会阻止它。它根本不起作用。
我正在使用 Hugo Static Site Generator v0.55.6
感谢任何帮助。
?key1=value1&key2=value2
are extra parameters provided to the Web server. Those parameters are a list of key/value pairs separated with the & symbol. The Web server can use those parameters to do extra stuff before returning the resource. Each Web server has its own rules regarding parameters, and the only reliable way to know if a specific Web server is handling parameters is by asking the Web server owner.
这意味着当 HTTP 服务器收到您的 GET /list-page/?somekey=value
请求时,它很清楚该特殊后缀,并且在您的服务器应用程序中,您可以根据该参数提供不同的响应。
在您的情况下,您正在使用 nginx 或 Apache httpd 来为您的静态 HTML 文件提供服务你已经在请求之前建立了方式。因此,您没有实际的应用程序来指示它以不同方式处理该请求。
您的 HTTP 服务器只是获取该文件 (/list-page/index.html
) 并将其提供给您的浏览器。它不会从 /list-page/?somekey=somevalue
重定向到 /list-page/
,因此您浏览器中的 URL 仍然附加了搜索参数,但它仍然是您生成的一个静态页面。
此时,您仍然可以使用JavaScript (URLSearchParams) 来解释那些参数并当场修改页面。这意味着您正在为您的 Hugo 站点增加复杂性,并增加客户端(浏览器)的负载。如果你真的需要那些查询字符串和 Hugo,这就是你要走的路。
或者,我的建议是尝试生成所有可能的 /list-page/
变体并给它们适当的名称,例如/list-page/category-1
、/list-page/category-1-with-fizz
。这取决于您的用例、您拥有的页面数量以及它们更改的频率。 Hugo 在编译模板和创建大量页面方面非常快,所以我不担心。实际上,结果是您的输出中有更多文件,但这就是静态站点生成器的方式,并且服务静态 HTML 比实际的应用程序服务器便宜,例如PHP, 节点.
我有一个 hugo 模板,我正在提供从一页到另一页的超链接。我想在 URL 中传递一些查询参数并在模板中读取它们。
/list-page/?{{(querify "somekey" "value")}}
我想做的是检查 /list-page/
是否在 url 中有 ?somekey=value
。如果有,我想根据传递的参数过滤列表。如果没有,我将显示整个列表。如果不清楚,我可以尝试解释更多。
我试过了 {{ $value := (.Get "value") }}
但这会阻止它。它根本不起作用。
我正在使用 Hugo Static Site Generator v0.55.6
感谢任何帮助。
?key1=value1&key2=value2
are extra parameters provided to the Web server. Those parameters are a list of key/value pairs separated with the & symbol. The Web server can use those parameters to do extra stuff before returning the resource. Each Web server has its own rules regarding parameters, and the only reliable way to know if a specific Web server is handling parameters is by asking the Web server owner.
这意味着当 HTTP 服务器收到您的 GET /list-page/?somekey=value
请求时,它很清楚该特殊后缀,并且在您的服务器应用程序中,您可以根据该参数提供不同的响应。
在您的情况下,您正在使用 nginx 或 Apache httpd 来为您的静态 HTML 文件提供服务你已经在请求之前建立了方式。因此,您没有实际的应用程序来指示它以不同方式处理该请求。
您的 HTTP 服务器只是获取该文件 (/list-page/index.html
) 并将其提供给您的浏览器。它不会从 /list-page/?somekey=somevalue
重定向到 /list-page/
,因此您浏览器中的 URL 仍然附加了搜索参数,但它仍然是您生成的一个静态页面。
此时,您仍然可以使用JavaScript (URLSearchParams) 来解释那些参数并当场修改页面。这意味着您正在为您的 Hugo 站点增加复杂性,并增加客户端(浏览器)的负载。如果你真的需要那些查询字符串和 Hugo,这就是你要走的路。
或者,我的建议是尝试生成所有可能的 /list-page/
变体并给它们适当的名称,例如/list-page/category-1
、/list-page/category-1-with-fizz
。这取决于您的用例、您拥有的页面数量以及它们更改的频率。 Hugo 在编译模板和创建大量页面方面非常快,所以我不担心。实际上,结果是您的输出中有更多文件,但这就是静态站点生成器的方式,并且服务静态 HTML 比实际的应用程序服务器便宜,例如PHP, 节点.