bykino 1 Опубликовано: 27 марта Рассказать Опубликовано: 27 марта Добрый день, форумчане! Подскажите, пожалуйста, как и где редактировать DLEPush, которые внесены в DLE 17.1 Например (длительность и т.д), может есть некоторые нюансы или дополнение, буду благодарен! Цитата Ссылка на сообщение Поделиться на других сайтах
ovpmusic2 0 Опубликовано: 29 марта Рассказать Опубликовано: 29 марта (изменено) 27.03.2024 в 11:59, bykino сказал: Добрый день, форумчане! Подскажите, пожалуйста, как и где редактировать DLEPush, которые внесены в DLE 17.1 Например (длительность и т.д), может есть некоторые нюансы или дополнение, буду благодарен! Смотри здесь: ../engine/classes/js/dle_js.js Стили для DLEPush настраиваются в .css согласно изменениям в шаблонах для новой версии. Меня вот другой вопрос интересует: Как использовать вывод DLEPush из своего модуля на .php Пытался вывести так: <?php ... $accnum = 123456; ... ?> <script> var acc = <?php echo $accnum ?>; if( !acc ) DLEPush.warning('Введите номер счета, пожалуйста', 'Внимание'); </script> Пробовал так: <?php ... $accnum = 123456; ... echo <<<HTML <script> var acc = {$accnum}; if( !acc ) DLEPush.warning('Введите номер счета, пожалуйста', 'Внимание'); </script> HTML; ?> DLEPush не выводится. Работает только если подключать через шаблон. Например в шаблоне main.tpl такая конструкция выводит сообщение в DLEPush для неавторизованных: [group=5] <script> window.addEventListener('load', ()=> { const uwp = sessionStorage.getItem('userwelcomeprofitea'); if (!uwp) DLEPush.warning('Войдите на сайт или <a href="/?do=register">зарегистрируйтесь</a> и вы сможете пользоваться всеми возможностями на сайте', 'Вы не авторизованы'); sessionStorage.setItem('userwelcomeprofitea',1); }); </script> [/group] Если это же самое вставить в PHP файл модуля (через echo), то ничего не выводится... DLEPush можно только через шаблоны выводить или из PHP файла модуля тоже можно? Подскажите куда копать, что-то никак не могу разобраться... Изменено 29 марта пользователем ovpmusic2 Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 29 марта Рассказать Опубликовано: 29 марта 12 минут назад, ovpmusic2 сказал: Подскажите куда копать, что-то никак не могу разобраться... Копать нужно в направлении того, что выполнять скрипт нужно после загрузки скриптов. А вы скорее всего пытаетесь выполнить его до загрузки. А где вы выводите в PHP или в шаблоне неважно. Если вы обратите внимание то код window.addEventListener('load', ()=> { ..... }); как раз таки запускаеn выполнение кода после загрузки всех скриптов. А вы в "лоб" выполняете. Цитата Ссылка на сообщение Поделиться на других сайтах
ovpmusic2 0 Опубликовано: 29 марта Рассказать Опубликовано: 29 марта 18 минут назад, celsoft сказал: Копать нужно в направлении того, что выполнять скрипт нужно после загрузки скриптов. А вы скорее всего пытаетесь выполнить его до загрузки. А где вы выводите в PHP или в шаблоне неважно. Если вы обратите внимание то код window.addEventListener('load', ()=> { ..... }); как раз таки запускаеn выполнение кода после загрузки всех скриптов. А вы в "лоб" выполняете. Насколько я понимаю, то загрузка всех скриптов осуществляется тегом {headers} ? Если это так то скрипты у меня загружаются в начале страницы (см. скриншот 1): А в подвале страницы, примерно в том же месте, (как на главной загружается DLEPush неавторизованным), выводится модуль в котором прописан вывод DLEPush с нужным мне сообщением (см. скриншот 2): Уже вместо var использую conct acc = 0; для отладки, так сказать.... Но не выводится... Скрипты, которые идут ниже по странице (bootstrap, chart и т.д.) не мешают, т.к. я их пробовал отключать совсем... Цитата Ссылка на сообщение Поделиться на других сайтах
MSK 289 Опубликовано: 29 марта Рассказать Опубликовано: 29 марта Судя по картинке, у вас вообще ошибка js должна вываливаться при загрузке страницы на этом моменте: var x = ; Должно быть var x = ''; Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 29 марта Рассказать Опубликовано: 29 марта 1 час назад, ovpmusic2 сказал: Если это так то скрипты у меня загружаются в начале страницы (см. скриншот 1): А опция defer в строке загрузки скриптов вам ни о чем не говорит )) ?. Консоль браузера откройте и все свои ошибки увидите. Цитата Ссылка на сообщение Поделиться на других сайтах
ovpmusic2 0 Опубликовано: 29 марта Рассказать Опубликовано: 29 марта 1 час назад, celsoft сказал: А опция defer в строке загрузки скриптов вам ни о чем не говорит )) ?. Консоль браузера откройте и все свои ошибки увидите. Открывал. Ошибок не было. Может кому пригодится, проблема решена так: <?php ... // Если ошибка есть, то выводим её if ( ! empty( $error ) ) { $err = array_shift( $error ); echo <<<HTML <script> window.addEventListener('load', ()=> { const acc = '{$err}'; if (acc) DLEPush.warning('{$err}', 'ОШИБКА'); }); </script> HTML; } ... ?> Только не могу понять почему так не выводит: <?php ... // Если ошибка есть, то выводим её if ( ! empty( $error ) ) { $err = array_shift( $error ); echo <<<HTML <script> DLEPush.warning('{$err}', 'ОШИБКА'); </script> HTML; } ... ?> Условие if обязательно использовать? 1 час назад, MSK сказал: Судя по картинке, у вас вообще ошибка js должна вываливаться при загрузке страницы на этом моменте: var x = ; Должно быть var x = ''; Да. Это я понимаю. Пробовал отладить с разными вариантами. На скриншоте один из последних вариантов. Было так var x = 'значение'; и по другому... Цитата Ссылка на сообщение Поделиться на других сайтах
MSK 289 Опубликовано: 29 марта Рассказать Опубликовано: 29 марта 2 часа назад, ovpmusic2 сказал: Условие if обязательно использовать? Разберитесь как работает window.addEventListener('load'.... И тогда будут понятны причины и ответы данные выше. Цитата Ссылка на сообщение Поделиться на других сайтах
bykino 1 Опубликовано: 31 марта Рассказать Опубликовано: 31 марта Автор 29.03.2024 в 14:37, ovpmusic2 сказал: Смотри здесь: ../engine/classes/js/dle_js.js Вот где именно редактировать скорость появление и исчезновение, скажите, пожалуйста, не могу найти Цитата Ссылка на сообщение Поделиться на других сайтах
TeraMoune 56 Опубликовано: 31 марта Рассказать Опубликовано: 31 марта (изменено) 54 минуты назад, bykino сказал: Вот где именно редактировать скорость появление и исчезновение, скажите, пожалуйста, не могу найти А это уже настраивается в файлах jqueryui.js или jqueryui3.js, там нужно найти код который начинается с комментария DLE Push. Правда код там ужатый но найти параметры не должно быть проблемой. openDuration и closeDuration. А все остальные параметры, и какие есть, описаны вот тут https://github.com/stanlemon/jGrowl. P.S. Ниже отдельно объявлены заранее определённые типы уведомлений, всего их три и уже в самой инициализации $.jGrowl каждого из типа можно отдельно указать разные параметры. Изменено 31 марта пользователем TeraMoune 1 Цитата Ссылка на сообщение Поделиться на других сайтах
bykino 1 Опубликовано: 31 марта Рассказать Опубликовано: 31 марта Автор 35 минут назад, TeraMoune сказал: А это уже настраивается в файлах jqueryui.js или jqueryui3.js, там нужно найти код который начинается с комментария DLE Push. Правда код там ужатый но найти параметры не должно быть проблемой. openDuration и closeDuration. А все остальные параметры, и какие есть, описаны вот тут https://github.com/stanlemon/jGrowl. P.S. Ниже отдельно объявлены заранее определённые типы уведомлений, всего их три и уже в самой инициализации $.jGrowl каждого из типа можно отдельно указать разные параметры. Спасибо, а здесь можно сделать так, чтобы внизу появился такой ползунок таймера? Цитата Ссылка на сообщение Поделиться на других сайтах
bykino 1 Опубликовано: 31 марта Рассказать Опубликовано: 31 марта Автор Добавил, close: function () {}, но не работает как можно исправить? DLEPush.error = function (message, title) { return $.jGrowl(message, { header: title ? title : '', theme: 'push-error', icon: '<svg width="24" height="28" fill="currentColor" viewBox="0 0 24 28"><path d="M20.5 13.953c0-1.703-0.5-3.281-1.359-4.609l-11.781 11.766c1.344 0.875 2.938 1.391 4.641 1.391 4.688 0 8.5-3.828 8.5-8.547zM4.891 18.625l11.797-11.781c-1.344-0.906-2.953-1.422-4.688-1.422-4.688 0-8.5 3.828-8.5 8.531 0 1.734 0.516 3.328 1.391 4.672zM24 13.953c0 6.656-5.375 12.047-12 12.047s-12-5.391-12-12.047c0-6.641 5.375-12.031 12-12.031s12 5.391 12 12.031z"></path></svg>', life: 1000, close: function() { $(this).addClass('jGrowl-notification'); // Добавляем класс для применения анимации } }); }; Цитата Ссылка на сообщение Поделиться на других сайтах
TeraMoune 56 Опубликовано: 1 апреля Рассказать Опубликовано: 1 апреля 11 часов назад, bykino сказал: а здесь можно сделать так, чтобы внизу появился такой ползунок таймера? Судя по документации нет. Никаких ползунков в этом скрипте не предусмотрено. 10 часов назад, bykino сказал: Добавил, close: function () {}, но не работает как можно исправить? И не должно, это метод для события которое срабатывает когда уведомление закрывается. Но и толку от класса, что он должен делать если нету того чему анимироваться. Вам стоит смотреть в сторону метода open и afterOpen и внедрять какой-то html объект в тело уведомления, в методе open, а в методе afterOpen уже либо навешивать на что-то класс и как-то задействовать анимации из css либо что предпочтительней стоит посмотреть в сторону функции animate, управлять анимацией из области функции. Что лучше так как если будет меняться длительность жизни уведомления в скрипте то не придётся бегать в css для редактирования длительности анимации там. Цитата Ссылка на сообщение Поделиться на других сайтах
Ex Coder 4 Опубликовано: В понедельник в 16:24 Рассказать Опубликовано: В понедельник в 16:24 // Уведомление при загрузке страницы window.addEventListener('load', () => { const acc = '{$err}'; // предполагается, что вы передаете ошибку из сервера if (acc) DLEPush.warning(acc, 'ОШИБКА'); }); все работает пример Цитата Ссылка на сообщение Поделиться на других сайтах
Bomber 0 Опубликовано: 23 часа назад Рассказать Опубликовано: 23 часа назад Вот рабочий пример где можно настроить задержку показа сообщения. window.addEventListener('load', () => { const uwp = sessionStorage.getItem('rega'); if (!uwp) { DLEPush.info( 'Войдите на сайт или <a href="/?do=register">зарегистрируйтесь</a> и вы сможете пользоваться всеми возможностями на сайте', 'Вы не авторизованы', 30000 // Время показа сообщения: 30 секунд ); sessionStorage.setItem('rega', 1); } }); А это с записью в куки на три дня function setCookie(name, value, days) { const date = new Date(); date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); document.cookie = `${name}=${value};expires=${date.toUTCString()};path=/`; } function getCookie(name) { const cookies = document.cookie.split('; '); for (let i = 0; i < cookies.length; i++) { const [key, value] = cookies[i].split('='); if (key === name) return value; } return null; } window.addEventListener('load', () => { const uwp = getCookie('userwelcomeprofitea'); if (!uwp) { DLEPush.warning( 'Войдите на сайт или <a href="/?do=register">зарегистрируйтесь</a> и вы сможете пользоваться всеми возможностями на сайте', 'Вы не авторизованы' ); // Устанавливаем куки на 3 дня setCookie('userwelcomeprofitea', '1', 3); } }); Не забываем что можно использовать три вида окон: DLEPush.info DLEPush.warning DLEPush.error Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.