red_bug 0 Опубликовано: 26 октября 2012 Рассказать Опубликовано: 26 октября 2012 При разработке собственного модуля столкнулся с ситуацией, когда функция msgbox не работает. Делаешь свой модуль, подключаешь при помощи {include file="<>"}, а msgbox() не работает. Цитата Ссылка на сообщение Поделиться на других сайтах
ovpmusic2 0 Опубликовано: В субботу в 14:32 Рассказать Опубликовано: В субботу в 14:32 Та же проблема. Похоже с 2012 года никто не нашел решения? Цитата Ссылка на сообщение Поделиться на других сайтах
TeraMoune 62 Опубликовано: В субботу в 21:58 Рассказать Опубликовано: В субботу в 21:58 @ovpmusic2 Поскольку вызов php скриптов через тег {include} вызывается в функциях compile каждого шаблона то в main.tpl не получится использовать функцию msgbox. Нужно подключать в других шаблонах которые раньше main.tpl создаются. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 177 Опубликовано: вчера в 04:08 Рассказать Опубликовано: вчера в 04:08 Все она работает. Просто кто то не читает документацию и не смотрит что делает фукнция которую они пытаются выполнить. Итак смотрим документацию https://dle-news.ru/extras/online/index.html?modules_include.html и что там написано что обязательно нужно сделать чтобы вывести информацию из своего модуля уже в шаблоне на месте этого тега. Потом смотрим фукнцию msgbox что она делает? А теперь внимание вопрос: так какую строчку нужно написать в своем модуле после вызова вызова msgbox чтобы увидеть результат? Прямой ответ не даю, подумайте, потому что вы программисты которые пишут свой код, а значит должны думать. Направление куда смотреть я вам дал. Цитата Ссылка на сообщение Поделиться на других сайтах
ovpmusic2 0 Опубликовано: 7 часов назад Рассказать Опубликовано: 7 часов назад Получилось сделать только так: При подключении в main.tpl таким образом: [aviable=faq]{include file="engine/modules/mymod.php"}[/aviable] Создаем файл engine/modules/mymod.php и пишем в своем модуле следующее: <?php $error = "Test message";//текст сообщения $title = "Message Box";//текст заголовка $tpl_2 = new dle_template(); $tpl_2->dir = TEMPLATE_DIR; $tpl_2->load_template( 'info.tpl' ); $tpl_2->set( '{error}', $error ); //текст для макроса {error} $tpl_2->set( '{title}', $title ); //текст для макроса {title} $tpl_2->compile( 'info' ); $tpl_2->clear(); $tpl->result['info'] .= $tpl_2->result['info']; echo $tpl->result['info']; echo "<p><b>Тестовый модуль</b></p>"; ?> Тогда при обращении к адресу http://site.ru/index.php?do=faq модуль выводит сообщение нормально. Если всё, что написано до echo записать как функцию, равно как и обращение к стандартной функции msgbox - работать не будет, можете проверять... Хотя, хотелось бы не дублировать код функции msgbox в своих модулях, а использовать его из файла functions.php. Но почему-то так не хочет выводить сообщение... Может у кого-то есть более компактное решение? Думаю многие будут признательны! Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 177 Опубликовано: 7 часов назад Рассказать Опубликовано: 7 часов назад 26 минут назад, ovpmusic2 сказал: Получилось сделать только так Неправильно сделали. Не нужен такой длинный и избыточный код. Достаточно было вызвать msgbox а после вывести echo $tpl->result['info']; Все. И это прекрасно работает. Цитата Ссылка на сообщение Поделиться на других сайтах
ovpmusic2 0 Опубликовано: 5 часов назад Рассказать Опубликовано: 5 часов назад 1 час назад, celsoft сказал: Неправильно сделали. Не нужен такой длинный и избыточный код. Достаточно было вызвать msgbox а после вывести echo $tpl->result['info']; Все. И это прекрасно работает. Изначально делал именно так как вы и написали. Не работает у меня. Почему пока не понял. Если раскопаю причину - напишу, чтобы другим было проще... Но всё равно, Спасибо! Цитата Ссылка на сообщение Поделиться на других сайтах
ovpmusic2 0 Опубликовано: 1 час назад Рассказать Опубликовано: 1 час назад В общем, чтобы разобраться в проблеме вывода msgbox, установил чистый DLE без дополнительных модулей или хаков и попытался сделать так, как советует уважаемый Celsoft. Вот видео, в котором видно, что это не работает: https://disk.yandex.ru/i/EBqTiEnDIQsiYg Так что если у разработчика нет решения, придется использовать избыточный код 😔 Или всё-таки есть решение??? Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.