[英]How to display search box in all the frontend page sidebar typo3
我們開發了一個帶有 typo3 v8.7.11 的網站。 我們想在側邊欄部分顯示搜索框,為此我們安裝了 indexed_search 擴展。 乙
如何在所有前端頁面側邊欄部分顯示搜索框?
編輯:
SearchController 的search
和form
操作都是不可緩存的。 這意味着如果您使用我的舊答案,您將在每個頁面上放置一個不可緩存的插件。 這會損害性能並可能產生其他副作用。
現在我通常只是在我的每個頁面上包含一個搜索表單,方法是將其包含在我的 Fluid Template 中:
<form action="{f:uri.action(controller: 'Search', action: 'search', extensionName: 'indexedsearch', pluginName: 'Pi2', pageUid: searchPid)}" method="POST" role="search">
<input type="text" name="tx_indexedsearch_pi2[search][sword]" spellcheck="false" autocomplete="off" />
<button type="submit">Search</button>
</form>
我像這樣通過 TypoScript 移交 searchPid 變量:
page.10.variables.searchPid = TEXT
page.10.variables.searchPid.value = <Pid where search results should be displayed>
舊答案:
我的建議是創建一個實際包含插件的 TypoScript 對象,如下所示:
lib.headerSearch = USER
lib.headerSearch {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
extensionName = IndexedSearch
pluginName = Pi2
vendorName = TYPO3\CMS
switchableControllerActions {
Search {
1 = form
2 = search
}
}
features {
requireCHashArgumentForActionArguments = 0
}
view < plugin.tx_indexedsearch.view
view.partialRootPaths.10 = Path/To/Partial/
view.templateRootPaths.10 = Path/To/Template/
settings =< plugin.tx_indexedsearch.settings
}
然后,在您的模板中,像這樣包含它
<f:cObject typoscriptObjectPath="lib.headerSearch" />
請注意,您應該在 Path/To/Template/Search/ 中為此 TS-Plugin 創建一個新的“Search.html”模板,這樣它就不會干擾常規插件。 此外,如果您將搜索槽與搜索插件本身包含在同一頁面上,請小心。
你有多種選擇:
從正常內容中的搜索插件復制表單的 HTML,並將其插入到您的頁面-(html-) 模板中。
創建一個特殊的 BE-column,將 search-plugin 插入到該列中,並在所有頁面中呈現該列繼承
制作一個在 FE 中不可見的特殊頁面,您可以在其中插入搜索插件並在每個頁面的呈現中包含此特殊 CE(在 typoscript 中使用 CONTENT 對象來選擇該特殊 CE)
在打字稿中包含和配置插件。 (見 Thomas Löffler 的回答)
我更喜歡選項 2,因為它最靈活並且不需要任何可能隨時間變化的特殊頁面或內容 ID(選項 3)。 它還可以處理任何類型的 CE。
例如,如果更新后插件渲染發生變化,選項 1 需要手動修復。
選項 4 不可能讓每個插件或 CE 都繼承。 如果您可以使用 typoscript 配置插件,這是一個很好的選擇,因為您不需要任何記錄(來自 tt_content)
對於選項 2:
temp.inheritedContent = CONTENT
temp.inheritedContent {
table = tt_content
select.orderBy = sorting
// -- use your own column id: --
select.where = colPos = 100
select.languageField = sys_language_uid
slide = -1
}
使用 TYPO3 擴展,可以是新開發的macina_searchbox版本的副本(fork)
模板模塊:在“include static from extensions”下添加“Macina Searchbox”。 使用這個或類似的 TypoScript 來包含它,本例中的“6”是搜索頁面。 請改用您自己的頁面 ID。
常量:
lib.macina_searchbox {
pidSearchpage = 6
}
設置:
10 = TEMPLATE
10.template = FILE
10.template.file = fileadmin/template/template.html
10.workOnSubpart = DOKUMENT
10.marks {
SUCHE < lib.macina_searchbox
LOGO = TEXT
LOGO.value = <a href="/" title="Startseite"><img src="fileadmin/template/img/logo.png"></a>
NAVI= HMENU
NAVI {
然后你可以編輯 macina_searchbox/Resources/Private/ 下面文件夾中的 Fluid 模板文件來修改搜索框的輸出。 為了不在頁面上顯示搜索結果列表,此方法是必需的。 您必須改為在您的搜索頁面上插入一個索引搜索插件,在此示例中它的 id=6。 SUCHE是網站主模板中的標記。 使用您自己的標記。
最簡單的方法是將給定的插件從indexed_search
復制到您在模板中使用的變量。
例如,當您使用 FLUIDTEMPLATE 時:
page.10 = FLUIDTEMPLATE
page.10.variable.searchBox < plugin.tx_indexedsearch
之后,您可以分配一個單獨的模板並通過使用此處可能的配置更改page.10.variable.searchBox
進行其他修改: https ://docs.typo3.org/typo3cms/extensions/indexed_search/8.7/Configuration/Index.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.