• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Информация Написания и вывод. Собственный модуль DLE?

usergeyv

Знаток
Регистрация
5 Июл 2013
Сообщения
152
Реакции
25
Написал модуль , делаю
PHP:
 echo $rezult;
все выводит(нужный мне массив), а когда хочу вывести тегом
PHP:
$tpl->set( '{id}', $rezult['id_news'] );
просто выводит тег {id} в короткой новости(не обрабатывается модулем), ЧТО ДЕЛАЮ НЕ ТАК?
 
Да много чего...

1) reSult
2) echo не умеет выводить массив. Если $rezult содержит массив - то должен выводиться print_r(), а раз выводится echo - то это просто не массив.
3) Раз у тебя {id} выводится как "{id}" - значит ты не тот файл правишь. Даже если у тебя $rezult['id_news'] пустая - $tpl->set должна заменить у тег на пустое множество, выдав Notis...

Что говорит var_dump($rezult) ? Тут Вам и проверка типа, и содержимого
Не плохо бы описать какие файлы правишь, на какой странице ожидаешь получить результат?
 
Да много чего...

1) reSult
2) echo не умеет выводить массив. Если $rezult содержит массив - то должен выводиться print_r(), а раз выводится echo - то это просто не массив.
3) Раз у тебя {id} выводится как "{id}" - значит ты не тот файл правишь. Даже если у тебя $rezult['id_news'] пустая - $tpl->set должна заменить у тег на пустое множество, выдав Notis...

Что говорит var_dump($rezult) ? Тут Вам и проверка типа, и содержимого
Не плохо бы описать какие файлы правишь, на какой странице ожидаешь получить результат?
Согласен, не правильно описал суть.
Подключаю в шортстори
Код:
[xfgiven_id]
{include file="engine/modules/my.php?id=[xfvalue_id]"}
[/xfgiven_id]
Делаю print_r() в my.php и массив показывает.
в my.php
PHP:
$rezult = json_decode($data, true);
//var_dump ($rezult);

//тут результат
// exit;
   
    $tpl->set( '{id}', $rezult['id_news'] );
    $tpl->set( '{name}', $rezult['name']);
    $tpl->set( '{size}', $rezult['size_file']);
    
   // $tpl->clear();
Как сделать, что бы теги {id} {name} {size} заработали в короткой новости?

Раз у тебя {id} выводится как "{id}" - значит ты не тот файл правишь. Даже если у тебя $rezult['id_news'] пустая - $tpl->set должна заменить у тег на пустое множество
видимо нужно править show.short.php? Ели я верно думаю то перед
Код:
$tpl->compile( 'content' );
втавить
Код:
include ENGINE_DIR . 'engine/modules/my.php?id=что то';

, то как передать параметры?

Еще не нашел решения, прошу помощи...
 
Последнее редактирование модератором:
Хе-хе... Ты перепутал всё, что только можно )))

PHP:
{include file="engine/modules/my.php?id=[xfvalue_id]"}
Я честно никогда не эксперементировал таким образом, не уверен, что это вообще отработает корректно, но смысл такой...

При подключении таким образом мода - он цепляется не к show.short.php, а работает отдельно и независимо.
По сути, подключаемый модуль работает как тег. Строка подключения заменится на результат выполнения модуля.

По этой причине модуль не должен определять новые переменные, а делать вывод на экран через echo/print.

У тебя есть 2 варианта:
1) Если ты хочешь добавить именно теги в короткую новость - тебе надо править show.short.php и тогда оно будет работать.
Но тут будет сложность с передачей модулю параметра дополнительного поля - нужно будет делать дополнительный обработчик.

2) Непосредственно в модуле сделать вывод чего-либо на экран через echo. К примеру так:
PHP:
echo $rezult['name'];
Можно использовать и шаблонизатор, но ты должен подгрузить новый шаблон, вывести в него все теги, затем сделать $tpl->compile( 'XXX' );, а затем опять же вывести на экран через echo $tpl->result['XXX'];

P.s. и да, после 13.0 лучше все изменения делать через плагины, иначе потом могут быть проблемы...
 
Хе-хе... Ты перепутал всё, что только можно )))

PHP:
{include file="engine/modules/my.php?id=[xfvalue_id]"}
Я честно никогда не эксперементировал таким образом, не уверен, что это вообще отработает корректно, но смысл такой...

При подключении таким образом мода - он цепляется не к show.short.php, а работает отдельно и независимо.
По сути, подключаемый модуль работает как тег. Строка подключения заменится на результат выполнения модуля.

По этой причине модуль не должен определять новые переменные, а делать вывод на экран через echo/print.

У тебя есть 2 варианта:
1) Если ты хочешь добавить именно теги в короткую новость - тебе надо править show.short.php и тогда оно будет работать.
Но тут будет сложность с передачей модулю параметра дополнительного поля - нужно будет делать дополнительный обработчик.

2) Непосредственно в модуле сделать вывод чего-либо на экран через echo. К примеру так:
PHP:
echo $rezult['name'];
Можно использовать и шаблонизатор, но ты должен подгрузить новый шаблон, вывести в него все теги, затем сделать $tpl->compile( 'XXX' );, а затем опять же вывести на экран через echo $tpl->result['XXX'];

P.s. и да, после 13.0 лучше все изменения делать через плагины, иначе потом могут быть проблемы...
я так примерно и это понимал...знаю что подключенный модуль таким способом вывод чего-либо на экран через echo.
вот что то типа
Можно использовать и шаблонизатор, но ты должен подгрузить новый шаблон, вывести в него все теги, затем сделать $tpl->compile( 'XXX' );, а затем опять же вывести на экран через echo $tpl->result['XXX'];
не знаю как реализовать...
 
Во вложении 2 варианта...

1) test.xml - плагин, который правит show.short.php
2) test.php - модуль, который подключается через {include file="..."}

Соответственно...

test.xml - заходим в управление плагинами и просто заливаем его.
Далее в shortstory.tpl Нам доступен тег {test}

test_file - заливаем содержимое в корень, рассчитано на стандартный шаблон
В shortstory.tpl вставляем: {include file="/engine/modules/test.php"}

Во втором варианте в модуле используется шаблонизатор...

Код, естественно, примитивен :)

P.s. второй вариант было лень запихивать в плагины, для понимания работы это не требуется. Но тебе рекомендую всё делать уже через управление плагинами
 

Вложения

  • test.zip
    688 байт · Просмотры: 11
  • test_file.zip
    1.001 байт · Просмотры: 13
По этой причине модуль не должен определять новые переменные, а делать вывод на экран через echo/print.
Никто вам не мешает сделать echo $tpl->result['my_tag_content'] в engine/modules/my.phpю А до вывода результата определять свои теги и подключать tpl файла шаблона
 
-=MaD_DoG=-, загляни в приложенные мной файлики ;)
 
Назад
Сверху