从文件系统中读取HTML代码并在TYPO3页面中显示

时间:2017-11-25 14:27:01

标签: html typo3 typo3-7.6.x

设置

我想将数据从我的项目传输到TYPO3实例。假设我有一个HTML导出,在我的TYPO3目录中生成大约20个不同的HTML文件。这些文件包含来自不同系统的数据,并且数据更新频繁,因此我会使用最新信息定期覆盖它们。

问题

我想告诉TYPO3将每个文件的HTML内容加载为自己的页面。请注意:这些页面不是完整的html文档(没有<html><body>标签)。相反,我希望这些文件中的任何代码都显示在TYPO3页面的上下文中。有点像TYPO3 HTML PageContent,但我希望HTML的源代码来自文件。

我不在乎是否必须手动设置每个页面,但我还没有找到任何方法让TYPO3 Page或PageContent从文件中获取数据。你知道这有可能吗?

注意:在我的情况下,iframe不是解决方案。我使用的是TYPO3 7.6.23

1 个答案:

答案 0 :(得分:2)

我的回答基于以下假设:

  1. 您有一个“前端提供商扩展”EXT:yourext;如果没有,你可以使用正确的'fileadmin / etcetera / Resources / Private / Etcetera'改变EXT:yourext/Resources/Private/Etcetera之类的每条路径

  2. 您在数据库上使用backend_layout来存储后端布局,并使用该字段来控制前端模板。我不记得在版本7中你是否也可以使用key.data=pagelayout

  3. 来使用文件系统
  4. 当然你必须调整backend_layout项的ID

  5. 要包含的文件将是部分文件,存储在文件夹EXT:yorext/Resources/Private/Partials/中,并将命名为

  6. MyFileToIncludeOne.html MyFileToIncludeTwo.html et cetera

    基本的TypoScript将类似于:

    page.10 = FLUIDTEMPLATE
    page.10{
    
        templateName= TEXT
        templateName.stdWrap {
            cObject = CASE
            cObject {
                key.data = levelfield:-2,backend_layout_next_level,slide
                key.override.field = backend_layout     
                //I assume you already have some templates  
                1 = TEXT
                1.value = Default
    
                2 = TEXT
                2.value = Home
    
                //The layouts for the "pages with html files" begin here
                10 = TEXT
                10.value = MyFileOne
    
                11 =TEXT
                11.value = MyFileTwo    
            }
        }
    
        layoutRootPaths {
            0 = EXT:yourext/Resouces/Private/Layouts/Page/  
        }
        partialRootPaths {
            0 = EXT:yourext/Resouces/Private/Partials/Page/  
        }
        templateRootPaths {
            0 = EXT:yourext/Resouces/Private/Template/Page/  
        }
    }
    

    所以,在前几行中, 模板MyFileOne.html将包含部分MyFileToIncludeOne.html,只需写入:

    <f:render partial="MyFileToIncludeOne"/>
    

    如果要将文件分开,也可以使用不同的路径:

        partialRootPaths {
            0 = EXT:yourext/Resouces/Private/Partials/Page/  
            1 =  fileadmin/some/other/path/
        }
    

    我希望我没有忘记重要的段落。随意请求澄清