DLE — монетизируем загруженные в новостях файлы через отдельный домен

file traffic monetisation out domen - DLE — монетизируем загруженные в новостях файлы через отдельный домен

Как много у вас загруженных файлов (приложений к постам) не считая картинок? У меня много и придумал способ их монетизировать! Решил ничего не выдумывать и при помощи простейшего JS подменять ссылку на скачивание файла с сайта на специальную ссылку.

При нажатии кнопки скачать будет подставляться промежуточная страница партнерской программы (а-ля укоротители ссылок) с рекламой. За переходы на такие страницы партнерка платит.

Перебрал кучу похожих партнерок, но подходящий инструмент смог найти только у одной — Q32.link. Она предоставляет готовый префикс безо всяких скриптов и мудреной настройки и позволяет автоматизировать сразу весь сайт.

https://ссылка_партнерки/https://моя_ссылка
file traffic monetisation - DLE — монетизируем загруженные в новостях файлы через отдельный домен

Для начала в настройках движка в разделе настроек загрузки файлов включите возможность скачивания файлов со стороннего сайта.

Найти ссылку на скачивание

file traffic monetisation attachment box - DLE — монетизируем загруженные в новостях файлы через отдельный домен

В этом блоке будет изначально стоять указатель на id файла. Ссылка имеет постоянный вид, а меняется лишь число в конце и нам очень важно получить данное число. Первая строка находит ссылку внутри блока на скачивание, а вторая вытаскивает из получившейся строки число.

https://devarts.pro/engine/download.php?id=84

Получить число

var link = $('.attachment_box a').attr('href'),
        number = Number(link.replace(/\\D+/g,""));

В принципе, мы уже имеем все необходимое для использования стороннего домена и получения прибыли с переходов, но дабы не пугать народ, домен неплохо бы сделать красивее, как на скриншоте и передать ему название файла, ссылку на пост и его заголовок. Передавать будем методом GET и принимать с помощью PHP. Для этого при помощи JS получим их и сразу сформируем ссылку.

var mode = true;

if(mode){
    var link = $('.attachment_box a').attr('href'),
        number = Number(link.replace(/\\D+/g,"")),
        out = 'https://q32.ru/39595/http://d.devarts.pro/?id=' + number,
        out = out + '&href=' + location.href,
        out = out + '&title=' + $('h1').text(),
        out = out + '&name=' + $('.attachment_box a b').text(); 

    $('.attachment_box a').attr('target', '_blank').attr('href', out);
}
<div class=\\"attachment_box\\">
	<a href=\\"{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}\\" >Скачать <b>{$row['name']}</b></a>
	Размер: <span>{$size} </span> Скачиваний: <span>{$row['dcount']} </span>
</div>

Последняя строка OUT может отличаться. Название файла у меня хранится в ссылке и обернуто тегом B, пример выше (не attachment.tpl, a engine/modules/functions.php). Последней строкой мы меняем текущую ссылку на нашу. Дополнительно обернул код небольшим условием.

Переменная mode по умолчанию включена и скрипт выполняется сразу при загрузке страницы, но, если заменить true на false, то скрипт выше работать не будет. Эдакой хак дабы не комментировать весь код.

Готовая ссылка получится огромной длины, все кирилические символы будут перекодированы в сетевой адрес (% с буквой) и будет иметь следующий вид.

https://q32.ru/39595/http://d.devarts.pro/?id=84&href= ссылка_на_пост_на_сайте&title= название_поста_на_сайте&name=название_файла

Обработчик на стороннем домене

Теперь нам нужно принимать данные на стороннем домене и формировать текст. Создаем файл index.php, а .htaccess который будет подхватывать все 404 страницы вложу в архив.

<?php if($_GET['id'] && $_GET['name'] && $_GET['title'] && $_GET['href']){ ?>

	<p>Имя файла: <?= $_GET['name']; ?></p>
	<p>Источник: <a href="<?= $_GET['href']; ?>"><?= iconv("cp1251", "UTF-8", $_GET['title']); ?></a></p>
	<p>Скачать: <a href="https://devarts.pro/engine/download.php?id=<?= $_GET['id']; ?>">download</a></p>

<?php }else{ ?>

	<p>Возникла ошибка, параметры запроса неизвестны</p>
	<p>Попробуйте вернуться на <a href="https://devarts.pro">https://devarts.pro</a> и попробовать заново</p>

<?php } ?>

Проверяем наличие четырех GET параметров и выдаем код. Небольшой нюанс в строке с источником. Я уже давно перешел на юникод и кодировку UTF-8, а данный сайт использует кодировку windows-1251. Функция iconv преобразует cp1251 в utf-8. Если этого не делать, кирилические символы выводятся в виде ромбиков.

Если у вас и там, и там кодировка одинаковая, используйте вместо первой строки вторую в примере ниже.

<?= $_GET['href']; ?>"><?= iconv("cp1251", "UTF-8", $_GET['title']); ?>
<?= $_GET['href']; ?>"><?= $_GET['title']; ?>

Собственно и все. Протестировать, как это работает можно скачав готовый набор файлов ниже.

Похожие записи


PHP — простой ротатор баннеров, ротатор для DLE и WordPress
Аналог на javascriptАналог на PHP для больших кодов Очень простой ротатор кода на PHP. Сначала мы объявляем простой двумерный массив...
Как изменить пароль пользователя CMS DLE и WordPress через SQL-запрос
Перебираю старые статьи с целью их оптимизации и наткнулся на эту. В принципе, способ подойдет для любой системы на любом...
Полный гайд по миграции с CMS DLE на WordPress
Данный сайт в апреле 2019 года полностью переехал на CMS WordPress и в июне, после завершения всех правок (а их...
DLE – быстрый переезд на хостинг не используя инсталятор
Установка движка DLE на хостинг происходит через специальный файл — инсталятор, в котором необходимо заполнить все поля (имя базы данных,...
DLE – мой первый модуль, как написать свой модуль Datalife Engine
Как ни пытался уйти с DLE из-за того, что он платный, а на рынке существует куча бесплатных аналогов, не получается...

Добавить комментарий