TYPO3 7.6 中响应式图像的附加 sourceCollection

Posted

技术标签:

【中文标题】TYPO3 7.6 中响应式图像的附加 sourceCollection【英文标题】:Additional sourceCollection for responsive images in TYPO3 7.6 【发布时间】:2017-05-02 07:29:48 【问题描述】:

是否可以实现额外的sourceCollection 代码以在扩展中呈现响应式图像。我已经为标准tt_content.image.20.1.sourceCollection 配置了代码,它工作正常。

这是我的TypoScript 代码:

tt_content.image.20.1.layout 
  srcset 
    element.wrap = <img src="###SRC###" srcset="###SRC### ###WIDTH###w,###SOURCECOLLECTION###" sizes="|"###PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###>
    element = (min-width: 1020px) 800px, (min-width: 740px) 460px, calc(100vw - 20px)
  


    tt_content.image.20.1.sourceCollection >
    tt_content.image.20.1.sourceCollection 
      tiny 
        width = 160
        maxW < .width
        srcsetCandidate = 160w
      
      extrasmall 
        width = 320
        maxW < .width
        srcsetCandidate = 320w
      
      small 
        width = 460
        maxW < .width
        srcsetCandidate = 460w
      
      normal 
        width = 600
        maxW < .width
        srcsetCandidate = 600w
      
      medium 
        width = 780
        maxW < .width
        srcsetCandidate = 780w
        quality = 60
      
      large 
        width = 920
        maxW < .width
        srcsetCandidate = 920w
        quality = 60
      
      extralarge 
        width = 1100
        maxW < .width
        srcsetCandidate = 1100w
        quality = 60
      
      huge 
        width = 1200
        maxW < .width
        srcsetCandidate = 1200w
        quality = 60
      
    


lib.responsiveImage 
    default = IMAGE
    default 
        file.import.current = 1
        altText.data = field:altText
        titleText.data = field:titleText
        layoutKey = srcset
        layout.srcset < tt_content.image.20.1.layout.srcset
        sourceCollection < tt_content.image.20.1.sourceCollection
    
    specialBig < .default
    specialBig 
        layoutKey = srcset
        layout.srcset 
            element.wrap = <img src="###SRC###" srcset="###SRC### ###WIDTH###w,###SOURCECOLLECTION###" sizes="|"###PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###>
            element = (min-width: 1020px) 521px, (min-width: 740px) 460px, calc(100vw - 20px)
        

        sourceCollection  
          tiny 
          width = 160
          maxW < .width
          srcsetCandidate = 160w
          
          extrasmall 
          width = 320
          maxW < .width
          srcsetCandidate = 320w
          
          small 
          width = 460
          maxW < .width
          srcsetCandidate = 460w
          
          normal 
          width = 600
          maxW < .width
          srcsetCandidate = 600w
          
          medium 
          width = 460
          maxW < .width
          srcsetCandidate = 780w
          quality = 60
          
          large 
          width = 460
          maxW < .width
          srcsetCandidate = 920w
          quality = 60
          
          extralarge 
          width = 520
          maxW < .width
          srcsetCandidate = 1100w
          quality = 60
          
          huge 
          width = 600
          maxW < .width
          srcsetCandidate = 1200w
          quality = 60
          
        
    
 

还有FluidTemplate 部分:

<f:cObject typoscriptObjectPath="lib.responsiveImage.default" data="image.uid"></f:cObject>
<f:cObject typoscriptObjectPath="lib.responsiveImage.specialBig" data="image.uid"></f:cObject>

来自lib.responsiveImage.default 部分的图像呈现正确,但来自lib.responsiveImage.specialBig 整个sourceCollection 的图像被忽略,在输出中我只有:

<img src="fileadmin/img/img.jpg" srcset="fileadmin/img/img.jpg 800w," sizes="(min-width: 1020px) 521px, (min-width: 740px) 460px, calc(100vw - 20px)"  title="title-text">

【问题讨论】:

一般来说,这是完全可能的。某处一定有一些语法错误。您是否检查了 TypoScript 对象浏览器以查看是否正确应用了所有内容?你能在这里发### Additional Config ###吗? 我在代码中用### Additional Config ###完成了输入 我不知道为什么,但现在可以了 - 也许我有一些语法错误 仅供参考:这里没有必要依赖 Typoscript。您可以直接在流体模板中拥有所有这些逻辑,即图片标签或带有其他来源的 img 标签。 【参考方案1】:

如果可以,在流体模板中更容易做到。

您可以编写自己的 ViewHelper 或插件,并将您的图像数据提供给它,然后使用以下内容构建您的图像:

<picture>
     <f:for each="sizes" as="size">
         <source media="(min-width: ...px)" 
                 srcset="f:uri.image(...)">
     </f:for>
     <img src="f:uri.image(...)"  title="...">
 </picture>

【讨论】:

以上是关于TYPO3 7.6 中响应式图像的附加 sourceCollection的主要内容,如果未能解决你的问题,请参考以下文章

TYPO3 升级(7.6 到 10):未找到站点配置

版本 6.1.5 和 7.6 之间的typo3-content 的兼容性

Typo3 7.6 extbase 存储库匹配仅影响非本地化记录

删除图像标签的“高度”和“宽度”属性

AS3:创建响应式 mxml 调整大小位图图像,根据浏览器调整大小

TYPO3:清除索引搜索缓存