是否可以在没有前端插件的情况下基于特定页面在控制器中调用函数?

时间:2019-04-30 11:02:53

标签: typo3 typo3-9.x

当我在Typo3中打开一个站点时,我希望该站点为该站点调用某个控制器,然后输出布局。最好使用相同的名称,例如“ TestController.php”作为控制器,而“ Test.html”作为布局。

我知道FrontEnd插件是可能的。 FrontEnd插件的问题是我需要将插件添加到我想要的站点。我真正想要的是编写一个扩展程序,该扩展程序一旦安装便可以在所有站点上使用。

实际上可以在typo3中执行此操作吗?也许有一些配置文件?

3 个答案:

答案 0 :(得分:0)

您还可以通过TypoScript和USERUSER_INT内容对象添加TYPO3插件。这样一来,在任何页面上都可以轻松安装插件。

著名的news extension就是一个很好的例子:

lib.news = USER
lib.news {
  userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
  extensionName = News
  pluginName = Pi1
  vendorName = GeorgRinger

  switchableControllerActions {
        News {
          1 = list
        }
  }

  settings < plugin.tx_news.settings
  settings {
        //categories = 49
        limit = 30
        detailPid = 31
        overrideFlexformSettingsIfEmpty := addToList(detailPid)
        startingpoint = 13
  }
}

有关USERUSER_INT的更多信息,请查看official documentation

答案 1 :(得分:0)

欢迎使用StackOverflow。

有了TYPO3 v9,中间件进入了核心,因此您现在可以在所需的页面呈现的每个位置运行代码。 一个很好的文档和示例,您可以在这里找到:https://usetypo3.com/psr15-middleware-in-typo3.html

只需添加您自己的中间件,即可在每次或满足某些条件时调用您的代码。没有插件,并且在每个页面上。

当心,这很花哨! :-)

答案 2 :(得分:-1)

暂时,我还可以推荐ThomasLöffler建议的中间件。但是据我所知,您必须通过页面ID来标识要执行某项操作的所有页面(这看起来并不好看)。 如果有很多页面,中间件的“主要功能”(即“ process()”)如果我没记错的话,会变得很长。 因此,Iam也在寻找一种基于名称的自动布局<-> Controller-Configuration。

我曾经在following site

上找到了一条有趣的信息
our template files inside for example the Content subfolder are - according to Extbase conventions - 
connected directly to a Controller's action. In standard Extbase, the Controller action must exist 
first and will then cause the template file to be rendered - in Fluid Powered TYPO3 this is reversed 
(since your Controller is optional)

该站点主要关注通量扩展,但我希望可以有某种全球惯例。

因此,与全局视图控制器配置有关的任何新想法或信息,而不必使用TYPO3-后端将两者都连接起来,将非常有用! (使用TYPO3 9和基于流体的视图层)