我将从解释我正在做的事情开始 - 我觉得'真实世界'的解释将使这更容易理解。我有一个类别&在线商店的子类别列表。数据库表以简单的方式配置--id,category_name和subcategoryof - subcategoryof为0表示顶级类别。
在商店的主索引中,我列出了所有类别和子类别 - 使用左连接的单个查询和cfoutput查询中的cfoutput(下面粘贴的代码)的组合。这很好用,并允许我很好地设置顶级类别和子类别的样式,以区分它们。
但是,列表现在变得有点长,现在需要相当多的滚动来浏览页面。我想做的是这个;
输出目前所有顶级类别 仅输出2个子类别 显示有多少额外子类别的计数(即+7个子类别)。
现在,我将按照现在的方式输出所有内容 - 但是在第二个子类别之后,我将以下子类别设置为隐藏,并使用“+7更多子类别”文本切换显示(仍然在我这里? )。
我的问题和疑问是这样的 - 如何获得用于我的'+ x更多子类别'文本的子类别计数?我假设我目前计划使用增量计数来确定我开始隐藏行的点是最好的路径吗?
以下现有代码
<cfquery name="getcategories">
SELECT p.ID AS CategoryID, p.Cat_Name as CategoryName, p.Cat_Shortname, c.ID AS SubCategoryID, c.Cat_Name as SubCategoryName, c.Cat_Shortname AS SubCatShortname
FROM product_categories p LEFT JOIN product_categories c ON p.ID = c.SubcategoryOf
WHERE p.SubcategoryOf = 0
</cfquery>
<ul>
<cfoutput query="getcategories" group="CategoryName">
<li class="catli"><a href="">#CategoryName#</a></li>
<cfoutput><li class="subli"><a href="">#SubcategoryName#</a></li></cfoutput>
<li class="subli moreli"><a href="">+ 7 More Subcategories</a></li>
</cfoutput>
</ul>
答案 0 :(得分:2)
<ul>
<cfset SubcategoryNames = []>
<cfoutput query="getcategories" group="CategoryName">
<li class="catli"><a href="">#CategoryName#</a></li>
<cfoutput>
<cfset arrayAppend(subcategoryNames, SubcategoryName)>
</cfoutput>
<cfloop from="1" to="#max(arrayLen(subcategoryNames),2)#" index="i">
<li class="subli"><a href="">#SubcategoryName[i]#</a></li>
</cfloop>
<cfif arrayLen(subcategoryNames) GT 2>
<li class="subli moreli">
<a href="">+ #arrayLen(subcategoryNames) - 2# More Subcategories</a>
</li>
</cfif>
</cfoutput>
</ul>