2009-11-23 3 views
0

Я создал собственное расширение и модули. Я могу прекрасно просматривать модули, перейдя по их URL-адресу. Тем не менее, теперь я хочу внедрить их на страницу, как класс контента. Как мне это сделать?Как встраивать модули на страницы?

Спасибо!

+0

Не могли бы вы быть более точным на то, что вы хотите сделать и то, что ваш модуль делает? – foobar

ответ

0

Вы должны create template operator или использовать их в шаблоне.

+0

Операторы шаблонов предназначены для форматирования данных (например, в верхнем регистре()). Функции Fetch предназначены для извлечения данных. Модули больше, я думаю. – foobar

0

Невозможно «внедрить» модуль на странице, за исключением того, что вызываемый модуль выполняет его на уровне 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}... 

Теперь предположим, что ваш шаблон должен отображать некоторую информацию, относящуюся к вашему модулю. Вы, возможно, придется define some fetch functions так что вы могли бы написать что-то вроде этого:

{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> 

Я надеюсь, что это поможет ...

Смежные вопросы