• 3501
  • 3
  • Автор: Sander
  • Адаптировал: irbees2008
  • Источник:
  • Уровень сложности исполнения: это делается простым копированием и нажиманием кнопки
  • Демо:

На конец то я нашел рабочий скрипт счетчика кликов или скачивания,и долго ломал голову почему он у меня не работает
С подсказки и помощи infinity237 ,скрипт заработал,теперь делюсь с вами.
Итак приступим
1. Создаем в корне сайта папку с названием click_counter, задаем ей права на запись 777(в некоторых случаях 755,так было у меня и поэтому не работал скрипт).
Ну можете скачать Вы не можете скачивать файлы с нашего сайта ,рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем. ,распаковать и залить готовую папку с содержимым.
2. В нашей папке создаем файл 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];
?>
3.Также там создаём пустой файл stats.txt

4.Теперь нам надо заменить нашу ссылку
Код:
{% if (p.xfields.download.value) %}
<a href="{{ p.xfields.download.value }}" target="blank">Скачать</a>
{% endif %}
На такую
Код:
{% if (p.xfields.download.value) %}
<a href="{{ p.xfields.download.value }}" class="click_count" target="blank">Скачать</a>
{% endif %}
Как вы заметили сам адрес ссылки добавляем через дополнительное поле "download" в плагине xfields,а в самой ссылке мы добавили class="click_count",по этому классу и работает скрипт

5. Подключаем js, в main.tpl перед закрытием тега body :
Код:
<script>
$(function(){
function get_counter(a,b){
$.get('{{home}}/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');
});
})
</script>
6.Вот и все ,посмотрите демо,ну и вам останется только настроить стиль для самого числа счетчика.
P.S. Как вы видели в скрипте , пока скрипт выполняет запрос в качестве заглушки использую изображение /click_counter/loading.gif, можете либо залить свою картинку загрузки либо убрать картинку из кода, на ваше усмотрение.

Можешь почитать и вот эту статейку "Пишем файл main.tpl"

mistakes

Это тоже интересно

    Pixar2301

    Pixar2301 | 3.11.2014 - 05:28

    irbees2008, спс, все работает. Я почему-то решил что данный скрипт считает и количество переходов по ссылке без файлов на скачивание тоже. А оказывается нет.
    Чтобы уж совсем было хорошо поправь еще атрибут </a> у своей ссылки. У тебя там открывающей галочки не хватает ( < ) .
    А скрипт полезный и очень нужный!!!

    ответить

    irbees2008

    irbees2008 | 3.11.2014 - 03:27

    Pixar2301, ошибки исправил ,спасибо.Ссылку на сайт дай в личку ,гляну.

    ответить

    Pixar2301

    Pixar2301 | 3.11.2014 - 01:00

    У меня почему-то не работаетcry
    irbees2008 я так понимаю у тебя в коде есть ошибки? Кое что поправил, а именно:
    Вместо <skript></skript>
    поставил <script type="text/javascript"></script>
    В адресе {{home}}click_counter/index.php после {{home}} отсутствует черта т.е. ( / ) После внесения данных изменений появился счетчик , но при нажатии на кнопку он все равно по нулям.
    irbees2008 все что я поправил это ошибки? Если да, то может там еще есть. Папку закинул которая в архиве была и права установил и 755 и 777 но все равно не работает(((

    ответить

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Ваше мнение

Вы нашли что искали?
Результаты

Облако тегов

Anything in here will be replaced on browsers that support the canvas element