0

我是 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 完全陌生,这一切有点难以理解。请务必提及,即使任何事情都是微不足道和显而易见的。

谢谢 :)

4

1 回答 1

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");
    }

}

现在您需要一个模板文件,该模板文件位于基于 Controller 和 Action 的目录中。因此,在此示例中,您需要一个模板文件my_extension/Resources/Private/Templates/Test/(其中“Test”是控制器名称),该文件被称为 action Sample.html

要全面了解您的扩展,您还需要my_extension/Resources/Private/Layouts/Default.html包含内容的 Layout 文件

<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>

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

于 2013-05-06T15:26:42.600 回答