Страница 1 из 2

Счётчик кликов по ссылке.

СообщениеДобавлено: 05 сен 2014, 00:33
dimaho
Подскажите пожалуйста, есть ли модуль для concrete который бы выводил на страницу количество кликов по ссылке "<a href=.....". У меня стоял (и сейчас там) самопальный счётчик swf, который я сам рисовал в action script с помощью взятого у кого то в интернете кода php. Сейчас счётчик сломался. На страницу закачки переходит, а количество показывает: Undefi. Починить не могу, т.к. потерял исходник. Может есть более простое и не замысловатое решение? На пример- готовый модуль. Или простой код php, вставляемый прямо в страницу, с б.д. в файле txt? Буду примного благодарен, если какой добр человек подскажет простое и понятное решение!

Re: Счётчик кликов по ссылке.

СообщениеДобавлено: 05 сен 2014, 11:10
Count_Raven
Вообще по любой ссылке на странице?
Или по ссылке на файл для скачки? Просто в Concrete5 хранится количество скачиваний для каждого файла (само собой если этот файл загружен в систему через встроенный менеджер файлов, а не просто какой-либо любой файл на сервере).

Re: Счётчик кликов по ссылке.

СообщениеДобавлено: 05 сен 2014, 17:44
dimaho
На файл скачки. Загрузить файл через менеджер concrete не удалось, по этому поместил в отдельный коталог. И, главное - надо что бы статистика загрузок отображалась рядом с ссылкой.

Re: Счётчик кликов по ссылке.

СообщениеДобавлено: 06 сен 2014, 09:32
Count_Raven
dimaho писал(а):На файл скачки. Загрузить файл через менеджер concrete не удалось, по этому поместил в отдельный коталог. И, главное - надо что бы статистика загрузок отображалась рядом с ссылкой.

1. Почему не удалось через менеджер Concrete5? Это бы решило множество проблем, так как там куча готовых инструментов для работы с файлами.
2. Если просто левый файл на сервере, то это уже надо писать своё дополнение для Concrete5, которое будет выводить специальную ссылку через себя и записывать в базу доступ к файлу по этой ссылке. Но это тупое изобретение велосипеда. Зачем это делать, когда всё уже есть внутри Concrete5. Решайте проблему под номером 1.

Re: Счётчик кликов по ссылке.

