Пользовательские расширения 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 я создал страницу под названием "Mango" и включил в нее этот плагин.

У меня есть шаблон, макет и template.html для веб-страницы «Манго».

Что мне теперь делать, чтобы получить вывод файла Index.html на эту страницу?

Я правильно это делаю? Я не делал ничего, кроме упомянутого здесь.

Я совершенно новичок в Typo3, и все это немного сложно понять. Пожалуйста, упомяните, даже если что-то тривиальное и очевидное.

Спасибо :)


person dora    schedule 06.05.2013    source источник


Ответы (1)


Вам нужен контроллер, который загружает систему шаблонов и отображает шаблон. Определенный вами 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");
    }

}

Теперь вам нужен файл шаблона, который находится в каталоге, основанном на контроллере и действии. Итак, в этом примере вам понадобится файл шаблона в 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>

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

person Merec    schedule 06.05.2013
comment
Большое спасибо. Попробую :) - person dora; 06.05.2013
comment
Я это сделал. Я создал новую страницу и добавил плагин в контентную часть. Страница ›Редактировать› Плагин и выберите Плагин. Нужно ли мне также создать шаблон и упомянуть его там? - person dora; 07.05.2013
comment
Возможно, будет лучше, если вы создадите расширение с помощью конструктора расширений. Создайте там модель, сохраните и наблюдайте за волшебством. - person Merec; 07.05.2013
comment
Скорее всего, это поможет вам быстрее приступить к работе;) - person pgampe; 07.05.2013