Как встраивать модули на страницы?
Я создал свое собственное расширение и модули. Я могу просматривать модули нормально, перейдя по их URL. Однако теперь я хочу встроить их в страницу, как класс контента. Как мне это сделать?
Спасибо!
2 ответа
Невозможно "встроить" модуль в страницу, кроме случаев, когда вызываемый модуль делает это на уровне PHP.
Например, можно написать это:
$module = eZModule::findModule( 'content' );
$result = $module->run( 'history', array( 1 ) );
Но если вы хотите отобразить что-либо, связанное с вашим модулем, вы должны объявить, что ваше расширение содержит несколько шаблонов и переопределить некоторые шаблоны.
Допустим, вы хотели бы создать свой собственный модуль регистрации.
Шаг 1, возможно, вам придется добавить это в your_extension/settings/design.ini.append.php
:
[ExtensionSettings]
DesignExtensions[]=your_extension
Теперь вы можете добавлять свои собственные user/register.tpl
Этот шаблон содержит такую форму:
<form action={'/user/register'|ezurl}...
Так что вам просто нужно скопировать шаблон, но с:
<form action={'/your_module/register'|ezurl}...
Теперь предположим, что ваш шаблон должен отображать некоторую информацию, связанную с вашим модулем. Возможно, вам придется определить некоторые функции извлечения, чтобы вы могли написать что-то вроде этого:
{def $nb = fetch('your_module','beta_accounts')}
<h2>Hurry up! There are only {$nb|wash} available accounts for free!</h2>
<form action={'/your_module/register'|ezurl} method="POST">
...
</form>
Я надеюсь, что это поможет...
Вы должны создать шаблон оператора или функцию и использовать их в шаблоне.