Получить количество файлов в различных подкаталогах относительно текущей страницы - ColdFusion

У меня есть некоторый код cf, который почти работает, я думаю.

У меня есть следующая структура:

work
--still-life
--portraits
--personal

В каждой из этих папок одинаковая структура:

still-life
  --img-s
  --img-m
  --img-l

Я хочу знать, сколько файлов в первом каталоге (img-s) для каждой страницы, на которой я нахожусь /still-life/index.cfm например.

Я пытался реализовать cfdirectory, но безрезультатно, тогда я нашел этот код, который почти работает:

<cfoutput>
directory="#GetDirectoryFromPath(GetTemplatePath())#"
</cfoutput>

<cfdirectory 
  directory="#GetDirectoryFromPath(GetTemplatePath())#" 
  name="myDirectory" 
  sort="name ASC, size DESC, datelastmodified">
<!---- Output the contents of the cfdirectory as a cftable -----> 
<cftable 
  query="myDirectory" 
  colSpacing = "10"
  htmltable 
  colheaders> 
  <cfcol 
    header="NAME:" 
    align = "Left"
    width = 20
    text="#Name#"> 
  <cfcol 
    header="SIZE:" 
    align = "Left"
    width = 20
    text="#Size#"> 
  <cfcol 
    header="date last modified:" 
    align = "Left"
    width = 20
    text="#datelastmodified#"> 
</cftable> 

Я на самом деле получаю это в выводе:

directory="{URL}\work\portraits\"
NAME:     SIZE: date last modified:
img-l     0     {ts '2015-06-08 11:56:35'}
img-m     0     {ts '2015-06-08 11:56:35'}
img-s     0     {ts '2015-06-08 11:56:36'}
index.cfm 134   {ts '2015-06-08 11:56:36'}

Так что я думаю, что это довольно близко. Мне интересно, если мне нужен цикл, чтобы пройти через подкаталоги?

Если это помогает, мне действительно важен каталог img-s, а файлы всегда должны быть в формате jpg.

Я попытался реализовать часть кода здесь и здесь, а также пытался реализовать функцию ExpandPath (но мой опыт работы с CF относительно ограничен).

РЕДАКТИРОВАТЬ

Я добавил это в конец cftable:

 <cfcol    
        header="Count"
        align="left"
        width="20"
        text="#recordCount#">

И теперь мой вывод выглядит так:

NAME:      SIZE:    date last modified:         Count
img-l      0        {ts '2015-06-08 11:56:34'}  4
img-m      0        {ts '2015-06-08 11:56:34'}  4
img-s      4096     {ts '2015-06-08 14:10:33'}  4
index.cfm  1276     {ts '2015-06-08 14:13:53'}  4

По крайней мере, теперь он читает размер файла каталога.

РЕДАКТИРОВАТЬ 2

Просто для @ScottStroz вот текущий код:

<cfset filters = "*.jpg">
<cfdirectory 
    directory="#ExpandPath('.')#/img-s" 
    name="getSubDir"
    recurse = "yes"
    filter = "#filters#">

    <cfset imgArray=arraynew(1)>
    <cfset i=1>
    <cfset imgDir="img-s/">
    <cfset imgDirM="img-m/">
    <cfloop query="getSubDir">
        <cfset imgArray[i]=getSubDir.name>
        <cfset i = i + 1>
    </cfloop>

    <ul class="workNav clearfix">
        <cfloop from="1" to="#arrayLen(imgArray)#" index="i">
            <cfoutput>
                <li><a href="#imgDirM##imgArray[i]#"><img src="#imgDir##imgArray[i]#"/></a></li>
            </cfoutput>
        </cfloop>
    </ul>

1 ответ

Решение

Этот код должен работать.

<cfoutput>
directory="#GetDirectoryFromPath(GetTemplatePath())#"
</cfoutput>

<cfdirectory 
  directory="#GetDirectoryFromPath(GetTemplatePath())#" 
  name="myDirectory" 
  sort="name ASC, size DESC, datelastmodified"
  recurse = "yes">
<!---- Output the contents of the cfdirectory as a cftable -----> 
<cftable 
  query="myDirectory" 
  colSpacing = "10"
  htmltable 
  colheaders> 
  <cfcol    
        header="Count"
        align="left"
        width="20"
        text="#recordCount#">
  <cfcol 
    header="NAME:" 
    align = "Left"
    width = 20
    text="#Name#"> 
  <cfcol 
    header="SIZE:" 
    align = "Left"
    width = 20
    text="#Size#"> 
  <cfcol 
    header="date last modified:" 
    align = "Left"
    width = 20
    text="#datelastmodified#"> 
    <cfcol 
    header="Directory" 
    align = "Left"
    width = 20
    text="#directory#"> 
</cftable> 
Другие вопросы по тегам