Symfony 螺栓CMS细枝-如何在满足特定条件后呈现总项目计数按钮
假设我有一个最新的项目列表,其中包含我的bolt hompage网站的contenttypesSymfony 螺栓CMS细枝-如何在满足特定条件后呈现总项目计数按钮,symfony,twig,bolt-cms,Symfony,Twig,Bolt Cms,假设我有一个最新的项目列表,其中包含我的bolt hompage网站的contenttypesitems,我从我的index.twig中的代码中获得: {%setcontent latestitems='items/latest/8%} 然后我用for函数对其进行迭代,从而得到一个项目列表 {% for item in latestitems %} ... {% endfor %} 然后,如果bolt数据库中的项目数量超过8,我想在项目列表底部添加一个按钮,按钮内有文本:“读取另一个xxx
items
,我从我的index.twig中的代码中获得:
{%setcontent latestitems='items/latest/8%}
然后我用for
函数对其进行迭代,从而得到一个项目列表
{% for item in latestitems %}
...
{% endfor %}
然后,如果bolt数据库中的项目数量超过8,我想在项目列表底部添加一个按钮,按钮内有文本:“读取另一个xxx项目”,其中xxx是项目总数减去最近项目中的项目总数(在本例中为8)。若数据库中的项目总数小于8,它将不会显示
我的问题是什么代码可以使这个方法工作?我将此代码用于带有length
过滤器的当前模板,但仍然不起作用:
{% if items|length > 8 %}
<button>Read another {{ items|length - 8 }} items</button>
{% endif %}
{%if items | length>8%}
阅读另一个{items | length-8}}项
{%endif%}
这是我期待的一张照片
任何人都可以帮我更正代码吗?坦白说,这最好在扩展中完成,因为
setcontent
的目的是获取记录,而不是统计数据
但你可以这样做:
{% setcontent items = 'items' nohydrate %}
{% set itemscount = items|length %}
这将使变量
itemsont
设置为该ContentType的记录总数。注意上面第一行中的nohydrate
,这将加快数据库的查找速度。谢谢@gawain为我提供帮助。但很抱歉我还是不明白。如果setcontent items
中的变量不包含items/latest/8
,如何获取最新的8项?我仅将此变量用于迭代项目列表项目,我认为可以直接提到items | length
,而无需将其包含在set itemscount
中。此外,items | length>8
只会影响按钮在数据库中的项目总数(不在latestitem
变量中)超过8后显示,以免超过8时仍然隐藏。如果我错了,请更正:)您仍然会{%setcontent latestitems='items/latest/8'%}
,因为它们是您要迭代的记录,上面的示例是让您“…列出bolt数据库中的项目数量…”嘿,我已经按照我的要求解决了这个问题。我将latestitems
变量块保持原样。我使用{%setcontent items='items/'%}
显示按钮,然后将length
过滤器应用于items
变量,并设置条件>8
以确保它仅在项目超过条件时显示。items计数器使用{{items | length-8}}
工作,因此它显示总项目数减去8,8是其上方最新项目列表的总和。无论如何,感谢您提供的nohydrate
选项。它加快了数据库的速度:)。这是一个很好的问题,但4年零5个月后没有提供答案。如果这个问题已经解决,请回答这个问题让我们知道。如果OP自己找到了解决方案,请提供答案。