3

extbase/fluid 拡張機能の作成で奇妙な問題が発生しています。TYPO3 6.1を使用しています

開発サーバーでバックエンド モジュールを使用して拡張機能を作成しました (製品と同じ構成/ハードウェア)。モジュールはテンプレートへのパスで完全に機能します:

myext/Resources/Private/Backend/Templates
myext/Resources/Private/Backend/Layouts
myext/Resources/Private/Backend/Partials

この後、拡張機能の zip を ext マネージャーにダウンロードし、インストーラーを製品サーバーにダウンロードしました。モジュールがテンプレートを見つけられないため、拡張機能を使用できません。同じ方法で拡張機能を構成しました。テンプレートは正しいパスにあります。

フォルダーを親レベルに移動することをテストします。

myext/Resources/Private/Templates
myext/Resources/Private/Layouts
myext/Resources/Private/Partials

これで動きますが、モジュールの設定で「Backend/」フォルダへの正しいパスを指定しています。

フォルダーを Private フォルダーに移動するのではなく、Private/Backend フォルダーで実行したい。

拡張静的テンプレートを Web サイトのルート 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}
    }
}
4

5 に答える 5

6

主な問題は、ルート パスにテンプレートがないと、typoscript 構成がストレージ フォルダーまたはページに読み込まれないことです。

説明: ext_typoscript_setup、静的テンプレート、または php を介して、拡張機能に設定するタイポスクリプト構成は、常にページのルートのどこかにシステム レコード テンプレートが必要です。そうしないと、レンダリングされず、extbase 拡張機能のパス設定が行われないため、デフォルトのレイアウト、テンプレート、および部分パスが設定され、スクリプトが検索する場所になります。

デフォルトは次のとおりです。

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

バックエンドモジュールでこれらをオーバーライドする必要がある場合は、コントローラーにビューの設定を直接挿入することで、その問題を回避できます。

<?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(){

}

}

これがお役に立てば幸いです

于 2013-12-18T15:53:30.383 に答える
4

@benjamin-kott が説明しているように、TYPO3 のバックエンド モジュール構成を最初にロードする必要があります。残念ながら、拡張機能のタイポスクリプト ファイルは、デフォルトでは自動的に読み込まれません。

TYPO3 にこのタイポスクリプト ファイルを認識させる 1 つの方法は、拡張機能のルート フォルダーに 2 つのファイルを作成することです。

  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 Object Browser を使用して、セットアップと定数がロードされているかどうかを確認できます。

于 2015-11-25T08:43:13.673 に答える
2

Typo3temp/Core/Cache (またはそのようなもの) であっても、すべてのキャッシュを消去してみてください

于 2013-12-12T14:29:23.113 に答える
2

私はあなたの設定を本当に知りませんが、通常は /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',
        )
    );
}
于 2013-05-29T07:37:14.377 に答える