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

Read HTML code from file system and show in TYPO3 page

设置

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

问题

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

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

注意:iframe 不是我的解决方案。我正在使用 TYPO3 7.6.23

我的回答基于以下假设:

  1. 你有你有一个"frontend provider extension"EXT:yourext;如果不是,您可以使用适当的 ´fileadmin/etcetera/Resources/Private/Etcetera´

  2. 更改每个路径,例如 EXT:yourext/Resources/Private/Etcetera
  3. 您在数据库上使用 backend_layout 来存储后端布局,并使用该字段来控制前端模板。我不记得在版本 7 中您是否也可以使用 key.data=pagelayout

  4. 来使用文件系统
  5. 当然你要调整backend_layout项的ID

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

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/
    }

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