Typoscript 设置

如果要使用流体模板为 TYPO3 扩展使用自己的模板(对于 HTML,XML,JSON 或任何其他格式),可以添加其他模板路径。

扩展模板/部分/布局路径通常在属性下的 TypoScript 设置中设置

plugin.tx_<extensionkey>.view.templateRootPaths
plugin.tx_<extensionkey>.view.partialRootPaths
plugin.tx_<extensionkey>.view.layoutRootPaths

(<extensionkey> =没有下划线的小写扩展键。例如:power_blog => powerblog)

也可以仅为扩展的特定插件设置模板路径,而不是为整个扩展设置模板路径。这可以通过设置路径来完成

plugin.tx_<extensionkey>_<pluginname>.view.templateRootPaths
plugin.tx_<extensionkey>_<pluginname>.view.partialRootPaths
plugin.tx_<extensionkey>_<pluginname>.view.layoutRootPaths

(<pluginname> =小写的插件名称。例如:Pi1 => pi1,AjaxCall => ajaxcall)

这些属性中的每一个都必须是带有数字键的数组。键是路径的优先级:当搜索特定模板,部分或布局时,流体首先在具有最高键的路径中查找,然后在具有下一个下键的路径中查找,依此类推,并使用第一个匹配的模板它找到了。

此优先级的好处是,可以仅覆盖扩展默认模板的某些模板或部分,并重用其他模板。

这是扩展 news 的示例。在 4.3.0 版中,静态 TypoScript 模板定义了这些模板路径:

plugin.tx_news {
    view {
        templateRootPaths {
            0 = EXT:news/Resources/Private/Templates/
            1 = {$plugin.tx_news.view.templateRootPath}
        }
        partialRootPaths {
            0 = EXT:news/Resources/Private/Partials/
            1 = {$plugin.tx_news.view.partialRootPath}
        }
        layoutRootPaths {
            0 = EXT:news/Resources/Private/Layouts/
            1 = {$plugin.tx_news.view.layoutRootPath}
        }
    }
}

为了使用另一个模板,除了 news 的静态模板之外,还可以将其添加到 TypoScript 设置中:

plugin.tx_news {
    view {
        templateRootPaths {
            100 = path/to/my/own/templates/
        }
        partialRootPaths {
            100 = path/to/my/own/partials/
        }
        layoutRootPaths {
            100 = path/to/my/own/layouts/
        }
    }
}

然后首先在 path/to/my/own/templates/中搜索模板,如果没有在那里找到,则在 TypoScript 常量 {$plugin.tx_news.view.templateRootPath} 中定义的路径中,然后在扩展默认模板所在的文件夹中,EXT:news/Resources/Private/Templates/,通常解析为 typo3conf/ext/news/Resources/Private/Templates/

如果你想做同样的事情,但只针对扩展的插件 Pi1(它是 4.3.0 版本的唯一插件),最后一个例子如下所示:

plugin.tx_news_pi1 {
    view {
        templateRootPaths {
            100 = path/to/my/own/templates/
        }
        partialRootPaths {
            100 = path/to/my/own/partials/
        }
        layoutRootPaths {
            100 = path/to/my/own/layouts/
        }
    }
}