Модуль расширения TYPO3 Extbase. Проблема с шаблоном

У меня возникла странная проблема с расширением extbase / fluid. Я использую TYPO3 6.1

Я сделал расширение с бэкэнд-модулем на моем dev-сервере (та же конфигурация / оборудование, что и prod). Модуль отлично работает с контуром шаблона:

myext / Ресурсы / Private / Backend / Шаблоны
myext / Ресурсы / Private / Backend / Макеты
myext / Ресурсы / Private / Backend / Partials

После этого я загрузил zip-файл моего расширения в диспетчер ext, а затем установщик на prod-сервере. Теперь я не могу использовать мое расширение, потому что модуль не находит шаблоны. Я настроил расширение таким же образом. Шаблоны находятся на правильном пути.

Я проверяю перенос моей папки на родительский уровень:

myext / Ресурсы / Частным лицам / Templates
myext / Ресурсы / Частные лица / Макеты
myext / Ресурсы / Private / Partials

При этом он работает, но в конфигурации модуля я указываю правильный путь к папке «Backend /».

Я хочу переместить мою папку в личную папку, я хочу, чтобы она запускалась в папке Private / Backend.

Я включил статический шаблон расширения в шаблон корневого TS сайта.

Вот константы:

module.tx_myext { view { # cat=module.tx_myext/file; type=string; label=Path to template root (BE) templateRootPath = EXT:wng_myext/Resources/Private/Backend/Templates/ # cat=module.tx_myext/file; type=string; label=Path to template partials (BE) partialRootPath = EXT:wng_myext/Resources/Private/Backend/Partials/ # cat=module.tx_myext/file; type=string; label=Path to template layouts (BE) layoutRootPath = EXT:wng_myext/Resources/Private/Backend/Layouts/ } persistence { # cat=module.tx_myext//a; type=string; label=Default storage PID storagePid = } } 

И вот настройка:

 module.tx_myext { persistence { storagePid = {$module.tx_myext.persistence.storagePid} } view { templateRootPath = {$module.tx_myext.view.templateRootPath} partialRootPath = {$module.tx_myext.view.partialRootPath} layoutRootPath = {$module.tx_myext.view.layoutRootPath} } } 

Попробуйте очистить все кеши, даже в typo3temp / Core / Cache (или что-то в этом роде)

Основная проблема заключается в том, что конфигурации typoscript не будут загружаться в папки хранения или страницы без шаблона в корневом пути.

Объяснение: конфигурация typoscript, установленная для вашего расширения, в ext_typoscript_setup, статическом шаблоне или через php, всегда будет нужен шаблон системной записи где-нибудь в корне страницы. в противном случае он не будет отображаться – и никакие настройки пути для ваших extbase-расширений не произойдут, поэтому установлен макет по умолчанию, шаблон и частичный путь, и это место, где скрипт будет искать ваши вещи.

По умолчанию:

 /Private/Resources/Layout/ /Private/Resources/Partials/ /Private/Resources/Templates/@Controllername/@Actionname 

если вам нужно переопределить их для вашего backendmodule, вы можете обойти эту проблему, введя параметры для представления непосредственно в своем контроллере.

 <?php namespace VendorKey\ExtensionName\Controller; class SettingsController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController { /** * Initializes the controller before invoking an action method. * @return void */ protected function initializeAction() { $this->setBackendModuleTemplates(); } /** * Set Backend Module Templates * @return void */ private function setBackendModuleTemplates(){ $frameworkConfiguration = $this->configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK); $viewConfiguration = array( 'view' => array( 'templateRootPath' => 'EXT:extension_name/Resources/Private/Templates/Modules/', 'partialRootPath' => 'EXT:extension_name/Resources/Private/Partials/Modules/', 'layoutRootPath' => 'EXT:extension_name/Resources/Private/Layouts/Modules/', ) ); $this->configurationManager->setConfiguration(array_merge($frameworkConfiguration, $viewConfiguration)); } /** * action settings * @return void */ public function settingsAction(){ } } 

я надеюсь, что это поможет greetz benji

Как поясняет @ benjamin-kott, сначала необходимо загружать конфигурации базовых модулей TYPO3. К сожалению, файлы typoscript расширения автоматически не загружаются по умолчанию.

Один из способов сделать TYPO3 осведомленным об этом файле typoscript – создать два файла в корневой папке расширения:

  1. ext_typoscript_constants.txt

     <INCLUDE_TYPOSCRIPT: source="FILE:EXT:myext/Configuration/TypoScript/constants.txt"> 
  2. ext_typoscript_setup.txt

     <INCLUDE_TYPOSCRIPT: source="FILE:EXT:myext/Configuration/TypoScript/setup.txt"> 

(вид очевидный, но: вы должны заменить этот путь своим)

После добавления этих файлов вам необходимо переустановить расширение, чтобы увидеть изменения. Вы можете использовать браузер объектов TypoScript, чтобы узнать, загружаются ли ваши настройки и константы.

Я не знаю, как установить ur, но нормальный вы должны настроить эти пути в /Configuration/TypoScript/setup.txt, как это

 module.tx_yourext { persistence { storagePid = {$pid} } view { templateRootPath = {$templateRootPath} partialRootPath = {$partialRootPath} layoutRootPath = {$layoutRootPath} } } 

Эта конфигурация не используется до тех пор, пока вы не добавите статический шаблон расширения. Также вы должны добавить эти строки в файл ext_tables.php

 if (TYPO3_MODE === 'BE') { Tx_Extbase_Utility_Extension::registerModule( $_EXTKEY, 'web', // Main area 'mod1', // Name of the module '', // Position of the module array( // Allowed controller action combinations 'Controller' => 'actionName' ), array( // Additional configuration 'access' => 'user,group', 'icon' => 'EXT:my_ext/ext_icon.gif', 'labels' => 'LLL:EXT:' . $_EXTKEY . '/Resources/Private/Language/locallang_mod.xml', ) ); } 

Хотя эта ветка довольно старая, я хочу показать вам, ребята, мое решение для TYPO3 7.6 LTS.

Сначала вам нужно включить ваши файлы TypoScript через Template > Edit whole record > Includes .

И в вашем TypoScript вам нужно использовать templateRootPaths.0 вместо templateRootPath :

 module.tx_extension { view { templateRootPaths.0 = EXT:extension/Resources/Private/Backend/Templates/ partialRootPaths.0 = EXT:extension/Resources/Private/Backend/Partials/ layoutRootPaths.0 = EXT:extension/Resources/Private/Backend/Layouts/ } }