将插件插入流体模板?

Insert plugin into a fluid template?

扩展 ke_search 有一个搜索字段插件,我想将其插入到我的流体模板中并显示在每个页面上。我对此很陌生,不知道如何开始。感谢任何帮助。

您可以将插件分配给错别字库:

lib.searchMask < tt_content.list.20.your_plugin

(请在错别字浏览器中搜索插件位置)

在你的流体中你可以使用f:cObject来包含它:

<f:cObject typoscriptObjectPath="lib.searchMask" />

一般来说,您可以通过三种方式在所有页面中包含特殊内容:

  1. 将 HTML 硬编码到您的模板中(错别字、标记、流体)
  2. 使用可以插入到模板中的打字对象
  3. 使用错别字在特殊页面上呈现特殊 CE
  4. 在您的 (BE) 页面布局中使用一个特殊的列,其中的内容继承到子页面

解决方案 1 的缺点是非常静态,您可能会错过动态配置的机会(例如链接、垃圾邮件保护等)

如果你想要一个插件,解决方案2可能会很复杂,并且插件不能通过纯错别字配置(或者配置与主要内容中的插件配置冲突)

解决方案 3 需要一个特殊的(不可见的)页面,用于存储 CE 并可以对其进行编辑。在您的 TS 中,您使用 CONTENT 对象呈现它并使用硬编码的 uid。您需要记住那个特殊的地方和特殊的 CE。 (编辑可能 'replace' CE 并想知道为什么它会丢失)

解决方案 4 使您能够使用 'normal' 编辑器功能(将插件配置为 CE),但由于滑动可能会花费更多的渲染时间,并且您需要定义一个具有额外处理的特殊列。

除了 Bernd 的回答之外,这是最简单的解决方案,它使用 1) 和 TypoScript 以及最简单的 ke_search 输入字段的一些常量,但这甚至可以在您的 html 模板中进行硬编码,并且它仍然可以工作。这只是一个发送到结果页面的 GET 查询——您可以在其中通过页面插件再次设置搜索框。

temp.search = TEXT
temp.search.value (

<form action="index.php" id="site-search" name="xajax_form_kesearch_pi1" id="xajax_form_kesearch_pi1" method="get">
        <input type="text" class="search-input" name="tx_kesearch_pi1[sword]" value="">
        <input type="submit" value="{$llSearch}" class="button">
        <input type="hidden" value="{$pidResultPage}" name="id"><input type="hidden" value="1" name="tx_kesearch_pi1[page]" id="pagenumber">
      </form>
)

如果您只需要搜索输入而不需要结果,则有更多选项,例如在页眉或页脚中。不过,我只能在带有 indexed_search 的 TYPO3 11.5 中进行测试!一般方法也可能适用于 ke_search.

我的 TypoScript 设置:

plugin.tx_indexedsearch.settings {
    targetPid = 17
    displayAdvancedSearchLink = 0
}

lib.search = FLUIDTEMPLATE
lib.search{
    file = EXT:mysitepackage/Resources/Private/Partials/IndexedSearch/Form.html
    settings < plugin.tx_indexedsearch.settings
}

// Custom templates for indexed search.
plugin.tx_indexedsearch.view {
    templateRootPaths {
        0 = EXT:indexed_search/Resources/Private/Templates/
        10 = {$plugin.tx_indexedsearch.view.templateRootPath}
        20 = EXT:mysitepackage/Resources/Private/Templates/IndexedSearch/
    }

    partialRootPaths {
        0 = EXT:indexed_search/Resources/Private/Partials/
        10 = {$plugin.tx_indexedsearch.view.partialRootPath}
        20 = EXT:mysitepackage/Resources/Private/Partials/IndexedSearch/
    }
}

然后我将 public/typo3/sysext/indexed_search/Resources/Private/Partials/Form.html 复制到我的文件夹 public/typo3conf/ext/mysitepackage/Resources/Private/Partials/IndexedSearch/Form.html

在复制的文件中,您必须向表单标签添加一些属性:extensionName="IndexedSearch"pluginName="pi2"controller="Search",这样最终表单标签看起来像这样:

<f:form action="search" method="post" pageUid="{settings.targetPid}" extensionName="IndexedSearch" pluginName="pi2" controller="Search">

现在您可以将此添加到任何流体模板以添加搜索输入:

<f:cObject typoscriptObjectPath="lib.search" />