Я начну с объяснения того, что я делаю - я чувствую, что объяснение «реального мира» облегчит это понимание. У меня есть список категорий и подкатегорий для интернет-магазина. Таблица базы данных настраивается простым образом - id, category_name и subcategoryof - подкатегория 0, представляющая категорию верхнего уровня.
В главном индексе магазина я перечисляю все категории и подкатегории - используя комбинацию одного запроса, используя левое соединение, и cfoutput в запросе cfoutput (код вставлен ниже). Это хорошо работает и позволяет мне стилизовать категории и подкатегории верхнего уровня достаточно хорошо, чтобы различать их.
Однако список становится немного длиннее, и теперь для навигации по странице требуется немало прокрутки. То, что я хотел бы сделать, это;
Вывести все категории верхнего уровня, как в настоящее время
Вывести только 2 из подкатегорий
Показать подсчет количества дополнительных подкатегорий (например, +7 подкатегорий).
Теперь я на самом деле выведу все так, как делаю сейчас - однако после 2-й подкатегории я установлю скрытые следующие подкатегории и с помощью текста «+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>