簡體   English   中英

如何在所有前端頁面側邊欄中顯示搜索框 typo3

[英]How to display search box in all the frontend page sidebar typo3

我們開發了一個帶有 typo3 v8.7.11 的網站。 我們想在側邊欄部分顯示搜索框,為此我們安裝了 indexed_search 擴展。

如何在所有前端頁面側邊欄部分顯示搜索框?

編輯:

SearchController 的searchform操作都是不可緩存的。 這意味着如果您使用我的舊答案,您將在每個頁面上放置一個不可緩存的插件。 這會損害性能並可能產生其他副作用。

現在我通常只是在我的每個頁面上包含一個搜索表單,方法是將其包含在我的 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”模板,這樣它就不會干擾常規插件。 此外,如果您將搜索槽與搜索插件本身包含在同一頁面上,請小心。

你有多種選擇:

  1. 從正常內容中的搜索插件復制表單的 HTML,並將其插入到您的頁面-(html-) 模板中。

  2. 創建一個特殊的 BE-column,將 search-plugin 插入到該列中,並在所有頁面中呈現該列繼承

  3. 制作一個在 FE 中不可見的特殊頁面,您可以在其中插入搜索插件並在每個頁面的呈現中包含此特殊 CE(在 typoscript 中使用 CONTENT 對象來選擇該特殊 CE)

  4. 在打字稿中包含和配置插件。 (見 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM