博尔特CMS嫩枝 - 如何使总项目计数按钮后,满足一定条件

博尔特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 %} 

下面是我的预期

picture

任何人都可以帮助我纠正代码的图片?

直接向上,这是最好在一个扩展完成,因为setcontent旨在获取记录,而不是统计数据。

但你可以做这样的事情:

{% setcontent items = 'items' nohydrate %} 
{% set itemscount = items|length %} 

这将使你的变量itemscount设置为为ContentType的记录的总数。请注意上面第一行中的nohydrate,这将加快数据库的查找速度。

+0

谢谢@gawain让我帮忙。但抱歉,我仍然不明白。如果来自'setcontent items'的变量不包含'items/latest/8',如何获得最新的8项?我只使用这个变量来迭代项目列表项,我认为'items | length'可以直接提到,而不用将其包含在'set itemscount'中。此外,'items | length> 8'只影响按钮在数据库中的总项目(而不是'latestitem'变量)后显示超过8个,小于8个则仍然隐藏。纠正我,如果我错了:) – Hanif

+0

你仍然会'{%setcontent latestitems ='items/latest/8'%}',因为它们是你想要迭代的记录,上面的例子是让你“......如果螺栓数据库中物品的数量...“ – Gawain

+0

嘿,我已经解决了这个问题,因为我想要的东西。我保留原来的'latestitems'变量块。我使用'{%setcontent items ='items /'%}'显示按钮,然后将'length'过滤器应用于'items'变量并设置条件'> 8',以确保它只在项目超出条件时才显示。项目计数器使用'{{items | length - 8}}'工作,因此它显示总项目减8,这是它上面的最新项目列表的总数。无论如何,谢谢你提供'无水'选项。它加快了数据库:)。 – Hanif