СообщениеДобавлено: 07 сен 2014, 23:45
dimaho
Ну не в какую не загружаются файлы!!! Два EXEшных файла (приложения). Один, примерно 9, другой 12 мегов. Очень пользуются популярностью у посетителей. Примерно 150 000 загрузок было только до того, как сайт перевёл на Concrete. Сейчас не знаю сколько (((
P.S. Менеджер пишет, что недопустимый тип файла.
ещё P.S. Файлы - cамораспаковывающийся архив WinRar, а другой- то же cамораспаковывающийся архив, но в каком приложении сделан, не знаю, так как его не я делал.

Re: Счётчик кликов по ссылке.

СообщениеДобавлено: 07 сен 2014, 23:53
guyasyou
dimaho писал(а):Менеджер пишет, что недопустимый тип файла.

Вот и ответ...
По ссылке MySite.ru/index.php/dashboard/system/permissions/file_types/ можно добавить .exe типы в разрешенные.

Re: Счётчик кликов по ссылке.

СообщениеДобавлено: 07 сен 2014, 23:59
Count_Raven
dimaho писал(а):Ну не в какую не загружаются файлы!!! Два EXEшных файла (приложения). Один, примерно 9, другой 12 мегов. Очень пользуются популярностью у посетителей. Примерно 150 000 загрузок было только до того, как сайт перевёл на Concrete. Сейчас не знаю сколько (((
P.S. Менеджер пишет, что недопустимый тип файла.
ещё P.S. Файлы - cамораспаковывающийся архив WinRar, а другой- то же cамораспаковывающийся архив, но в каком приложении сделан, не знаю, так как его не я делал.

Вот с этого надо было начинать ;)
Guyasyou уже ответил. В настройках введите в поле расширения файлов, которые будут разрешены к загрузке.

Re: Счётчик кликов по ссылке.

СообщениеДобавлено: 08 сен 2014, 01:59
dimaho
СПАСИБО!!! )
Завтра так и сделаю. А что бы кол-во загрузок отображалось на стр. можно сделать?

Как вам тут репутацию то повысить? Или "спасибо" сказать? Не кто ведь, кроме вас на мои вопросы не отвечает…

Re: Счётчик кликов по ссылке.

СообщениеДобавлено: 08 сен 2014, 02:30
dimaho
Загрузил уже :D
…файлы через менеджер.

Re: Счётчик кликов по ссылке.

СообщениеДобавлено: 08 сен 2014, 09:22
cmsservice
dimaho писал(а):А что бы кол-во загрузок отображалось на стр. можно сделать?

Смотря как ссылки на файлы делаете. Если с помощью модуля Файл (File), то для него можно сделать отдельный template (надеюсь знаете как, если нет, то спрашивайте, объясним). Туда из контроллера передается объект типа File (переменная $fo), вот у него можно взять количество загрузок так
Код: Выделить всё
$fo->getTotalDownloads() 

Как оформить вывод, это уже ваше дело :)

Re: Счётчик кликов по ссылке.

СообщениеДобавлено: 08 сен 2014, 23:14
dimaho
Вообще не понял о чём Вы говорите.( Я в php вобще НОЛЬ! Одно дело- готовый код переделать, а другое- самому что то написать!( Подскажите пожалуйста, как сделать то?

P.S. Ссылку делаю с помощью модуля Файл. Как сделать отдельный template - не знаю. Подскажите пожалуйста. Ссылок для скачивания будет несколько на разных страницах. Ведь, если кол-во скачиваний отображается в менеджере загрузок, значит его можно как то инклюдить и на страницу с ссылкой? Так? Только надо знать переменную, которая показывает кол-во загр. именно этого файла? для этого нужно хорошо знать структуру concrete. Я не знаю.

Re: Счётчик кликов по ссылке.

СообщениеДобавлено: 09 сен 2014, 09:55
Count_Raven
dimaho писал(а):Вообще не понял о чём Вы говорите.( Я в php вобще НОЛЬ! Одно дело- готовый код переделать, а другое- самому что то написать!( Подскажите пожалуйста, как сделать то?

P.S. Ссылку делаю с помощью модуля Файл. Как сделать отдельный template - не знаю. Подскажите пожалуйста. Ссылок для скачивания будет несколько на разных страницах. Ведь, если кол-во скачиваний отображается в менеджере загрузок, значит его можно как то инклюдить и на страницу с ссылкой? Так? Только надо знать переменную, которая показывает кол-во загр. именно этого файла? для этого нужно хорошо знать структуру concrete. Я не знаю.

Ну, не надо особо ничего знать.
В общем делаем так:
1. Создайте папку(и) /blocks/file/templates
2. Скопируйте файл /concrete/blocks/file/view.php в вашу новую папку /blocks/file/templates и переименуйте этот новый файл во что-нибудь типа downloads_count.php
В итоге у вас должен быть файл по такому пути: /blocks/file/templates/downloads_count.php
3. Откройте его в редакторе и немного измените код. В итоге должен получиться вот такой:
Код: Выделить всё
<?php   defined('C5_EXECUTE') or die("Access Denied.");
   $f = $controller->getFileObject();
   $fp = new Permissions($f);
   if ($fp->canViewFile()) {
      $c = Page::getCurrentPage();
      if($c instanceof Page) {
         $cID = $c->getCollectionID();
      }
?>
<a href="<?php echo  View::url('/download_file', $controller->getFileID(),$cID) ?>"><?php echo  stripslashes($controller->getLinkText()) ?></a>
<span>(Скачано <?php echo $f->getTotalDownloads(); ?> раз)</span>
 
<?php
}
?>

4. Теперь в Concrete5 перейдите в режим редактирования страницы, кликните на ваш блок с файлом и в появившемся меню выберите "Оформление". Там в окне в списке выберите наш "Downloads Count". Все. Сохраните. Готово.
5. Экспериментируйте над оформлением. Сам шаблон я вам сделал. Что и как будет выглядеть дальше это уже ваше дело.

Re: Счётчик кликов по ссылке.

СообщениеДобавлено: 10 сен 2014, 00:53
dimaho
СПАСИБО!!! Вообще всё замечательно! Только вот огорчает, что не обновляется кол-во при каждой загрузке. обновилось только после очистки кэша. Это нормально, или я накасячил? Вот код переделаный:
Код: Выделить всё
<?php   defined('C5_EXECUTE') or die("Access Denied.");
   $f = $controller->getFileObject();
   $fp = new Permissions($f);
   $b = 222;
   if ($fp->canViewFile()) {
      $c = Page::getCurrentPage();
      if($c instanceof Page) {
         $cID = $c->getCollectionID();
      }
?>
<a href="<?php echo  View::url('/download_file', $controller->getFileID(),$cID) ?>"><?php echo  stripslashes($controller->getLinkText()) ?></a>
<span STYLE=";font-size: 15px; color:#000099"><br>&#160;&#8226;<u>Загружено <?php echo $b+$f->getTotalDownloads();?> раз.</u>&#8226;</span>
<?php
}
?>

Re: Счётчик кликов по ссылке.

СообщениеДобавлено: 10 сен 2014, 10:15
cmsservice
dimaho писал(а):Только вот огорчает, что не обновляется кол-во при каждой загрузке.

Это нормально ибо чтобы обновилось на экране, счетчик должен перечитаться. То что посетительль нажал на ссылку не вызывает перезагрузки страницы. Это все можно реализовать, но боюсь для Вас это будет сделать не легко (сами же сказали что не программируете), да и нужна ли эта "рюшечка"

dimaho писал(а):обновилось только после очистки кэша. Это нормально, или я накасячил?

Ну как сказать, т.е. поведение предсказуемое. Чтобы от кэша не зависело, можно подправить параметры в контроллере модуля File. Т.е. кладете в /blocks/file файл /concrete/blocks/file/controller.php и меняете в нем содержимое на такое

Код: Выделить всё
<?php
   defined('C5_EXECUTE') or die("Access Denied.");
   
   class FileBlockController extends Concrete5_Controller_Block_File {
      protected $btCacheBlockOutput = false;
      protected $btCacheBlockOutputOnPost = false;
      protected $btCacheBlockOutputForRegisteredUsers = false;
   }

Re: Счётчик кликов по ссылке.

СообщениеДобавлено: 10 сен 2014, 23:27
dimaho
Теперь вообще всё замечательно! СПАСИБО!!! :D
Летом закажу майку с надписью:
I LOVE CONCRETE5! ;)