从文件系统读取 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
我的回答基于以下假设:
你有你有一个"frontend provider extension"EXT:yourext;如果不是,您可以使用适当的 ´fileadmin/etcetera/Resources/Private/Etcetera´
更改每个路径,例如 EXT:yourext/Resources/Private/Etcetera
您在数据库上使用 backend_layout
来存储后端布局,并使用该字段来控制前端模板。我不记得在版本 7 中您是否也可以使用 key.data=pagelayout
来使用文件系统
当然你要调整backend_layout项的ID
要包含的文件将是部分文件,存储在文件夹 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/
}
希望我没有忘记重要的段落。随时要求澄清
设置
我想将数据从我的项目传输到 TYPO3 实例。假设我有一个 HTML 导出,它在我的 TYPO3 目录中生成大约 20 个不同的 HTML 文件。这些文件包含来自不同系统的数据并且数据更新非常频繁,所以我会定期用最新信息覆盖它们。
问题
我想告诉 TYPO3 加载每个文件的 HTML 内容作为它自己的页面。请注意:这些页面不是完整的 html 文档(没有 <html>
或 <body>
标签)。相反,我希望这些文件中的任何代码都显示在 TYPO3 页面的上下文中。有点像 TYPO3 HTML PageContent,但我希望 HTML 的来源来自文件。
我不在乎是否必须手动设置每个页面,但我还没有找到任何方法让 TYPO3 页面或 PageContent 从文件中获取数据。你知道这有什么可能吗?
注意:iframe 不是我的解决方案。我正在使用 TYPO3 7.6.23
我的回答基于以下假设:
你有你有一个"frontend provider extension"EXT:yourext;如果不是,您可以使用适当的 ´fileadmin/etcetera/Resources/Private/Etcetera´
更改每个路径,例如 您在数据库上使用
backend_layout
来存储后端布局,并使用该字段来控制前端模板。我不记得在版本 7 中您是否也可以使用key.data=pagelayout
来使用文件系统
当然你要调整backend_layout项的ID
要包含的文件将是部分文件,存储在文件夹
EXT:yorext/Resources/Private/Partials/
中并将命名为
EXT:yourext/Resources/Private/Etcetera
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/
}
希望我没有忘记重要的段落。随时要求澄清