2013-05-06 188 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