Инсталиране на брояча за изтегляне - преглед на плъгините за WordPress. Създаване на брояч за изтегляне на файлове с помощта на PHP и MySQL Запазване на текстови и графични файлове

На много сайтове можете да видите връзки за изтегляне на файлове. Например производствените фирми поставят инструкции за конкретен продукт на официалните си страници. В допълнение, разработчиците на софтуер също предлагат безплатно изтегляне на тяхната програма, като по този начин позволяват на потребителя да се запознае с нейните функции и работа.

Когато излагате определен файл за безплатно изтегляне, е важно да знаете колко пъти е бил изтеглен. Това е необходимо преди всичко за статистиката, чийто анализ ще помогне да се определи полезността на информацията за крайния потребител.

Как да настроите брояч за изтегляне на сайт на WordPress?

Сред инструментите на WordPress няма начин да видите тези статистики. Затова ще използваме решение на трета страна - приставката Kama Click Counter.

Kama Click Counter Plugin

Безплатният плъгин Kama Click Counter предоставя всички необходими инструменти за точно отчитане на броя изтегляния на определен файл. Така че, първо, трябва да го инсталирате и активирате. Например, нека покажем връзка към pdf файл на страницата за запис, за която ще броим броя на изтеглянията. Трябва да се отбележи, че файловете се качват на сайта по стандартни начиниМедийни библиотеки на WordPress (Медийни файлове -> Добавяне на нови). След това трябва да отворите публикацията или страницата за редактиране. В частта със съдържанието трябва да поставите курсора на мястото, където ще бъде поставена връзката към файла, и щракнете върху бутона, който се появява в лентата с инструменти на визуалния редактор.

В изскачащ прозорец плъгинът ще ви помоли да изберете файла, който сте изтеглили по-рано. За да направите това, щракнете върху бутона с иконата на лупа.

В медийната библиотека изберете желания файл и щракнете върху бутона Избор на файл.

В резултат на това в съдържанието на публикацията или страницата ще бъде вмъкнат специален кратък код, който служи за показване на връзка за изтегляне на файла.

След като актуализирате материала (бутон Обнови), можете да отидете на сайта, за да го видите.

Плъгинът също така може да показва статистика за изтегляне в потребителската част на сайта - в уиджета. Имайте предвид, че плъгинът по подразбиране не показва конкретни числа в джаджата, какво и колко пъти е изтеглено. Показва се само списък с най-често изтегляните файлове. За да направите това, отидете в секцията на администратора Облик -> Джаджи и плъзнете модула CCC:Най-популярни изтегляния до желаното място в страничната лента.

Може да се види, че в джаджата са налични няколко опции, които ви позволяват да променяте списъка.

Тук можете да зададете следните основни параметри:

  • заглавие на джаджа (поле за заглавие);
  • броя на изходните файлове в списъка (колко връзки да се показват?);
  • сортиране на резултатите (как да сортирам резултата?);
  • настройка външен видшаблон (блокира шаблон и CSS шаблон).

Характеристика на плъгина е гъвкавото персонализиране на шаблона. Тук можете да използвате така наречените тагове, на мястото на които ще се показва тази или онази информация.

След като всички настройки на уиджета са завършени и запазени (бутон Запазване), можете да видите резултата на сайта.

Дълго време нямаше уроци за PHP и MySQL. Днес ще създадем прост, но ефективен брояч на изтегляния.

Всеки файл ще има запис в реда на таблицата на базата данни. Същата таблица ще съхранява броя на изтеглянията на файлове. PHP ще актуализира MySQL DB и ще пренасочи потребителя към необходим файл.

За да проследите броя на изтеглянията на всеки файл, трябва да го поставите в папката с файлове и да използвате специален URL за достъп до него.

Стъпка 1 - XHTML

Първата стъпка е да създадем маркирането за нашия скрипт. Много е просто - имаме div на файловия мениджър, който съдържа неподреден списък, където всеки елемент от списъка отговаря за файл.

Файловете, чиито изтегляния трябва да бъдат проследени, се поставят в папката с файлове в основната папка на скрипта. След това PHP преминава през всички файлове и добавя всеки един като елемент от списък (li) към неподредения списък.

demo.php


  • photoShoot-1.0.zip 0 изтегляне

Обърнете внимание, че атрибутът href на връзките предава името на файла като параметър на download.php. Тук се намесва проследяването на изтеглянето.

Не е нужно да показвате всичко по един и същи начин - можете просто да свържете към download.php на вашите страници и всички изтегляния няма да преминат.

Стъпка 2 - CSS

