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