Можно ли вызвать функцию в контроллере на основе определенной страницы без плагина внешнего интерфейса? - PullRequest
0 голосов
/ 30 апреля 2019

Когда я открываю сайт в Typo3, я хочу, чтобы сайт вызывал определенный контроллер для этого сайта, а затем выводил макет. Желательно с таким же именем, как «TestController.php» для контроллера и «Test.html» для макета.

Я знаю, что это возможно с помощью плагина FrontEnd. Проблема с плагином FrontEnd заключается в том, что мне нужно добавить плагин на сайт, который я хочу. Что я действительно хочу, так это написать расширение, которое после установки будет работать на всех сайтах.

Возможно ли это сделать в typo3? Может быть, с некоторыми файлами конфигурации?

Ответы [ 3 ]

0 голосов
/ 02 мая 2019

Добро пожаловать в StackOverflow.

С TYPO3 v9 Middleware пришли в Core, так что теперь у вас есть возможность запускать код на любой позиции рендеринга страницы, которую вы хотите. Хорошую документацию и пример вы можете найти здесь: https://usetypo3.com/psr15-middleware-in-typo3.html

Просто добавьте свое собственное промежуточное программное обеспечение, вызывайте код каждый раз, когда выполняется какое-либо условие. Без плагина и на каждой странице.

Осторожно, это круто! : -)

0 голосов
/ 03 мая 2019

В настоящее время я также могу порекомендовать промежуточное программное обеспечение, как советовал Томас Леффлер. Но, насколько мне известно, вы должны идентифицировать все страницы, где вы хотите что-то сделать, по идентификатору страницы (что на самом деле не кажется элегантным). И на многих страницах «main-function» промежуточного программного обеспечения, которая называется «process ()», если я правильно помню, становится действительно длинной. Так что Iam также ищет автоматическую компоновку на основе имен <-> Controller-Configuration какого-либо вида.

Однажды я нашел интересную информацию на следующем сайте

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)

Этот сайт посвящен расширению Flux, но я надеялся, что может быть какое-то глобальное соглашение.

Таким образом, любая новая идея или часть информации в связи с глобальной конфигурацией контроллера вида без необходимости использовать TYPO3-бэкэнд для соединения обоих компонентов была бы действительно полезной! (с использованием TYPO3 9 и видового слоя на основе жидкости)

0 голосов
/ 30 апреля 2019

Вы можете добавить плагины TYPO3 также через TypoScript и USER или USER_INT объект содержимого. С этим легко иметь плагин на любой странице.

Известное расширение новостей дает хороший пример:

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
  }
}

Для получения дополнительной информации о USER или USER_INT ознакомьтесь с официальной документацией .

...