2017-12-18 18 views
0

私はTYPO3のフロントエンドプラグインを持っています。そして今、 "リスト"コントローラを表示する2つの方法が必要です。どうすればこれを達成できますか?TYPO3のさまざまなレイアウトでフロントエンドプラグインを表示する方法は?

+1

いくつかの方法があります。質問:編集者がディプレイの種類を制御/設定できる必要がありますか?このような場合、この設定をプラグインとともにテーブルtt_contentに保存する必要があります。 feks pi_flexform。 – jokumer

+0

はいあなたはページにどのプラグインを追加するかを決めることができるはずです – Felix

答えて

2

フロントエンドプラグインには、以下のようにflexformを使用する必要があります。

あなたのext_tables.phpファイルにあります。

//extenstion name 
$extensionName = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase($_EXTKEY); 

//plugin integration 
$frontendpluginName = 'Plugin name'; 
$pluginSignature = strtolower($extensionName) . '_'.strtolower(
    $frontendpluginName 
); 

$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform'; 
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
    $pluginSignature, 
    'FILE:EXT:' . $_EXTKEY . '/Configuration/FlexForms/configure.xml' 
); 

は今、このパス/Configuration/FlexForms/

<T3DataStructure> 
    <sheets> 
     <!-- 
      ################################ 
       SHEET General Settings 
      ################################ 
     --> 
     <sDEF> 
      <ROOT> 
       <TCEforms> 
        <sheetTitle>General</sheetTitle> 
       </TCEforms> 
       <type>array</type> 
       <el> 
        <!-- View --> 
        <settings.layout> 
         <TCEforms> 
         <label>Select Frontend Layout</label> 
         <config> 
          <type>select</type> 
          <items> 
          <numIndex index="0"> 
           <numIndex index="0">Layout 1</numIndex> 
           <numIndex index="1">1</numIndex> 
          </numIndex> 
          <numIndex index="1"> 
           <numIndex index="0">Layout 2</numIndex> 
           <numIndex index="1">2</numIndex> 
          </numIndex> 
          </items> 
          <size>10</size> 
          <minitems>0</minitems> 
          <maxitems>1</maxitems> 
          <suppress_icons>1</suppress_icons> 
         </config> 
         </TCEforms> 
        </settings.layout> 
       </el>    
      </ROOT> 
     </sDEF> 
    </sheets> 
</T3DataStructure> 

以下のようなフロントエンドのテンプレートファイルでこの値を使用する上でconfigure.xmlファイルを作成します。

<f:if condition="{settings.layout} == 1"> 
    <f:then> 
    Layout 1 html 
    </f:then> 
    <f:else> 
    Layout 2 html 
    </f:else> 
</f:if> 
1

私は100%ではないですので、これはまだ関連している間に、これを使用していない、APIドキュメントは、あなたはまだ、このかかわらずを行うことができますことを示唆している:

public function listAction() { 

    {your_code} 

    $this->view->setTemplatePathAndFilename(
      'typo3conf/ext/' . 
      $this->request->getControllerExtensionKey() . 
      '/{path_to}/OtherTemplate.html'); 

    $this->view->assign(...); 

} 

あなたがする必要がある場合プラグインベースでこれを切り替えると、設定変数を読み込んで使用するテンプレートが決まります。

+0

と、別のアクションを呼び出すときにプラグインにどのように伝えますか? – Felix

+1

上記の答えに記載されているように、FlexFormを使用して設定を追加することができます。 – mrwienh

関連する問題