• SanDev.pro
  •  › 
  • Datalife Engine
  •  › 
  • Счетчик кликов на кнопку или количество скачиваний
Счетчик кликов на кнопку или количество скачиваний для DLE

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

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

Довольно таки часто мне встречаются вопросы о том, как сделать счетчик кликов на кнопку или же количество скачиваний.
Вот решил наконец реализовать данную задачу на благо людям :)
Не хочется мне писать отдельную инструкцию, упаковывать его в архив, поэтому придется вам поработать самостоятельно, ручками :)
В корне сайта создать папку с названием 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
Комментарии: (20)
  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); }); }
    +1
  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
  11. foto
    Клиент 8 февраля 2019 18:49 #
    А если скрипт встраиваешь для фулстори на кнопку для каждой новости.. то он выводит одни и те же клики веде (одну и ту же цифру в всех новостях)..
    Возможно ли как то сделать чтобы выводил везде свои числа ?
    0
  12. foto
    Клиент 26 апреля 2019 08:01 #
    Может есть у кого-нибудь код или может подсказать, как реализовать клавишу очистки кликов для каждой новости?
    0
  13. foto
    Гость 27 июля 2020 11:11 #
    А что делать если у меня три кнопки? Как вывести все три кнопки? в один общий счетчик?
    0
    1. foto
      Администратор 27 июля 2020 11:13 #
      В таком случае нужно писать отдельный модуль, который будет вести учет статистики согласно заданным вами требований.
      0
      1. foto
        Гость 27 июля 2020 11:38 #
        Я готов заказать данный модуль. Пытаюсь найти вас в телеграмм к сожалению не находит
        0
        1. foto
          Клиент 30 июля 2020 11:21 #
          Есть готовый модуль
          https://new-dev.ru/21-memberextfields-novye-polya-i-avtoregistraciya.html
          Я думаю вам должен подойти "Трекер статистики кликов"
          0
  14. foto
    Гость 6 августа 2020 23:27 #
    А можно чтобы значение статистики передавалось в БД и там менять значение уже как угодно?
    0
    1. foto
      Администратор 12 августа 2020 09:59 #
      Дополнил статью.
      Но не сильно рекомендую этот метод. Злоумышленники, при желании, достаточно легко смогут забить БД рандомными записями.
      0
  15. foto
    Посетитель 6 февраля 2022 14:13 #
    Сандер, огромное спасибо тебе из 2022 года! Без труда интегрировал в свой сайт, но нашёл один маленький баг. В случае использования БД в качестве хранилища счётчиков, при первичном сохранении полю `clicks` в БД присваивается значение «0», а должно присваиваться «1» и только со второго клика оно начинает увеличиваться. Победил исправив значение по умолчанию: `clicks` int(1) NOT NULL DEFAULT '1'
    0
Добавить комментарий

Внимание! Все сообщения касающиеся техподдержки будут удалены или проигнорированы

Attention! All messages asking for technical support will be removed or ignored

  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2024.
При копировании, ссылка на источник обязательна.