TypoScript:从CONTENT对象中的文件中读取内容

时间:2017-10-31 10:12:33

标签: typo3 typoscript

请不要害怕这个问题的长度 - 我认为解决方案很简单......

梗概:

我在TypoScript中创建了一个CONTENT对象来读取数据库的内容。其中一个结果字段是文本文件的文件名,但我无法找到如何在CONTENT对象中呈现文件名的内容。

我发现我可以用以下内容读取给定文件的内容:

30 = FILE
30.file = <filepath>/<filename>

但在我走的时候我还没发现:

a)如何将CONTENT字段的结果用作<filepath>/<filename>

的变量

b)如何在某些情况下抑制FILE-OBJECT,因为它似乎没有对.if条件做出反应。

示例:我的实际问题

我想阅读所有在后端创建为“Text&amp; Media”内容元素的视频文件,并在前端显示带有我的typoscript的文件的URL。我的脚本适用于本地存储的视频,因为我可以从数据库中读取这些视频的文件路径。但是如果用户在后端创建了Youtube视频,我发现无法读取该视频的URL,因为我得到的只是文本文件的文件路径,然后包含URL(或者说是URL的唯一ID) 。所以我失败的地方是从文件中提取这个ID ......

当前的TypoScript:

obj.content_video = CONTENT
obj.content_video {

table = tt_content
select {
    pidInList = this
    selectFields = identifier,mime_type
    leftjoin = `sys_file_reference` ON tt_content.uid = sys_file_reference.uid_foreign LEFT JOIN `sys_file` ON sys_file.uid = sys_file_reference.uid_local
    where =  tt_content.CType = 'textmedia' AND tt_content.colPos = 1 AND tt_content.deleted=0 AND sys_file_reference.deleted=0
    orderBy = tt_content.uid
}

renderObj = COA
renderObj {
    10 = TEXT
    10.field = identifier
    10.wrap = <div>MP4-Video: href="/fileadmin|"</div><br>
    10.if {
        value = video/mp4
        equals.field = mime_type
    }

    20 = TEXT
    20.field = identifier
    20.wrap = <div>Youtube-Video: href="/fileadmin|"</div><br>
    20.if {
        value = video/youtube
        equals.field = mime_type
    }
}
}

当前结果:

当我在后端上传两个本地存储的视频和一个Youtube视频时,结果是:

  

MP4-Video:href =“/ fileadmin / myvideos / first_video.mp4”

     

MP4-Video:href =“/ fileadmin / myvideos / second_video.mp4”

     

Youtube-Video:href =“/ fileadmin / user_upload / some_youtube_file.youtube”

通缉结果:

  

MP4-Video:href =“/ fileadmin / myvideos / first_video.mp4”

     

MP4-Video:href =“/ fileadmin / myvideos / second_video.mp4”

     

Youtube-Video:href =“https://www.youtube.com/watch?v= VIDEO-ID

其中VIDEO-ID是文件 /fileadmin/user_upload/some_youtube_file.youtube 的内容 - 这是Youtube文件中字段'identifier'的内容。

如何更改上述代码以获得所需结果?

0 个答案:

没有答案