2013-05-06 98 views
0

我都是新來的Typo3。 我創建/ typo3conf/EXT稱爲myExtension擴展/ myExtensionTypo3自定義擴展

該文件夾結構如下

-Classes 
--ViewHelpers 
    --myExtensionViewHelper.php 
-Resources 
--Resources 
    --Private 
    --Templates 
    --myExtension 
    --index.html 

myExtensionViewHelper.php具有下面的代碼

<?php 

/** 
* This class is a demo view helper for the Fluid templating engine. 
* 
* @package TYPO3 
* @subpackage Fluid 
* @version 
*/ 
class Tx_myExtension_ViewHelpers_myExtensionViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper { 

    /** 
    * Renders some classic dummy content: Lorem Ipsum... 
    * 
    * @param int $length The number of characters of the dummy content 
    * @validate $length IntegerValidator 
    * @return string dummy content, cropped after the given number of characters 
    */ 
    public function render($length) { 
     $dummyContent = 'Lorem ipsum dolor sit amet.'; 
     return substr($dummyContent, 0, $length); 
    } 
} 

?> 

index.html文件包含

{namespace myExtension=Tx_myExtension_ViewHelpers} 

<f:layout name="Default" /> 
<f:section name="content"> 

<h1> 
    <myExtension:myExtension length="5" /> 
</h1> 

</f:section> 

在我的typo3 bac肯德,我創建了一個名爲「Mango」的頁面,並在其中添加了這個插件。

我有一個模板,佈局和template.html的網頁「芒果」。

現在該怎麼做才能將文件Index.html的輸出導入到這個頁面?

我正在做這個對嗎? 除了這裏提到的東西外,我還沒有做過其他任何事情。

我完全是Typo3的新手,而這一切都有點難以理解。即使有任何微不足道和明顯的事情,也請提一提。

謝謝:)

回答

3

你需要它裝載模板系統,並顯示模板的控制器。 您定義的ViewHelper不需要獲得結果,這些只是您可以在模板中使用的自定義模板類。

控制器示例:

文件:類/控制器/ TestController.php

class Tx_MyExtension_Controller_TestController extends Tx_Extbase_MVC_Controller_ActionController { 
    /** 
    * action sampleAction 
    * 
    * @return void 
    */ 
    public function sampleAction() { 
     //Add variables to template 
     $this->view->assign("sample_var", "sample value"); 
    } 

} 

現在你需要一個模板文件,該文件是基於控制器和動作的目錄。因此,在本示例中,您需要一個my_extension/Resources/Private/Templates/Test/(其中「測試」是控制器名稱)的模板文件,其名稱與動作Sample.html類似。

要獲得環繞你的擴展,你還需要將版式文件my_extension/Resources/Private/Layouts/Default.html與內容

<div class="tx-my-extension"> 
    <f:render section="main" /> 
</div> 

此文件被稱爲在你的模板<f:layout name="Default" /><f:render section="main" />是內容將被顯示的地方。

下一步是允許在擴展中的操作。在根目錄轉到您ext_localconf.php並添加

Tx_Extbase_Utility_Extension::configurePlugin(
    $_EXTKEY, 
    'Myextension', 
    array(
     'Test' => 'sample', // 'ControllerName' => 'ActionName, OtherAction' 
    ), 
    // non-cacheable actions 
    array(
     'Test' => 'sample', // 'ControllerName' => 'ActionName, OtherAction' 
    ) 
); 

最後一步是創建模板文件my_extension/Resources/Private/Templates/Test/Sample.html與內容

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 

<f:layout name="Default" /> 

<f:section name="main"> 
    Your sample var: {sample_var} 
</f:section> 

現在你應該添加插件到頁面後看到的結果。

+0

非常感謝。將試試:) – dora 2013-05-06 16:23:15

+0

我做到了。我創建了一個新頁面,並在內容部分添加了插件。 >編輯>插件並選擇插件。 我是否還需要創建一個模板並在其中提及它? – dora 2013-05-07 06:27:52

+0

當您使用「擴展生成器」創建擴展時可能會更好。在那裏創建一個模型,保存並觀看魔術。 – Merec 2013-05-07 07:09:37