博尔特CMS嫩枝 - 如何使总项目计数按钮后,满足一定条件
问题描述:
比方说,我有我的螺栓hompage网站CONTENTTYPES items
,我从这个代码得到我的index.twig最新的项目清单:博尔特CMS嫩枝 - 如何使总项目计数按钮后,满足一定条件
{% setcontent latestitems = 'items/latest/8' %}
然后我用for
函数迭代它,所以我得到一个项目列表。
{% for item in latestitems %}
...
{% endfor %}
然后我想在项目列表的底部添加一个按钮,如果里面按钮文本螺栓数据库中超过800项的金额:“读另一XXX项目”这xxx是减去之后的项目总金额按最新项目的总项目数(本例中为8)。如果数据库中的总项数小于8,则不会显示。
我的问题是什么代码可以使这种方法的工作?我用这个代码为我的当前模板与length
过滤器,但仍然无法正常工作:
{% if items|length > 8 %}
<button>Read another {{ items|length - 8 }} items</button>
{% endif %}
下面是我的预期
任何人都可以帮助我纠正代码的图片?
答
直接向上,这是最好在一个扩展完成,因为setcontent
旨在获取记录,而不是统计数据。
但你可以做这样的事情:
{% setcontent items = 'items' nohydrate %}
{% set itemscount = items|length %}
这将使你的变量itemscount
设置为为ContentType的记录的总数。请注意上面第一行中的nohydrate
,这将加快数据库的查找速度。
谢谢@gawain让我帮忙。但抱歉,我仍然不明白。如果来自'setcontent items'的变量不包含'items/latest/8',如何获得最新的8项?我只使用这个变量来迭代项目列表项,我认为'items | length'可以直接提到,而不用将其包含在'set itemscount'中。此外,'items | length> 8'只影响按钮在数据库中的总项目(而不是'latestitem'变量)后显示超过8个,小于8个则仍然隐藏。纠正我,如果我错了:) – Hanif
你仍然会'{%setcontent latestitems ='items/latest/8'%}',因为它们是你想要迭代的记录,上面的例子是让你“......如果螺栓数据库中物品的数量...“ – Gawain
嘿,我已经解决了这个问题,因为我想要的东西。我保留原来的'latestitems'变量块。我使用'{%setcontent items ='items /'%}'显示按钮,然后将'length'过滤器应用于'items'变量并设置条件'> 8',以确保它只在项目超出条件时才显示。项目计数器使用'{{items | length - 8}}'工作,因此它显示总项目减8,这是它上面的最新项目列表的总数。无论如何,谢谢你提供'无水'选项。它加快了数据库:)。 – Hanif