Перейти к публикации

Рекомендованные сообщения

Добрый день, форумчане!
 

Подскажите, пожалуйста, как и где редактировать DLEPush, которые внесены в DLE 17.1 

Например (длительность и т.д), может есть некоторые нюансы или дополнение, буду благодарен!

Ссылка на сообщение
Поделиться на других сайтах
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 файла модуля тоже можно?

Подскажите куда копать, что-то никак не могу разобраться...

Изменено пользователем ovpmusic2
Ссылка на сообщение
Поделиться на других сайтах
12 минут назад, ovpmusic2 сказал:

Подскажите куда копать, что-то никак не могу разобраться...

Копать нужно в направлении того, что выполнять скрипт нужно после загрузки скриптов. А вы скорее всего пытаетесь выполнить его до загрузки. А где вы выводите в PHP или в шаблоне неважно. Если вы обратите внимание то код 

	        window.addEventListener('load', ()=> {
.....
	        });

как раз таки запускаеn выполнение кода после загрузки всех скриптов. А вы в "лоб" выполняете.

Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, celsoft сказал:

Копать нужно в направлении того, что выполнять скрипт нужно после загрузки скриптов. А вы скорее всего пытаетесь выполнить его до загрузки. А где вы выводите в PHP или в шаблоне неважно. Если вы обратите внимание то код 


	        window.addEventListener('load', ()=> {
.....
	        });

как раз таки запускаеn выполнение кода после загрузки всех скриптов. А вы в "лоб" выполняете.

Насколько я понимаю, то загрузка всех скриптов осуществляется тегом {headers} ?

Если это так то скрипты у меня загружаются в начале страницы (см. скриншот 1):

2024-03-29_13-03-59.png

А в подвале страницы, примерно в том же месте, (как на главной загружается DLEPush неавторизованным), выводится модуль в котором прописан вывод DLEPush с нужным мне сообщением (см. скриншот 2):

2024-03-29_13-08-10.png

Уже вместо var использую conct acc = 0; для отладки, так сказать.... Но не выводится...

Скрипты, которые идут ниже по странице (bootstrap, chart и т.д.) не мешают, т.к. я их пробовал отключать совсем...

 

 

Ссылка на сообщение
Поделиться на других сайтах

Судя по картинке, у вас вообще ошибка js должна вываливаться  при загрузке страницы на этом моменте:

var x = ;

Должно быть 

var x = '';

 

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, ovpmusic2 сказал:

Если это так то скрипты у меня загружаются в начале страницы (см. скриншот 1):

А опция defer в строке загрузки скриптов вам ни о чем не говорит )) ?. Консоль браузера откройте и все свои ошибки увидите.

Ссылка на сообщение
Поделиться на других сайтах
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 = 'значение'; и по другому...

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, ovpmusic2 сказал:

Условие if обязательно использовать?

Разберитесь как работает

window.addEventListener('load'....

И тогда будут понятны причины и ответы данные выше.

Ссылка на сообщение
Поделиться на других сайтах
29.03.2024 в 14:37, ovpmusic2 сказал:

Смотри здесь: ../engine/classes/js/dle_js.js

Вот где именно редактировать скорость появление и исчезновение, скажите, пожалуйста, не могу найти

Ссылка на сообщение
Поделиться на других сайтах
54 минуты назад, bykino сказал:

Вот где именно редактировать скорость появление и исчезновение, скажите, пожалуйста, не могу найти

А это уже настраивается в файлах jqueryui.js или jqueryui3.js, там нужно найти код который начинается с комментария DLE Push. Правда код там ужатый но найти параметры не должно быть проблемой.

openDuration и closeDuration.

А все остальные параметры, и какие есть, описаны вот тут https://github.com/stanlemon/jGrowl.

P.S. Ниже отдельно объявлены заранее определённые типы уведомлений, всего их три и уже в самой инициализации $.jGrowl каждого из типа можно отдельно указать разные параметры.

Изменено пользователем TeraMoune
Ссылка на сообщение
Поделиться на других сайтах
35 минут назад, TeraMoune сказал:

А это уже настраивается в файлах jqueryui.js или jqueryui3.js, там нужно найти код который начинается с комментария DLE Push. Правда код там ужатый но найти параметры не должно быть проблемой.

openDuration и closeDuration.

А все остальные параметры, и какие есть, описаны вот тут https://github.com/stanlemon/jGrowl.

P.S. Ниже отдельно объявлены заранее определённые типы уведомлений, всего их три и уже в самой инициализации $.jGrowl каждого из типа можно отдельно указать разные параметры.

Спасибо, а здесь можно сделать так, чтобы внизу появился такой ползунок таймера? 

Ссылка на сообщение
Поделиться на других сайтах

Добавил, 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'); // Добавляем класс для применения анимации
        }
    });
};

 

Ссылка на сообщение
Поделиться на других сайтах
11 часов назад, bykino сказал:

а здесь можно сделать так, чтобы внизу появился такой ползунок таймера?

Судя по документации нет. Никаких ползунков в этом скрипте не предусмотрено.

10 часов назад, bykino сказал:

Добавил, close: function () {}, но не работает как можно исправить?

И не должно, это метод для события которое срабатывает когда уведомление закрывается. Но и толку от класса, что он должен делать если нету того чему анимироваться.
Вам стоит смотреть в сторону метода open и afterOpen и внедрять какой-то html объект в тело уведомления, в методе open, а в методе afterOpen уже либо навешивать на что-то класс и как-то задействовать анимации из css либо что предпочтительней стоит посмотреть в сторону функции animate, управлять анимацией из области функции. Что лучше так как если будет меняться длительность жизни уведомления в скрипте то не придётся бегать в css для редактирования длительности анимации там.

Ссылка на сообщение
Поделиться на других сайтах
  • 7 месяцев спустя...

// Уведомление при загрузке страницы
window.addEventListener('load', () => {
    const acc = '{$err}'; // предполагается, что вы передаете ошибку из сервера
    if (acc) DLEPush.warning(acc, 'ОШИБКА');
});
все работает пример 

Ссылка на сообщение
Поделиться на других сайтах

Вот рабочий пример где можно настроить задержку показа сообщения. 

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

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...