在TypoScript中动态读取数据库条目

时间:2017-09-08 10:23:55

标签: html database typo3 typoscript typo3-7.6.x

我的Typo3安装有以下设置:

的TypoScript:

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和标题标记):

<img class="img-responsive" srcset="XY.jpg" alt="AltText" title="26" sizes="(min-width: 1200px) 1100px">

如您所见,current提供了正确的“26”uid。通过DB:sys_file_reference:26:alternative的数据库查询提供了正确的“AltText”。

然而 - &gt;我怎么能动态地实现这个目标呢?

我试过这样的事情

DB:sys_file_reference:{current}:alternative

但这不起作用。 current应该是FileReference的uid

(另外altText.data = file:current:alternative给我一个Error: No File Object

2 个答案:

答案 0 :(得分:1)

也许使用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
  }
}

答案 1 :(得分:1)

幸运的是我找到了解决方案:

  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}按预期工作!