我是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完全不熟悉,所有这一切都有点难以理解。即使有任何微不足道的事情,也要提及。
谢谢:)
答案 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>
现在,您应该在将插件添加到页面后看到结果。