Как много у вас загруженных файлов (приложений к постам) не считая картинок? У меня много и придумал способ их монетизировать! Решил ничего не выдумывать и при помощи простейшего JS подменять ссылку на скачивание файла с сайта на специальную ссылку.
При нажатии кнопки скачать будет подставляться промежуточная страница партнерской программы (а-ля укоротители ссылок) с рекламой. За переходы на такие страницы партнерка платит.
Перебрал кучу похожих партнерок, но подходящий инструмент смог найти только у одной — Q32.link. Она предоставляет готовый префикс безо всяких скриптов и мудреной настройки и позволяет автоматизировать сразу весь сайт.
https://ссылка_партнерки/https://моя_ссылка
Для начала в настройках движка в разделе настроек загрузки файлов включите возможность скачивания файлов со стороннего сайта.
Найти ссылку на скачивание
В этом блоке будет изначально стоять указатель на 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']; ?>
Собственно и все. Протестировать, как это работает можно скачав готовый набор файлов ниже.
Комментарии