TYPO3 13.2中视频无法显示及通过Fluid变量获取音视频文件路径的问题
TYPO3 13.2中视频无法显示及通过Fluid变量获取音视频文件路径的问题
嘿,我来帮你搞定这个TYPO3的视频问题~ 先拆解下你的两个核心需求:解决Text&Media字段视频不显示的问题,以及通过Fluid变量获取视频路径来手动渲染HTML video标签。
一、先解决Text&Media字段视频不显示的基础问题
你说通过Text&Media的媒体标签选了视频,但保存后网页不显示,大概率是你的Fluid模板没处理tt_content的媒体内容。给你两个简单的解决方式:
方式1:用TYPO3自带的视图助手快速渲染
在你的Fluid模板(比如station3.html)里,找到对应渲染内容的位置,添加这段代码:
<f:if condition="{data.media}"> <!-- 自动根据文件类型渲染视频/音频,支持自适应宽度 --> <f:media file="{data.media}" width="100%" controls="1" /> </f:if>
这个f:media助手会自动识别视频格式,生成符合标准的HTML视频标签,新手用这个最省心,不需要手动写太多代码。
方式2:检查模板是否遗漏了媒体渲染逻辑
如果你的模板是直接调用{content}变量渲染整个tt_content,那要确保TYPO3的默认媒体渲染配置没有被覆盖。可以检查你的TypoScript里有没有对tt_content.media的异常配置,比如禁用了渲染。
二、自定义获取视频路径到Fluid变量的方法
如果你一定要手动写HTML video标签,那得修正你原来的TypoScript写法,因为你原来的代码有几个小错误:
1. 修正TypoScript,获取视频的公共URL
把你原来的lib.fluidAudio改成下面的代码,这段代码会从当前tt_content记录的media字段里取出第一个视频文件的公共访问路径:
lib.videoUrl = FILES lib.videoUrl { # 关联当前tt_content记录的media字段 references { table = tt_content uid.data = current:uid fieldName = media } # 只取第一个视频文件(避免多文件冲突) maxItems = 1 # 输出文件的公共访问URL renderObj = TEXT renderObj.data = file:current:publicUrl }
2. 将变量传递到Fluid模板
在你的page配置里,把这个变量加到FLUIDTEMPLATE的variables里:
page = PAGE page { meta.author = BOK&Gaertner meta.description = Station3 meta.viewport = width=device-width, initial-scale=1 12 = FLUIDTEMPLATE 12 { file = fileadmin/templates/station3.html layoutRootPath = /fileadmin/templates/Layouts/ partialRootPath = /fileadmin/templates/Partials/ variables { # 把视频URL变量传到Fluid里 videoUrl < lib.videoUrl } } }
3. 在Fluid模板里手动写video标签
现在你可以在模板里用{videoUrl}变量来渲染自定义的视频标签了:
<video controls width="100%"> <source src="{videoUrl}" type="video/mp4"> 你的浏览器不支持HTML5视频播放,请升级浏览器。 </video>
给你提几个新手容易踩的坑
- 原来的TypoScript里
table == tt_content是错误的,TYPO3里赋值用单等号=,双等号==是比较运算符,会导致配置失效。 - 不要直接用
current:46这种写法,这是取当前记录的第46个字段,不是获取媒体文件的正确方式,要用references关联tt_content的media字段。 - 要确保视频格式是浏览器支持的(比如MP4、WebM),如果格式不对,即使路径正确也可能不显示。
备注:内容来源于stack exchange,提问作者JTR666
相关产品推荐
相关产品推荐

