Логіка роботи лічильника скачування задоволена проста. Для його реалізації будемо використовувати мій улюблений ajax. Вішаємо на кнопку при виникненні подій clik звернення через ajax до php файлу лічильника. В php відбувається обробка ajax запиту і запис в текстовий файл цифри сумарної кількості скачок. Після вдалого запису повертається відповідь з сумарним лічильником завантажень і відбувається редирект користувача на посилання для скачки файлу (файл скачується). Ось така ось проста логіка Тепер почнемо її реалізувати. Заздалегідь створимо скачуваний файл test.zip. Зробимо код кнопки і покажемо лічильник скачок.
Ми створили кнопку з id = "btnSend". виводити лічильник будемо в span з id = "countView". в атрибуті data-download будемо зберігати посилання на скачуваний файл
Для запобігання повторного помилкового натискання кнопки відправки я ввів в скрипт прапор clickevent. Поки не повернеться відповідь від count.php з оновити даними лічильника клік по кнопці буде заборонений. Я так думаю робота кожного разу, коли кліка по кнопці більш менш зрозуміла. Після кліка по кнопці завантажити в файл count.php передаються дані, там вони обробляються і повертається оновлені дані лічильника, відбувається редирект на посилання скачування і відповідно сама закачування файлу.
Давайте тепер розберемо серце нашого скрипта, а саме файл count.php.
Лічильник завантажень Joomla
Вирішив прикрутити подібний лічильник на один з моїх проектів на joomla. За ідеєю потрібно звичайно написати або окремий модуль, або інтегрувати код в контролер компонента com content, що б дані лічильника писалися не в файл, а в бд і для кожної статті окремо. Але на на таку розробку немає часу і я вирішив питання більш просто. Лічильник мені був потрібен для однієї сторінки. Я взяв файл count.php і переніс його в шаблон джумла, який на даний момент підключений (в корені сайту templates / ваш_шаблон). Не забуваємо вставити в самий верх count.php код defined ( '_ JEXEC') or die; (Це для джумла). Кнопку закачування вставляємо в створювану нами сторінку, а js код можна так само вбудувати в сторінку, або підключити окремим файлом. У мене наприклад окремим файлом (він знаходиться в папці js шаблону). У самому шаблоні в хедері відбувається підключення через код