Получить количество файлов в различных подкаталогах относительно текущей страницы - 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>