След маркирането, нека да преминем към дизайна. Правилата на CSS по-долу се отнасят за div на файловия мениджър по id (символ #), тъй като се среща само веднъж на страницата, а останалите елементи - по имена на класове.

styles.css

#file-manager( background-color:#EEE; border:1px solid #DDD; margin:50px auto; padding:10px; width:400px; )
ul.manager li( background:url("img/bg_gradient.gif") repeat-x center bottom #F5F5F5; border:1px solid #DDD; border-top-color:#FFF; list-style:none; position:relative ; ) ul.manager li a( display:block; padding:8px; ) ul.manager li a:hover .download-label( /* При задържане, показване на зелен текст за изтегляне: */ display:block; ) span. download- label( background-color:#64B126; border:1px solid #4E9416; color:white; display:none; font-size:10px; padding:2px 4px; position:absolute; right:8px; text-decoration:none; текст -shadow:0 0 1px #315D0D; top:6px; /* CSS3 заоблени ъгли */
-moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; ) span.download-count( color:#999; font-size:10px; padding:3px 5px; position:absolute; text-decoration:none; )

Стъпка 3 - PHP

Както казах преди, PHP търси файлове в папката с файлове и изброява всеки файл като елемент от списък в неподреден списък. Нека да видим как става

demo.php- горна част

// Докладване на грешка : error_reporting(E_ALL^E_NOTICE); // : изисква се "connect.php"; $разширение=""; $files_array = масив(); /* Отворете папката и преминете през всички файлове: */ $dir_handle = @opendir($directory) or die("Има грешка във вашата файлова директория!"); докато ($file = readdir($dir_handle)) ( /* Пропускане системни файлове: */ if($file(0)==".") продължи; /* end() извежда последния елемент от масива, генериран от функцията explode(): */ $extension = strtolower(end(explode(".",$file))); /* Пропускане на php файлове: */ if($extension == "php") continue; $files_array=$файл; ) /* Сортиране на файлове по азбучен ред */ sort($files_array,SORT_STRING); $file_downloads=масив(); $result = mysql_query("ИЗБЕРЕТЕ * ОТ download_manager"); if(mysql_num_rows($result)) while($row=mysql_fetch_assoc($result)) ( /* Ключът на масива $file_downloads ще бъде името на файла и ще съдържа броя на изтеглянията: */ $file_downloads[$row[" име на файл"] ]=$ред["изтегляния"]; )

Забележете как избираме всички редове от таблицата download_manager с mysql_query() и по-късно ги добавяме към масива $file_downloads с името на файла като ключ към броя на изтеглянията. Така че по-късно в кода можем да напишем $file_downloads["archive.zip"] и да отпечатаме броя на изтеглянията.

По-долу можете да видите кода, който генерира елементите на списъка:

demo.php- средна част

Foreach($files_array as $key=>$val) ( ехо "

  • ".$val." ".(int)$file_downloads[$val]." Изтегли
  • "; }

    Всичко се прави просто с цикъл foreach на масива $files_array. След това всичко се извежда с ехо.

    Сега нека разгледаме по-отблизо как работи проследяването на файлове.

    изтегляне.php

    // Проверка на грешки: error_reporting(E_ALL^E_NOTICE); // Включете файла за връзка с базата данни: require("connect.php"); if(!$_GET["file"]) error("Липсващ параметър!"); if($_GET["file"](0)==".") грешка("Грешен файл!"); if(file_exists($directory."/".$_GET["file"])) ( /* Ако посетителят не е търсещ бот, пребройте изтеглянето: */ if(!is_bot()) mysql_query(" INSERT INTO download_manager SET filename ="".mysql_real_escape_string($_GET["file"])."" НА АКТУАЛИЗАЦИЯ НА ДУБЛИРАН КЛЮЧ downloads=downloads+1"); header("Местоположение: ".$directory."/".$_GET[" файл"]); изход; ) else error("Този файл не съществува!"); /* помощни функции: */ функция error($str) ( die($str); ) функция is_bot() ( /* Тази функция проверява за робот */ $botlist = array("Teoma", "alexa", " froogle", "Gigabot", "inktomi", "looksmart", "URL_Spider_SQL", "Firefly", "NationalDirectory", "Ask Jeeves", "TECNOSEEK", "InfoSeek", "WebFindBot", "girafabot", "crawler ", "www.galaxy.com", "Googlebot", "Scooter", "Slurp", "msnbot", "appie", "FAST", "WebBug", "Spade", "ZyBorg", "rabaz", " Baiduspider", "Feedfetcher-Google", "TechnoratiSnoop", "Rankivabot", "Mediapartners-Google", "Sogou web spider", "WebAlta Crawler", "TweetmemeBot", "Butterfly", "Twitturls", "Me. dium ","Twiceler"); foreach($botlist as $bot) ( if(strpos($_SERVER["HTTP_USER_AGENT"],$bot)!==false) return true; // Е бот) return false; / / Не е бот)

    Важно е да проверите дали вашият посетител е човек или робот на търсачката. Роботите са хубави, но нека не им позволяваме да изкривяват статистиката ни. Ето защо редът в базата данни се актуализира само след проверката на is_bot().

    Стъпка 4 - MySQL

    Както отбелязахме в последната стъпка, броят на изтеглянията се съхранява като ред в таблицата download_manager. Първо, нека обясним как работи тази заявка:

    изтегляне.php

    INSERT INTO download_manager SET filename="filename.doc" ON DUPLICATE KEY UPDATE downloads=downloads+1

    Той казва на MySQL да вмъкне нов ред в таблицата download_manager и да зададе полето за ред на името на файла на стойността на файла, извикан за изтегляне. Полето за име на файл обаче е обозначено като уникален индекс в таблицата. Това означава, че всеки ред може да бъде вмъкнат само веднъж, в противен случай ще възникне грешка с дублиран ключ.

    Това е мястото, където ще работи втората част от заявката - ON DUPLICATE KEY UPDATE ще каже на MySQL да добави такъв към колоната за изтегляния, ако файлът вече съществува в базата данни.

    По този начин новите файлове ще бъдат автоматично добавени към базата данни по време на първото изтегляне.

    Стъпка 5 - jQuery

    За да може да се следи в реално време, би било добре след всяко изтегляне да се актуализира броячът до името на файла.

    Ще направим това с jQuery:

    script.js

    $(document).ready(function()( /* Кодът се изпълнява след зареждане на страницата */ $("ul.manager a").click(function()( var countSpan = $(".download-count ", това) ; countSpan.text(parseInt(countSpan.text())+1); )); ));

    Ние просто присвояваме манипулатор на кликване на връзки, които водят до файлове, и при всяко кликване добавяме стойност.

    Стъпка 6 - htaccess

    Има още нещо, което трябва да се направи. Download.php ще пренасочи потребителя към искания файл, който е предаден като параметър. Въпреки това може да сте забелязали, че браузърите се опитват да отварят някои типове файлове директно. Също така трябва да инициираме тяхното изтегляне. Това може да стане с няколко реда във файла .htacess, който се намира в папката с файлове.

    ForceType приложение/октетен поток

    Сега нашият брояч е напълно готов!

    Заключение

    За да работи демонстрацията, трябва да пресъздадете таблицата download_manager в базата данни MySQL. Можете да намерите необходимия SQL код в източниците.

    След това добавете вашите данни за свързване към базата данни във файла configuration.php.

    // Премахване на преобразуването в режим на "магически цитат" $_POST["content"] = addslashes($_POST["content"]);

    // Презаписване на съдържанието на файла file_put_contents($_POST["filename"], "$_POST");

    4.9. Брояч за изтегляне на файлове

    Работата на всички броячи за изтегляне на файлове се основава на факта, че на посетителя се предоставя не самият файл като връзка за изтегляне, а връзка към скрипт, който отчита изтеглянето и изпраща файла към браузъра на потребителя.

    Ще изградим нашия брояч по такъв начин, че връзките за изтегляне на файла да са връзки към текущата страница, като предаваме името на файла като параметър, например index.php?down=archive.zip. Скриптът ще провери дали параметърът down е подаден и ако е, ще регистрира изтеглянето на архива във файла filecount.txt. Когато страницата се презареди, стойностите на брояча за всеки от архивите ще бъдат извлечени от файла за показване в прозореца на браузъра. Прехвърлянето на файла за изтегляне ще се извърши чрез изпращане на HTTP заглавката Location на посетителя, указващ пътя до изтегления архив. Скриптът за брояч на изтегляне на файлове може да изглежда като списък 4-31.

    Листинг 4.31. Брояч за изтегляне на файлове

    // Задаване на ниво на обработка на грешки error_reporting(E_ALL & ~E_NOTICE);

    // Регистриране на имена на файлове в масив

    $file_name = array("archive1.zip","archive2.zip","archive3.zip");

    // Име на файла, където се съхранява статистиката $countname = "filecount.txt";

    // Ако файлът съществува,

    // прочете текущата статистика в масив if(file_exists($countname))

    // Вземете съдържанието на брояча

    $съдържание = file_get_contents($countname);

    // Разопаковайте масива

    $count = unserialize($content);

    // Ако няма такъв файл, създайте го,

    // и нулиране на статистиката

    // Попълнете масива $count с нулеви стойности foreach($file_name като $file)

    $count[$file] = 0;

    // Опаковайте масива и го поставете в брояча file_put_contents($countname, serialize($count));

    // Проверете дали стойността на параметъра down е предадена

    // чрез метода GET

    if(isset($_GET["down"]))

    // Проверете дали стойността на параметъра е $_GET["down"]

    // към масив $file_name

    if(in_array($_GET["down"],$file_name))

    // Регистрираме факта на зареждане на този файл

    // Увеличете стойността на брояча с ключа

    // $_GET["down"] с едно

    $count[$_GET["down"]]++;

    // Презаписване на брояч файл file_put_contents($countname, serialize($count));

    echo "Файлът $file беше зареден от ".intval($count[$file])." пъти
    ";

    Имената на качените файлове се съхраняват в масива $file_name, като добавянето на нов архив води до автоматичната му регистрация в системата. Предварителната регистрация в масива е необходима по няколко причини. Първо, когато приемате име на масив чрез параметъра down, трябва да проверите дали то е сред разрешените за качване файлове. Второ, обработката на имена на файлове в масив е много по-удобна. Така че масивът $count, който съхранява броя изтегляния на файлове, се изгражда автоматично въз основа на масива от файлове, регистрирани в системата,

    Удобно е да опаковате масив в низ с помощта на функцията serialize() и след това да го разопаковате обратно в масив с помощта на функцията unserialize().

    ЗАБЕЛЕЖКА

    Важно е да запомните, че всички HTTP заглавки трябва да бъдат изпратени преди изпращането на основното съдържание, в противен случай те няма да бъдат изпратени и PHP интерпретаторът ще издаде предупреждение „Предупреждение: Не може да се промени информацията в заглавката – заглавките вече са изпратени от“

    (Предупреждение: информацията в заглавката не може да се променя - заглавките вече са изпратени). Това се диктува от HTTP протокола: първо се изпращат заглавките, след това съдържанието на документа, така че всеки изход към прозореца на браузъра се възприема като край на изпращане на заглавки и начало на изпращане на тялото на документа. Ако изходът към прозореца на браузъра преди изпращането на заглавките е неизбежен, трябва да прибегнете до функции за контрол на изхода, като буферирате целия изход и го изпратите в края на скрипта.

    Както можете да видите в листинг 4.31, скриптът обработва ситуацията на първо изпълнение, при която filecount.txt липсва - той се създава автоматично при зареждане на първата страница, задействано от нулеви стойности за всеки файл в масива $file_name. Резултатът от скрипта в Листинг 4.31 може да се види на Фигура 1. 4.4.

    Ориз. 4.4. Резултатът от брояча на файлове

    4.10. Запазване на текстови и графични файлове

    Щракването върху връзка към текстови файлове или HTML файлове води до тяхното показване в прозореца на браузъра, което не винаги е удобно, особено ако файлът е предназначен за изтегляне. Същата съдба очаква графичните файлове и като цяло всички файлове, които браузърът може да покаже. Браузърът на посетителя „научава“ съдържанието на файла от сървъра, тъй като всеки файл е придружен от HTTP хедъри, информиращи клиента за съдържанието, размера на изтегления файл, необходимостта от настройка на бисквитка и т.н. Ако типът файл не може да бъде определен, той се изпраща просто като двоичен поток.

    Можете да потиснете това поведение, като изпратите HTTP заглавките, показани в листинг 4-32.

    Листинг 4.32. Скрипт за запазване на текстови и графични файлове

    $filename = basename($_GET["down"]); header("Разпределение на съдържанието: прикачен файл; име на файл=$име на файл"); header("Content-type: application/octet-stream"); header("Content-length: ".filesize($_GET["down"]));

    ехо file_get_contents($_GET["down"]); ?>

    Скриптът в листинг 4-32 приема име на файл като GET параметър, например,

    index.php?down=filetext.txt. Функцията basename() извлича името

    файл (в случай че параметърът GET надолу съдържа път към файл). HTTP заглавката Content-Disposition указва името на файла, който ще бъде записан, което е указано от атрибута filename. В горния скрипт параметърът за име на файл е същият като името на файла, който се изпраща, но произволно име може да бъде предадено като параметър за име на файл. HTTP хедърът Content-type показва, че предадените данни са двоични и не трябва да се интерпретират от браузъра. HTTP хедърът с дължина на съдържанието предава размера на файла на клиента. Последният ред показва съдържанието на файла, предадено през параметъра $_GET["down"], което се извлича с помощта на функцията file_get_contents(). Резултатът от скрипта в Листинг 4.32 е показан на Фигура 1. 4.5.

    ЗАБЕЛЕЖКА

    Важно е след като съдържанието на файла бъде изведено, нищо друго да не се извежда към потока: нито чрез конструкцията echo, нито чрез директен изход - в противен случай всичко ще бъде прикачено към края на файла. Това се отнася за възможните интервали, както и за нови редове след крайния таг ?>.

    Ориз. 4.5. Диалогов прозорец за качване на файл

    Следващият въпрос, който наскоро ме интересуваше, когато създавах моя непретенциозен авторски проект, беше въпросът как да преброя броя на изтеглянията на определен файл, публикуван тук. Най-логично беше да се предположи, че това изисква друг плъгин, някакъв мениджър за изтегляне или по-просто казано брояч за изтегляне. След търсене в интернет се оказа, че както обикновено, тези плъгини са вагон и малка количка. Но рецензиите им - пак не. Какво да избера, абсолютно не е ясно и, както обикновено, трябваше да тествам всичко върху себе си. И според резултатите от тестването този рецензент се оказа. Писано е много дълго време, докато целта не беше задълбочено тестване на всички горни плъгини с пълен преглед на техните настройки, така че няма да намерите подробни екранни снимки на всеки, но ето основните настройки. Изобщо не исках да говоря за някои - бяха толкова глупави, но ако вече бях погледнал, беше жалко да не напиша нищо.

    Въведение.

    И така, задачата беше да преброим броя на изтеглянията на определен файл, като настроим брояча на изтегляния за WordPress. При по-внимателно разглеждане тя се раздели на няколко подзадачи или по-скоро желания за плъгин, който да я изпълнява. Ето кратък списък от тях:

    • Необходимо е някъде в админ панела да се показва броя на тегленията, с възможност за сортиране - колко са теглени на ден, на седмица, месец, година, общо
    • Желателно е да можете да видите графики / диаграми на изтегляне на файлове един спрямо друг
    • Желателно е да можете да видите графики / диаграми на изтегляне на файлове във времето
    • Желателно е да се води статистика за последното изтегляне на файла
    • Възможността за показване на информация до връзката за това колко пъти е бил изтеглен файлът, както и неговия размер и датата на изтегляне за потребител, който е на път да го изтегли. Е, или да не се показва - по искане на администратора
    • Възможност за вмъкване на отговорния за това код с отделен бутон в панела за публикуване на редактора TinyMCE (не обичам да използвам бързи маркери)
    • Възможност за ограничаване на скоростта на изтегляне (така, за всеки случай)
    • Прикачването на функцията за качване към този плъгин (качване на файлове на сървъра) - напротив, не се отказа. FTP работи добре и при мен. Но ако не пречи много, нека остане
    • Би било хубаво да мога да залепя красив бутон към връзката за изтегляне - въпреки че трябва да напиша само class = "button"

    ABAP

    Свали файл!

    • Е, ако броите броя на изтеглянията не само от вашия сайт, но просто от връзка
    • Възможност за забрана директно свалянефайл, без да показва къде се намира на сървъра.

    Това е толкова малък списък.

    Преглед

    След като вземем решение за ТЗ, ще започнем да обмисляме какво директно ни се предлага.

    1. Plugin Download Counter 1.2, изтеглен от тук.

    Първоначално страницата на плъгина беше локализирана, но авторът не я поддържа повече от 4 години. Създаваме друга папка за него в директорията на добавките за мен - брояч за изтегляне, хвърлете и двата файла там. В резултат - къде мислите? - настройките за него се появяват в записите. Много оригинално, но добре.

    Влизаме вътре, пишем пътя до файла download-manager.php (наистина не обичам да хвърлям глупости точно в корена). И вижте какво имаме. Качете файла, проверете дали се изтегля ръчно управление, ако въведете директна връзка в браузъра, въведете пътя в приставката, за да създадете брояч. На теория трябва да се създаде ID, който след това ще трябва да се вмъкне навсякъде. Но нищо не се случи - дава грешка "Грешка - Не може да се запази записът." Е, добре, ние убедихме, прехвърляме го в корена на download-manager.php - отново нищо, същата грешка. Е, по дяволите, златна рибка, не ми беше достатъчно да разбирам плъгини, от които авторът не се отказа. Освен това функционалността е практически нулева.

    2. Plugin Download Counter Advanced 1.1, изтеглено същото.

    Веднага ще кажа, че и при мен не работи, така че можете да прочетете за неговата инсталация и конфигурация само от академичен интерес. Всъщност това е същият плъгин, само леко модифициран. Слава Богу, въпреки че инструкцията не е преведена, можете да я прочетете нормално, а не да се опитвате да разберете какво има предвид преводача. Между другото, в админ панела - изглежда, че е съвсем различен плъгин, предлагащ актуализиране (да, смокини). Подобно на предишния плъгин, неговата страница беше разположена и по същия начин авторът не го поддържа повече от 4 години. По аналогия създаваме друга папка за него в директорията на добавките, моята е брояч за изтегляне, хвърляме всички файлове там. Настройките изглеждат, разбира се, по-богати, въпреки че скоростта на изтегляне е ограничена веднага за всички файлове и не е зададена за всеки поотделно. Къде е файлът download-manager..php (не забравяйте името на файла накрая, но къде са всички изтегляния - познах от първия път, което ме хвърли в ужасно учудване. Както се оказа по-късно, познах с името на директорията, в която да поставя изтеглянията, тук моята логика работи 100% същата като автора на плъгина.

    Добавяме имената на папките, които имаме на сървъра, в директорията за изтегляне (в настройките „категории и директории“), за да улесним избора на пътя до файловете. Ако не ги добавите, тогава ще трябва да изтеглите всичко в корена на изтеглянията. Запазете, можете да добавите изтегляния. Ето какво приблизително получаваме.

    Сега се опитваме да вмъкнем в публикацията. Добавяме връзка, в нея променяме нашата връзка към кода, който се издава директно в настройките на плъгина. И тогава ... И смокини за вас! HTTP грешка 500 (вътрешна грешка на сървъра): Възникна неочаквана ситуация, докато сървърът се опита да изпълни заявката. Е, тъкмо щях да ви кажа как да добавите брояч директно към публикацията, какво ще стане, ако връзката вътре за да се случи

    ABAP

    < ahref="http://chewriter..jpg" />

    тогава можете да покажете бутона за изтегляне - криво, наистина. Ето ви плъгина, загубихте времето си. Той не води особено статистика, защото къде е проблемът, няма да го разберем.

    Това е точно плъгинът, към който беше предложено да се актуализира горният брояч на изтегляния Advanced. Е, той предлага - и добре, да теглим, да видим. Плъгинът не е актуализиран повече от 3 години, а някои потребители дори сами направиха корекции в кода му. Инсталира се доста успешно, аскетизмът на настройките не вдъхва оптимизъм. Между другото, браво също, познаха къде да поставят настройките - не по-лошо от предишния случай. Добавяме броячи на страницата с настройки, всичко изглежда подчертано, както трябва.

    Да видим какво имаме с добавката към поста. Да, без бутони. И, разбира се, забравих точно там, всичко е интуитивно. Да преминем към инструкциите. Необходимо е да се блокира сложна структура, състояща се от кратки кодове като , изтеглени и в същото време (вероятно поради NC) всъщност не се брои нищо.

    Поради това няма да бъде разглеждано допълнително, заедно с плъгина Download Counter Chart, който отива към него, който показва информация в графична форма, ние няма да извършим.

    Написано от наш сънародник, но за съжаление всичко, което той може да направи, е да покаже броя на изтеглилите файла до името му - не се предоставят нито статистика, нито други екстри. Ако обаче сте почитатели на минимализма, това е, от което имате нужда. Само не забравяйте, че няма бутони, кратък код като


    Направи си сам брояч на изтегляния за wordpress

    ще трябва да се въведе ръчно. Много е добре, че авторът е нарисувал всичко в детайли, не трябваше да го тествам сам.

    Е, ако говорим за плъгини, написани от наши хора, тогава няма как да не споменем още един. Неговият огромен плюс е, че ви позволява да преброите не само броя изтегляния на файлове, но и само кликвания върху връзки - няма значение дали водят до файл или просто до друга страница. Или към файл на страница на някой друг 🙂 Той също ще изчисли това или по-скоро теоретично трябва да го изчисли. Със статистиката всичко също не е толкова горещо с него, няма бутони на панела за редактиране, няма и ограничения за изтегляния. Но все пак е интересно да се види. Така че изтеглете и инсталирайте. По принцип доста подробно описание има на сайта на автора, така че няма да го разпространявам много. Винаги трябва да имате предвид, че ако искате да зададете брояч на файл или на връзка, тогава трябва или да използвате кратък код от типа, или да вмъкнете class = "count" клас във връзката. Това, разбира се, е досадно, с бутон би било много по-удобно. Но най-дразнещото е, че след всички жестове пак не успях да го накарам да работи адекватно - ако беше използван краткият код, тогава самата връзка за изтегляне не се показваше, а ако беше използван класът, статистиката за връзката не се показваше се появяват в админ панела. Екранните снимки могат да се видят от автора - ако ви харесва самата идея - опитайте, може би ще успеете.

    Наистина, много просто. Не са необходими кратки кодове и т.н. Този плъгин обаче предоставя статистика само за автора, но за посетителите, до връзката към файла, не се показва.

    Все пак трябва да се отбележи, че се води подробна статистика кой какъв файл е изтеглил и кога. Въпреки това не е много удобно да го използвате.

    Настройките включват следното:

    • Можете да посочите директорията, от която файловете могат да бъдат изтеглени
    • Можете да посочите типовете файлове, които са разрешени за изтегляне
    • Деактивирайте изтеглянето на файл като автор
    • Задайте в секунди интервала, през който многократните щраквания върху връзка от едно и също IP ще се броят само веднъж
    • Ограничете броя на файловете, които могат да се изтеглят от едно IP на ден
    • Използвайте някаква междинна страница с информация, че изтеглянето сега ще започне

    Всичко това обаче работи само ако (как да го кажем просто...) имате разрешение да редактирате файла .htaccess или ако посочите връзката директно, като я вмъкнете в

    Тъй като обаче нямаше възможност да показва статистика за потребителите и не исках да запомня типа на връзката, спрях да я обмислям, като реших да се върна само ако другите добавки в опашката не могат да решат задачата .

    По отношение на показването на информация, този плъгин е много подобен на този, разгледан в предишния параграф. Различава се по това, че ви позволява да преглеждате статистики отделно седмично, месечно, за всеки период и само топ 10. От гледна точка на възможностите си е много по-мизерен, няма статистика за последното изтегляне или за конкретен файл, да не говорим за възможността за налагане на ограничения за изтегляне на файлове. Изобщо няма ясна документация. Останах с впечатлението, че това е просто някакво недоразумение, а не плъгин. Дори не искам да давам екранни снимки, но за да бъда обективен, все пак ще ги дам, авторски права.

    Е, стигнахме до нещо повече или по-малко достойно. Близо половин милион изтегляния говорят нещо. Официалната страница на плъгина е тук. За да вмъкнете файл в публикация, трябва да използвате стрелката над визуалния редактор (иконата не се появява в самия него)

    И в прозореца, който се показва, изберете желания файл (това е пример, ако вече е качен чрез FTP)

    След това кликнете върху бутона „Запазване на ново изтегляне“.

    и като отидете на следващия екран, изберете формата за изтегляне и щракнете върху вмъкнете впост. Възможно е нищо да не се случи. Приставката е леко бъгова с най-новите версии wordpress. Следователно трябва допълнително да кликнете върху връзката Преглед на изтеглянията

    И дори тогава, след като първо сте избрали формата за изтегляне, щракнете върху връзката Вмъкване точно пред файла, който искате да вмъкнете.

    След това в публикацията ще се появи съответният кратък код на типа

    ABAP

    [downloadid="7592" format="1"]

    Плъгинът изисква фина ръчна конфигурация, но не са предоставени WYSIWYG. Добре, че трябва да го настроите само веднъж. Подробната документация е на автора.

    Ето примерна настройка:

    ABAP

    (заглавие)

    < ahref= "(url)" title="Изтеглени (посещения,"ни разу","1 раз","% раза"}">{title}!}

    Трябва да се отбележи, че склоненията не се поддържат, т.е. ако файлът е изтеглен 21 пъти и имате „времена“ във вашия шаблон, тогава ще звучи някак неруски.

    И ето опцията за бутон:

    ABAP

    - (описание), (размер), изтеглено (дата, "Y-m-d"), изтеглено (посещения) пъти

    < ahref= "(url)" title="Изтеглени (посещения,"ни разу","1 раз","% раза"}">!} - (описание), (размер), изтеглено (дата, "Y-m-d"), изтеглено (посещения) пъти

    изглежда така:

    Е, след известно усъвършенстване започна да изглежда така (все още без бутони):

    Код на реда:

    ABAP

    (filetype_icon) (title) (Размер на файла: (размер), Качен: (дата,"d.m.Y"), Изтеглен (посещения) пъти)
    (описание)

    Списъкът с възможности е доста широк:

    • Можете да качвате файлове както с негова помощ (като щракнете върху стрелката), така и да посочите мястото, където са, ако са били качени по-рано чрез FTP, можете просто да посочите URL
    • Скрива истинското местоположение на файла, можете да замените всяка необходима URL комбинация
    • Можете да използвате бутона за изтегляне, включително вашия собствен
    • Не отчитайте изтеглянията от администратора и всички ненужни IP адреси, включени в списъка за изключване на контра
    • Дали да се броят многократните изтегляния в рамките на определено време от същия IP
    • Можете да зададете няколко формата - с картина, с брояч, без брояч и т.н., и да използвате всеки от тях в подходящата ситуация
    • Има качване на журнала за изтегляне под формата на csv файл

    Ако се качи някакъв mp3 или видео файл, трябва да посочите за тях, принудително изтегляне или не. Ако принудите - тогава, като щракнете върху него, той ще бъде изтеглен, ако не е отметнат - възпроизведен, след това запазване - с десния бутон на мишката. Искам да отбележа, че файловете, качени с негова помощ, не се поставят там, където е създадена вашата специална директория за файлове, а в създадената от него wp-content/uploads/downloads/ - трябва да запомните това, както и факта, че при изтриването им от статистиката - физически файловете се изтриват и от сървъра. С тези, които се качват през FTP - всичко е ОК. Освен това, ако вмъкнете връзка в различни публикации към един и същ файл, тогава не разбрах дали ще ги обобщи. За съжаление, той не поддържа никакви ограничения за изтегляне, с изключение на факта, че можете да забраните на всички да изтеглят, с изключение на регистрираните потребители. Когато искате да покажете името на файла в долния ред на браузъра или трябва да го промените на неговия ID, трябва да запомните да отидете в настройки->постоянни връзки и да запазите конфигурацията там, така че всичко да е правилно написано в . htaccess - без това файловете няма да се изтеглят!

    Статистиката се показва на три места едновременно - в конзолата, в информация за файлове и в регистрационни файлове за изтегляне. Това създава определени неудобства, например, когато трябва да видите кога файлът е изтеглен за последен път, но можете да качите статистика под формата на csv файл и след това да го сортирате в Excel. Като вземем предвид факта, че Excel има дяволската способност да изгражда необходимите таблици и диаграми, тогава може би това не е лошо. Мисля обаче, че екранните снимки ще кажат повече:

    Е, екранна снимка на самия дневник:

    В същото време огромен плюс е, че в конзолата се появява джаджа със статистика като тази:

    Като цяло можем да кажем, че след малко коригиране плъгинът върши добре работата си.

    Този плъгин е написан от същия автор като плъгина WP-Polls, който използвам на този сайт, например. Въпреки че се радва, в сравнение с него, на порядък по-малко популярен. Но да видим дали е заслужено. Цялата документация може да бъде намерена на уебсайта на автора. В основата си плъгинът е абсолютно идентичен с предишния - шаблонът е написан по същия начин, няма ограничения за изтегляне, освен за регистрирани-нерегистрирани потребители, също така се изисква да се използва кратък код на формата

    ABAP

    [downloadid="7592"]

    и за останалите точки:

    • Можете да качвате файлове както с негова помощ (до два Mb, добре, или колко сте посочили в php.ini), така и да посочите мястото, където са, ако са били качени по-рано чрез FTP, можете просто да посочите URL
    • Скрива истинското местоположение на файла, но не е възможно да се замени необходимата URL комбинация, има само няколко фиксирани опции, основната не работи за мен
    • Може да се конфигурира да показва информация на посетителите за размера на файла, колко пъти е изтеглен, кога е изтеглен
    • Можете да покажете икона за съответните типове файлове
    • Можете да нулирате брояча или да зададете желаната стойност

    Има обаче и някои разлики. Първо, няма бутон визуален редактор, с който можете да вмъкнете кратък код. По-скоро има бутон, но за да го използвате, първо трябва да добавите брояч за файла в настройките на плъгина и след това този бутон ще добави ID-то на брояча директно към публикацията. Второ, има само един шаблон и няма да работи за показване на различна информация за различни файлове. От плюсовете на статистиката показва кога последно е изтеглен файла, иначе има само минуси - няма качване в csv файл, няма преглед кой е изтеглил (няма IP), няма разпределение по дата.

    Но иконите са по-красиви (по-късно ги прикачих към предишния плъгин). Резултатът от работата му е следният:

    Освен това, когато изтривате запис от базата данни, той пита дали е необходимо да изтриете и самия файл или да го оставите. Но по отношение на съвкупността от свойства ми хареса по-малко от предишния - поне поради факта, че трябва да вмъкнете файла отделно извън публикацията, но няма специални минуси - изборът между тях е въпрос на вкус, първият има повече опции, по-подробна статистика, вторият - малко по-удобни (макар и по-бедни) статистики и по-малко функции.

    В действие влезе тежката артилерия. Плъгинът е предимно русифициран и е мениджър за изтегляне, а не брояч. Възможно е да се ограничи скоростта на изтегляне и броя на изтеглянията на човек на ден.

    Но бих казал, че някои от функциите на този плъгин са излишни, а статистически необходимите не са достатъчни. Много настройки, джаджи за изтегляне, сложна система за синхронизация, система за показване на mp3 тагове, показване на flv файлове, организиране на хранилище за минифайлове, показване на всички файлове, посочени на страницата в началото или в края на публикацията и т.н. и т.н.

    Дори не искам да давам скрийншоти на всички настройки.

    Но с всичко това - за да покажа красиво шаблона в публикацията - трябваше да редактирам стиловия файл в него, като намалих ширината. Плюс това, за да се покаже шаблонът по подразбиране, е необходимо след вмъкване на краткия код с бутона

    въведете ръчно името на шаблона в кода. Известен конфликт с руското име. Между другото, изглежда така (ще дам три варианта на шаблони наведнъж):

    Брои - чрез пън-дек (е, или повече от едно изтегляне от IP не се брои, не знам). Статистиката е малко по-малко от напълно лоша, много подобна на плъгина, току-що обсъден по-горе.

    Общо взето останах с впечатление - здрав, но глупав. Подходящ за известно съхранение на файлове и дори тогава - ако е във връзка с друг плъгин. Погледнах го - да, и съборен.

    Честно казано, когато прочетох описанието му, си помислих - това е, от което имам нужда!

    Брояч, защита с парола, кратък код, вмъкнат от бутон, бутон за редактиране и др.

    И изглежда така (той даде два използвани три шаблона наведнъж):

    Въпреки това, за да добавите файл, първо трябва да добавите брояч за него в добавките. Второ, на практика няма никаква статистика.

    Трето, не можете да зададете показването на размера на файла за потребителя. Четвърто, няма ограничение на скоростта на изтегляне, има само защита с парола за файла. Шаблоните не могат да се редактират. И голям надпис с предложение за закупуване на премиум версия за 45 долара. Е, общо взето разбирате. Всичко вкусно е за баба. Дезактивиран и съборен. И красиви рамки, копчета и т.н. - Аз самият ще предписвам в стилове, когато искам.

    Резюме

    Инсталирайте по стандартния начин (чрез копиране в директорията wp-content/plugins/download-monitor/, нека се актуализира, замени всички икони с икони от архива в директорията wp-content/plugins/download-monitor/img/filetype_icons/и активирайте.

    За в бъдеще, ако се добера до него, мисля да правя линкове в хубави рамки с помощта на css3, за което най-вероятно също ще пиша. Останете с нас 🙂

    Актуализация Сега авторът е преработил плъгина WordPress Download Monitor и е създал напълно различна версия от оригинала. Проверих го, но ми хареса много по-малко, защото шаблонът на формуляра за това как ще изглежда връзката за изтегляне сега не е толкова лесен за редактиране. Авторът реши, че готовите предварително зададени изгледи ще бъдат достатъчни. Например, ако в менюто за изтегляне, след това - настройки, изберете желания изглед от шестте предварително зададени, щракнете върху запазване

    След това, когато изберете втората опция, получавате нещо подобно:

    Тези. На нова версияизползването на реда, който предоставих в описанието, няма да работи, но ще е необходимо да напишете специален php файл, който този изходен шаблон ще опише. Но най-тъжното дори не е това - а фактът, че този php файл, ако бъде поставен в директорията с плъгина, ще се презаписва всеки път, когато плъгинът се актуализира. И ако го поставите в директорията с темата, тогава, когато промените темата (въпреки че това, разбира се, се случва много по-рядко). Но така или иначе написването му е доста трудоемка задача и засега нямам желание да го правя. Така че единственият плюс на актуализирания плъгин

    Реших да видя колко пъти някой от моите скриптове се изтегля от сайта. За да направя това, реших да напиша брояч за изтегляне на файлове за сайта. Има много реализации на тази задача в Интернет, но въпреки това прочетете моето решение.

    Логиката на брояча за изтегляне е доста проста. За да го реализираме, ще използваме любимия ми ajax. Задържаме бутона, когато настъпи събитието clik, извикването чрез ajax към php файлброяч. В php ajax заявката се обработва и броят на общия брой изтегляния се записва в текстов файл. След успешен запис се връща отговор с общ брояч на изтегляне и потребителят се пренасочва към връзка за изтегляне на файла (файлът се изтегля). Ето такава проста логика. Сега нека започнем да я прилагаме. Нека предварително създадем файл test.zip за изтегляне. Нека направим кода на бутона и да покажем брояча на скокове.

    Изтегляне на файл Брой изтегляния:

    Създадохме бутон с id="btnSend" , ще покажем брояча в диапазон с id="countView" , ще съхраним връзка към изтегления файл в атрибута data-download

    Сега нека прикрепим манипулатор за кликване към бутона. Тук вече ще използваме js и jquery. Можете да прочетете как да внедрите clik с помощта на jQuery. Но преди да инсталираме манипулатора на щракванията, ще получим ajax достъп до файла count.php, който ще съдържа цялата работа на брояча. Можете да прочетете повече за прехвърлянето на данни с ajax. Това е необходимо, за да се покаже от файла, където пише броячът, броя на вече направените изтегляния и да се покажат в интервал с id="countView"

    /*получаване на текущия брой изтегляния*/ $(document).ready(function()( //забрана на кеша на ajax заявка //в противен случай броячът ще се провали $.ajaxSetup((cache: false)); var html; $. ajax (( //как ще предаваме тип данни: "GET", //къде предаваме url: "count.php", //какви данни предаваме data: (флаг: 2), //събитие след получаване на отговор от count.php успех : функция(данни)( html=данни; //изведете текущия брой изтегляния $("#countView").html(html); ) )); /*закачете събитие върху бутона за изтегляне на файл */ var clickevent=false; // флаг за проверка на щракване // манипулатор на щракване $("#btnSend").click(function()( if(!clickevent)( $.ajax(( //как ще изпратим тип данни: "GET", //където предаваме url: "count.php", //какви данни да изпратим data: (флаг: 1), //събитие преди изпращане на ajax beforeSend: function()( //ако бутонът е бил щракнат then true clickevent=true; ), //събитие след получаване на отговора, //получете данните в data success: function(data)( //след извършване на действията, позволяваме отново //да обработим щракването върху бутона clickevent = невярно; html=данни; //изведе нов брояч $("#countView").html(html); //получаване на връзката от data-download //пренасочване към връзката за изтегляне, изтегляне на файла window.location.href = $("#btnSend").data("download"); ))) ) return false;//забранява обработването на събитието при щракване )); ));

    За да предотвратя многократно погрешно натискане на бутона за изпращане, въведох флага clickevent в скрипта. Докато отговорът от count.php не бъде върнат с актуализираните данни на брояча, щракването върху бутона ще бъде забранено. Мисля, че работата на кода след щракване върху бутона е повече или по-малко ясна. След щракване върху бутона за изтегляне, данните се прехвърлят във файла count.php, където се обработват и се връщат актуализираните данни от брояча, възниква пренасочване към връзката за изтегляне и съответно файлът се изтегля.

    Нека сега разбием сърцето на нашия скрипт, а именно файла count.php.

    Функция clearInt ($date)( //прехвърляне на дата към неотрицателно число връщане abs((int)$date); ) if($_SERVER["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest") ( //проверка кой флаг е дошъл if (clearInt($_GET["flag"]==1)) ( //отваряне на файла за четене $f=fopen("mycount.txt","a+"); //блокира достъпа до файла от други програми flock($ f,LOCK_EX); //вземете стойността на брояча от файла $count=fread($f,100); //добавете брояча @$count++; //заменете файла ftruncate($f,0); //подаване на нов брояч, четене fwrite ($f,$count); //затваряне на файл fclose($f); //върната стойност echo $count; ) if(clearInt($_GET["flag"]==2) ) ( $c=fopen(" mycount.txt","a+"); flock($c,LOCK_EX); $festc=fread($c,100); fclose($c); //връща стойност ехо $festc ;))

    Тук мисля, че същото е просто. Ако се появи флаг 1, тогава пренаписваме брояча. Ако се появи флаг 2, данните за броя на изтеглянията просто се връщат. Всичко останало според мен е ясно от коментарите в кода.

    Брояч за изтегляне на joomla

    Реших да прикача подобен брояч към един от моите joomla проекти. На теория, разбира се, трябва да напишете или отделен модул, или да интегрирате кода в контролера на компонента за съдържание на com, така че данните от брояча да се записват не във файл, а в базата данни и за всяка статия поотделно. Но няма време за такова развитие и реших въпроса по-просто. Имах нужда от брояч за една страница. Взех файла count.php и го прехвърлих в шаблона на joomla, който е свързан в момента (в основата на шаблоните на сайта/вашият_шаблон). Не забравяйте да вмъкнете дефинирания код ("_JEXEC") или умрете; в самия връх на count.php; (това е за joomla). Вмъкваме бутона за изтегляне в страницата, която създаваме, а js кодът също може да бъде вграден в страницата или свързан като отделен файл. Например имам отделен файл (намира се в папката шаблон js). В самия шаблон, в хедъра, връзката се осъществява чрез кода

    
    Връх