[英]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.