Typo3自定义扩展

时间:2013-05-06 14:31:53

标签: typo3 extbase typo3-flow

我是Typo3的新手。 我在/ typo3conf / ext / myExtension

中创建了一个名为myExtension的扩展

文件夹结构如下

-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后端,我创建了一个名为“Mango”的页面并将此插件包含在其中。

我有一个网页“Mango”的模板,布局和template.html。

现在我该怎么做才能将Index.html文件的输出放到这个页面中?

我这样做了吗? 除了这里提到的东西,我还没有做任何其他事情。

我对Typo3完全不熟悉,所有这一切都有点难以理解。即使有任何微不足道的事情,也要提及。

谢谢:)

1 个答案:

答案 0 :(得分:3)

您需要一个加载模板系统并显示模板的控制器。 您定义的ViewHelper不需要获得结果,这些只是您可以在模板中使用的自定义模板类。

控制器示例:

文件:Classes / Controller / 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");
    }

}

现在您需要一个基于Controller和Action的目录中的模板文件。因此,在此示例中,您需要my_extension/Resources/Private/Templates/Test/中的模板文件(其中“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>

现在,您应该在将插件添加到页面后看到结果。

相关问题