Счетчик кликов на кнопку или количество скачиваний
Довольно таки часто мне встречаются вопросы о том, как сделать счетчик кликов на кнопку или же количество скачиваний.
Вот решил наконец реализовать данную задачу на благо людям :)
Не хочется мне писать отдельную инструкцию, упаковывать его в архив, поэтому придется вам поработать самостоятельно, ручками :)
В корне сайта создать папку с названием click_counter задать ей права на запись 777.
В ней создать PHP файл index.php с содержимым:
Специально для VIP группы реализовал вариант с учетом только уникальных кликов.
UPD: Для хранения данных в БД [12.08.2020]
Выполнить запрос в БД:
CREATE TABLE `click_counter` ( `id` INT(1) NOT NULL AUTO_INCREMENT , `hash` VARCHAR(32) NOT NULL , `clicks` INT(1) NOT NULL DEFAULT "1", PRIMARY KEY (`id`), INDEX (`hash`)) ENGINE = InnoDB;
Что ж, поздравляю. Основная часть сделана :)
Теперь перейдем к шаблону и JS обработчику.
В качестве триггера, для желаемой кнопки добавляем имя класса click_count. Пример, есть:
<a href="[xfields_download]">скачать</a>
Надо сделать так:
<a href="[xfields_download]" class="click_count">скачать</a>
Осталось подключить js, для этого в принципе в любой подключенный к шаблону JS файл можно вставить такой код:
$(function(){
function get_counter(a,b){
$.get(dle_root+'click_counter/index.php',{type:b,href:a.attr('href')},function(d){
a.find('.click_counter').html(d);
});
}
var click_trigger = ".click_count";
$(click_trigger).each(function(){
$(this).append(" <span class='click_counter' title='Количество кликов'><img src='/click_counter/loading.gif' alt=''/></span>");
get_counter($(this),'');
});
$('body').on("click",click_trigger,function(){
get_counter($(this),'set');
});
})
Отдельно стоит отметить - где и как будет отображаться само число счетчика. На примере того же html кода, что я приводил выше, мы получим:
<a href="[xfields_download]" class="click_count">скачать<span class='click_counter' title='Количество кликов'>0</span></a>
Вам останется только настроить стиль для самого числа счетчика.
Ну и еще, как видно в коде, пока скрипт не обработался в качестве заглушки я использую изображение /click_counter/loading.gif, вы можете либо залить свою картинку загрузки либо вообще убрать картинку из кода, на ваше усмотрение.
Вот собственно и все :)
С уважением,
Олег Александрович a.k.a. Sander