Счетчик кликов на кнопку или количество скачиваний для DLE

Счетчик кликов на кнопку или количество скачиваний

Счетчик кликов на кнопку или количество скачиваний

Довольно таки часто мне встречаются вопросы о том, как сделать счетчик кликов на кнопку или же количество скачиваний.
Вот решил наконец реализовать данную задачу на благо людям :)
Не хочется мне писать отдельную инструкцию, упаковывать его в архив, поэтому придется вам поработать самостоятельно, ручками :)
В корне сайта создать папку с названием click_counter задать ей права на запись 777.
В ней создать PHP файл index.php с содержимым:
<?PHP
@error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );
@ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );
define ( 'ROOT_DIR', dirname ( __FILE__ ) );

if(!$_GET['href']) die('Undefinded href');
$href = md5($_GET['href']);
$stat = unserialize(file_get_contents(ROOT_DIR."/stats.txt"));
if(!$stat[$href]) $stat[$href] = 0;
if($_GET['type']=='set'){
	$stat[$href]++;
	file_put_contents(ROOT_DIR. "/stats.txt", serialize($stat), LOCK_EX);
}
echo $stat[$href];
?>

Специально для VIP группы реализовал вариант с учетом только уникальных кликов.

Что ж, поздравляю. Основная часть сделана :)
Теперь перейдем к шаблону и 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
Комментарии: (11)
  1. foto
    Посетитель 24 ноября 2013 11:10 #
    Спасибо за хак!

    Как можно реализовать:
    если вместо текста-ссылки, ссылка-картинка в дополнительном поле, чтобы текст (кол-во скачиваний) был на одной строке и не съезжал в сторону.

    А так все работает, но смотрится не красиво.
    0
  2. foto
    Клиент 26 ноября 2013 16:11 #
    Специально для VIP группы реализовал вариант с учетом только уникальных кликов.
    так там же добавить ip в массив всего-то о_О
    Цитата: welip
    если вместо текста-ссылки, ссылка-картинка в дополнительном поле, чтобы текст (кол-во скачиваний) был на одной строке и не съезжал в сторону.

    Вам останется только настроить стиль для самого числа счетчика.
    0
  3. foto
    Посетитель 30 мая 2014 11:49 #
    Вот код кнопки где должно выводиться значение:
    <a href="#" class="click_count">ПРОДАНО: <span class='click_counter' title='Количество кликов'>0</span></a>
    Код кнопки на которую кликают:
    <a href="#menu-buy" class="click_count">ПОЛУЧИТЬ ПАКЕТ!<img src="img/btn-down-icon.png" alt="icon"> </a>
    Файл в корне сайта /stats.txt с правами 777 выложил
    Папку click_counter с файлом php и правами 777 сделал
    Скрипт изменил первую строчку
    вместо: $(function(){
    поставил: (function ($){
    Но ничего не работает.... что не так???, подскажите пожалуйста.
    0
  4. foto
    Посетитель 6 августа 2014 12:30 #
    он работает через раз, то есть я жму на кнопку а он может сохранить, а может и не сохранить

    особенно когда на странице есть две и более кнопок со счетчиком, жму на одну - сохранило, жму на вторую и опять на первую - ни у одной не сохранило
    0
  5. foto
    Посетитель 18 апреля 2015 12:32 #
    а как вывести количество нажатий на шорт стори или в кастом?
    0
  6. foto
    Посетитель 25 сентября 2015 21:00 #
    не работает :(
    0
  7. foto
    Посетитель 25 февраля 2016 09:59 #
    У меня тоже не сработал с первого раза, пока не изменил код на такой:

    function get_counter(a,b){
    		$.get("ПОЛНЫЙ-АДРЕС-К-ФАЙЛУ-index.php",{type:b,href:a.attr('
    href')},function(d){ a.find('.click_counter').html(d); }); }
    0
  8. foto
    VIP 28 августа 2016 21:14 #
    Подскажите, будет правильно работать если несколько кнопок на странице, в shortstory хочу поставить.
    0
    1. foto
      Администратор 28 августа 2016 22:45 #
      Да, будет.
      0
  9. foto
    Посетитель 7 октября 2016 15:57 #
    Такая проблема, у меня есть три кнопки, к каждой кнопке уже привязан свой класс. Как сделать так, чтобы скрипт считал нажатия на все три кнопки?
    0
  10. foto
    Посетитель 7 октября 2016 16:04 #
    Так, с этим разобрался. Вопрос теперь в другом - как вывести суммарное количество нажатий в одну строку?
    0
Добавить комментарий
  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2018.
При копировании, ссылка на источник обязательна.