Пользовательские расширения Typo3
Я все новичок в Typo3. Я создал расширение под названием myExtension в /typo3conf/ext/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 я создал страницу под названием "Манго" и включил в нее этот плагин.
У меня есть шаблон, макет и template.html для веб-страницы "Манго".
Теперь, что я должен сделать, чтобы получить вывод файла Index.html на эту страницу?
Я делаю это правильно? Я не сделал ничего другого, кроме упомянутых здесь вещей.
Я совершенно новичок в Typo3, и все это немного сложно понять. Пожалуйста, укажите, даже если что-нибудь тривиально и очевидно.
Спасибо:)
1 ответ
Вам нужен контроллер, который загружает систему шаблонов и отображает шаблон. Определенный вами 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
,
Чтобы обернуть ваше расширение, вам также нужен файл Layout 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>
Теперь вы должны увидеть результат после добавления плагина на страницу.