在 TypoScript 中动态读取数据库条目
Read DB entries dynamically in TypoScript
我的 Typo3 安装有以下设置:
打字错误:
lib.responsiveImage = IMAGE
lib.responsiveImage {
default = IMAGE
default{
file {
import.current = 1
treatIdAsReference = 1
}
altText.data = DB:sys_file_reference:26:alternative
titleText.data = current
}
}
产生以下输出标签(删除不必要的内容;重要的是 alt 和 title 标签):
<img class="img-responsive" srcset="XY.jpg" alt="AltText" title="26" sizes="(min-width: 1200px) 1100px">
如您所见,current
提供了正确的 uid“26”。通过 DB:sys_file_reference:26:alternative
的数据库查询提供了正确的 "AltText".
但是 -> 我怎样才能动态地实现它?
我试过这样的东西
DB:sys_file_reference:{current}:alternative
但这没有用。当前应该是 FileReference
的 uid
(另外 altText.data = file:current:alternative 给了我一个 Error: No File Object
)
也许使用 FILES 元素更安全:
lib.responsiveImage = FILES
lib.repsonsiveImage {
references.current = 1
renderObj = IMAGE
renderObj {
file.import.data = file:current:uid
file.treatIdAsReference = 1
altText.data = file:current:alternative
titleText.data = file:current:title
emptyTitleHandling = useAlt
}
}
幸运的是我找到了解决方案:
default = IMAGE
default{
file {
import.current = 1
treatIdAsReference = 1
}
sourceCollection < tt_content.image.20.1.sourceCollection
layout < tt_content.image.20.1.layout
layoutKey = srcset
altText.data.dataWrap = DB:sys_file_reference:{current}:alternative
altText.wrap = |
}
如果您使用 dataWrap,{current}
会按预期工作!
我的 Typo3 安装有以下设置:
打字错误:
lib.responsiveImage = IMAGE
lib.responsiveImage {
default = IMAGE
default{
file {
import.current = 1
treatIdAsReference = 1
}
altText.data = DB:sys_file_reference:26:alternative
titleText.data = current
}
}
产生以下输出标签(删除不必要的内容;重要的是 alt 和 title 标签):
<img class="img-responsive" srcset="XY.jpg" alt="AltText" title="26" sizes="(min-width: 1200px) 1100px">
如您所见,current
提供了正确的 uid“26”。通过 DB:sys_file_reference:26:alternative
的数据库查询提供了正确的 "AltText".
但是 -> 我怎样才能动态地实现它?
我试过这样的东西
DB:sys_file_reference:{current}:alternative
但这没有用。当前应该是 FileReference
的 uid(另外 altText.data = file:current:alternative 给了我一个 Error: No File Object
)
也许使用 FILES 元素更安全:
lib.responsiveImage = FILES
lib.repsonsiveImage {
references.current = 1
renderObj = IMAGE
renderObj {
file.import.data = file:current:uid
file.treatIdAsReference = 1
altText.data = file:current:alternative
titleText.data = file:current:title
emptyTitleHandling = useAlt
}
}
幸运的是我找到了解决方案:
default = IMAGE
default{
file {
import.current = 1
treatIdAsReference = 1
}
sourceCollection < tt_content.image.20.1.sourceCollection
layout < tt_content.image.20.1.layout
layoutKey = srcset
altText.data.dataWrap = DB:sys_file_reference:{current}:alternative
altText.wrap = |
}
如果您使用 dataWrap,{current}
会按预期工作!