TYPO3 9:递归计数根页面的子页面
TYPO3 9: Recursive count subpages of root page
TYPO3 是否能够递归收集并显示特定根页面的子页面数量(无存储)?试过这个打字错误的片段,但不知何故它不起作用。
20 = CONTENT
20 {
table = pages
select {
selectFields = count(*)
pidInList = <ROOT-PID>
andWhere = (hidden=0 AND deleted=0)
}
renderObj = COA
renderObj {
10 = TEXT
10 {
field = count(*)
wrap = Counted pages: |
}
}
}
也许TYPO3 9有什么功能?
提前致谢!
由于数据存储为树,因此您需要递归以从所有子级别获取所有页面。
由于您无法知道深度(或期望有很大的数字),并且拼写错误作为一种配置语言没有递归构建,因此在纯拼写解决方案中构建会很复杂。
这里用 PHP 编写的 userfunc 和递归可能是一个快速的解决方案。
总的来说:
为什么需要那个号码?
也许有更简单的解决方案
您可以从这里开始使用纯打字解决方案:
对于每个菜单项,您可以获得所有页面的总和,最多可深入三个级别,以及下一级的页面数。
temp.menudef = TMENU
temp.menudef {
#target = _top
noBlur = 1
#expAll = 1
wrap = <ol>|</ol>
NO = 1
NO {
stdWrap.cObject = COA
stdWrap.cObject {
1 = TEXT
1.field = title
1.required = 1
10 = LOAD_REGISTER
10.level1uids.cObject = COA
10.level1uids.cObject {
10 = CONTENT
10.table = pages
10.select.pidInList.data = field:uid
10.renderObj = TEXT
10.renderObj.field = uid
10.renderObj.wrap = |,
20 = TEXT
#20.field = uid
20.data = field:uid
}
10.level2uids.cObject < .10.level1uids.cObject
10.level2uids.cObject.10.select.pidInList.data = register:level1uids
10.level2uids.cObject.20.data = register:level1uids
10.level3uids.cObject < .10.level1uids.cObject
10.level3uids.cObject.10.select.pidInList.data = register:level2uids
10.level3uids.cObject.20.data = register:level2uids
20 = TEXT
20.wrap = <!-- --> (|
20.required = 1
20.override.numRows.table = pages
20.override.numRows.select.pidInList.data = register:level3uids
20.override.stdWrap.ifEmpty =
20.override.stdWrap.ifEmpty.wrap = |
30 = TEXT
30.wrap = -|)
30.required = 1
30.override.numRows.table = pages
30.override.numRows.select.pidInList.field = uid
30.override.stdWrap.ifEmpty =
30.override.stdWrap.ifEmpty.wrap = |
}
}
NO.wrapItemAndSub = <li>|</li>
NO.accessKey = 1
ACT < .NO
#ACT = 1
ACT.wrapItemAndSub = <li class="activ">|</li>
SPC < .NO
#SPC = 1
SPC.wrapItemAndSub = <li><span class="spacer">|</span></li>
CUR < .ACT
#CUR = 1
CUR.linkWrap = <span class="act">|</span>
CUR.wrapItemAndSub = <li class="current">|</li>
}
temp.submenu = HMENU
temp.submenu {
entryLevel = 0
wrap = <div class="smenu">|</div>
1 < temp.menudef
2 < .1
3 < .2
4 < .3
5 < .4
}
TYPO3 是否能够递归收集并显示特定根页面的子页面数量(无存储)?试过这个打字错误的片段,但不知何故它不起作用。
20 = CONTENT
20 {
table = pages
select {
selectFields = count(*)
pidInList = <ROOT-PID>
andWhere = (hidden=0 AND deleted=0)
}
renderObj = COA
renderObj {
10 = TEXT
10 {
field = count(*)
wrap = Counted pages: |
}
}
}
也许TYPO3 9有什么功能?
提前致谢!
由于数据存储为树,因此您需要递归以从所有子级别获取所有页面。
由于您无法知道深度(或期望有很大的数字),并且拼写错误作为一种配置语言没有递归构建,因此在纯拼写解决方案中构建会很复杂。
这里用 PHP 编写的 userfunc 和递归可能是一个快速的解决方案。
总的来说:
为什么需要那个号码?
也许有更简单的解决方案
您可以从这里开始使用纯打字解决方案:
对于每个菜单项,您可以获得所有页面的总和,最多可深入三个级别,以及下一级的页面数。
temp.menudef = TMENU
temp.menudef {
#target = _top
noBlur = 1
#expAll = 1
wrap = <ol>|</ol>
NO = 1
NO {
stdWrap.cObject = COA
stdWrap.cObject {
1 = TEXT
1.field = title
1.required = 1
10 = LOAD_REGISTER
10.level1uids.cObject = COA
10.level1uids.cObject {
10 = CONTENT
10.table = pages
10.select.pidInList.data = field:uid
10.renderObj = TEXT
10.renderObj.field = uid
10.renderObj.wrap = |,
20 = TEXT
#20.field = uid
20.data = field:uid
}
10.level2uids.cObject < .10.level1uids.cObject
10.level2uids.cObject.10.select.pidInList.data = register:level1uids
10.level2uids.cObject.20.data = register:level1uids
10.level3uids.cObject < .10.level1uids.cObject
10.level3uids.cObject.10.select.pidInList.data = register:level2uids
10.level3uids.cObject.20.data = register:level2uids
20 = TEXT
20.wrap = <!-- --> (|
20.required = 1
20.override.numRows.table = pages
20.override.numRows.select.pidInList.data = register:level3uids
20.override.stdWrap.ifEmpty =
20.override.stdWrap.ifEmpty.wrap = |
30 = TEXT
30.wrap = -|)
30.required = 1
30.override.numRows.table = pages
30.override.numRows.select.pidInList.field = uid
30.override.stdWrap.ifEmpty =
30.override.stdWrap.ifEmpty.wrap = |
}
}
NO.wrapItemAndSub = <li>|</li>
NO.accessKey = 1
ACT < .NO
#ACT = 1
ACT.wrapItemAndSub = <li class="activ">|</li>
SPC < .NO
#SPC = 1
SPC.wrapItemAndSub = <li><span class="spacer">|</span></li>
CUR < .ACT
#CUR = 1
CUR.linkWrap = <span class="act">|</span>
CUR.wrapItemAndSub = <li class="current">|</li>
}
temp.submenu = HMENU
temp.submenu {
entryLevel = 0
wrap = <div class="smenu">|</div>
1 < temp.menudef
2 < .1
3 < .2
4 < .3
5 < .4
}