typo3-9.x - TYPO3 9:递归计算根页面的子页面
问题描述
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
}
推荐阅读
- reactjs - React Native 为 AsyncStorage 返回的 JSON 对象中的每个项目在屏幕上创建一个组件
- python - Python:将大整数写入文件的最快方法
- python - AttributeError:“str”对象没有属性“annotate_video”
- reactjs - 为什么只有一个按钮?
- r - 在模式后提取字符串到未知停止点
- swift - 从 Swift 中的函数中提取变量
- angularjs - Angularjs 无法绑定到 ngModel
- laravel - 为什么 Cache::lock() 在 Laravel 7 中返回 false?
- python-3.x - 从 Python 中的多个文件夹中读取多个 CSV 文件?
- html - 我应该如何配置网格