Пользовательские расширения 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>

Теперь вы должны увидеть результат после добавления плагина на страницу.

Другие вопросы по тегам