Меню сайта
Attachment Comment Guard (1.0.0) - модуль защиты для системы вложений DLE
Attachment Comment Guard — профессиональный модуль защиты для системы вложений DLE
Делитесь ли вы файлами на своем сайте и испытываете трудности с получением взаимодействия от ваших пользователей? Attachment Comment Guard — это профессиональный модуль защиты, разработанный именно для этой потребности, усиливающий нативную систему вложений DLE.
Ключевые особенности
- Обязательство комментировать: пользователи должны оставить одобренный комментарий к соответствующей новости, чтобы загрузить указанные вами файлы.
- Поддержка AJAX: когда пользователь публикует комментарий, страница не ждет обновления; Система автоматически разблокирует ссылку и обновит страницу.
- Встроенная интеграция: 100% совместимость с вашим файлом шаблона
attachment.tpl. Это не создает дополнительной загрузки файлов. - Исключение для администратора: администраторы (ID:1) могут загружать файлы без каких-либо ограничений.
- Защита от ошибок: используя собственные уведомления DLEPush от DLE, он уведомляет пользователя стильным уведомлением о том, что разрешения на загрузку включены.
Как это работает?
- Пользователь нажимает на ссылку для скачивания или просматривает страницу.
- Если не прокомментировать, срабатывает блок
[not-allow-download]и отображается специальное предупреждающее сообщение. - Когда пользователь оставляет комментарий, триггер AJAX мгновенно его улавливает.
- Страница автоматически обновится, активируется блок
[allow-download]и ссылка для скачивания станет активной.
Установка
- Загрузите плагин.
- Очистите кеш.
- Убедитесь, что в вашем файле attachment.tpl используются теги
[allow-download]и[not-allow-download]. - Модуль будет активирован автоматически.
Пример структуры файла attachment.tpl
[allow-download]
<div class="attach clearfix ignore-select">
<a href="{link}" class="download-link"><i class="fa fa-download"></i> {name}</a>
<span class="attach-info"> [{size}] ([count]Скачиваний: {count})[/count]</span>
</div>
[/allow-download]
[not-allow-download]
<div class="alert alert-styled-left text-left alert-warning">
<h4>Загрузка файла заблокирована</h4>
<div class="alert-body pt-2">
Чтобы скачать этот контент, вам необходимо сначала авторизоваться и <b>оставить комментарий</b> ниже.<br/>
Если вы не авторизованы, пожалуйста, <a href="#" class="openloginbox">войдите</a> или <a href="#" class="openregisterbox">зарегистрируйтесь</a>.
</div>
</div>
[/not-allow-download]
Зачем нам нужен этот код?
Поскольку в DLE комментарии отправляются через AJAX без перезагрузки страницы, страница не обновляется автоматически в момент написания комментария. Однако механизм блокировки нашего модуля проверяет базу данных при первой загрузке страницы и открывает ссылку для скачивания. Этот jаvascript-код вступает в действие в момент отправки комментария, отслеживая AJAX-запросы и перехватывая успешную отправку, получая от сервера информацию о необходимости перезагрузки. Он информирует пользователя, показывая через DLEPush сообщение о том, что комментарий добавлен и ссылки открываются, а затем разблокирует доступ, автоматически перезагружая страницу через 2 секунды, чтобы сервер успел подтвердить новый комментарий и активировать заблокированную ссылку для скачивания.
Куда его добавить?
Чтобы этот код заработал, вам необходимо открыть файл main.tpl вашей темы или fullstory.tpl, если речь идет о детальной странице новости. Для этого найдите файл main.tpl внутри вашей темы, откройте его и вставьте код в самый конец файла, непосредственно перед закрывающим тегом </body>. Если вы хотите, чтобы скрипт работал только на страницах детального просмотра новостей, будет достаточно добавить его в конец файла fullstory.tpl.
Пример размещения
<script>
$(document).ajaxComplete(function(event, xhr, settings) {
if (settings.url && settings.url.indexOf('addcomments') !== -1) {
try {
var resp = JSON.parse(xhr.responseText);
if (resp && resp.reload === true) {
// Если DLEPush определен, показываем информационное сообщение
if (typeof DLEPush !== 'undefined') {
DLEPush.info('Ваш комментарий добавлен, ссылки на файлы открываются...');
}
// Ждем 2 секунды, чтобы посетитель успел прочитать сообщение, и перезагружаем страницу
setTimeout(function() {
location.reload();
}, 2000);
}
} catch(e) {
// В случае ошибки ничего не делаем
}
}
});
</script>
Elementor PRO