我使用的是Squarespace的开发平台。
有没有办法突破squarespace:query标记的作用域?在标记内部,似乎不可能在其外部引用任何键/值/变量。我只想根据正在构建的页面(使用squarespace:query的页面)中的变量来显示特定集合项目的内容。
示例代码片段:
<div class="infosection" data-info-section="Series">
<p id="seriesTitle">
{customContent.seriesName}
</p>
<p id="seriesBlurb">
<squarespace:query collection="series-1" category="{customContent.seriesName}">
{# No apparent way to break out of query tag scope, have to ghetto rig a filter with 'category' attribute}
<script>console.log({@|json-pretty})</script>
{.section items.0}
{excerpt}
{.end}
</squarespace:query>
</p>
</div>发布于 2021-11-23 02:39:58
不幸的是,您没有办法从查询之外访问数据,这一点是正确的。类似地,也没有办法从查询外部将数据传递到查询中(例如,通过var指令)。这很不幸,因为这通常是var指令的最佳用例,但它就是不能以这种方式工作。
因此,在JSON-T模板系统中使用带有标记和/或类别过滤器的查询确实是唯一的方法( JSONP请求除外,见下文)。
另一种选择是使用JavaScript。通过添加参数/series-1?format=json,Squarespace站点上的几乎每个页面都可以请求为JSON数据。因此,您可以发出AJAX请求并以这种方式使用数据。或者,向URL发出JSONP请求,如下所示:
<script>
function mycallbackFn(jsonData) {
// do stuff with the jsonData here. You could even build your own template literal if you only need to support modern browsers.
}
</script>
<script src="/{fullUrl}/?format=json&callback=mycallbackFn"></script>理论上,您可以将其直接插入到JSON-T中。但是,如果求助于JavaScript,AJAX方法可能更易于维护。内容也不容易被索引,被动态添加。
在某些情况下,另一种方法是将所有变体硬编码到查询中,如下面的示例所示。这可能对您的情况没有帮助,但我之所以包括这一点,是因为它有时是解决与您相关的问题的一种方法:
(此示例假设项目只分配了一个类别。)
<squarespace:query collection="mycollectionslug" limit="99">
{.repeated section items}
{.repeated section categories}
{.equal?:@:"My Category 1"}
<p>Content specific to my category 1.</p>
{.end}
{.or equal?:@:"My Category 2"}
<p>Content specific to my category 2.</p>
{.end}
{# etc.}
{.end}
{.end
</squarespace:query>但是,总而言之,您遇到的关于squarespace:query和scope的限制是一个常见的限制,并且只能以某种不太理想的方式解决,正如您已经发现的那样。
https://stackoverflow.com/questions/70074301
复制相似问题