• SanDev.pro
  •  › 
  • Datalife Engine
  •  › 
  • Самый просматриваемый материал за текущий день
Самый просматриваемый материал за текущий день для DLE

Самый просматриваемый материал за текущий день

Пошел ажиотаж данной темы, много обсуждений и т.п. Вот я и решил сделать свой вариант.
Вывод производится стандартным тегом {custom}.
Прошу внимательно прочитать принцип работы.
Метод основан на алгоритме предложенном в этой теме.
Его особенность заключается в том, что в счетчике просмотров учитываются только просмотры за текущий день, т.е. с 00:01 до текущего момента.

Вот для примера включил у себя:
Самый просматриваемый материал за текущий день

Как видно, сначала сортируется по наибольшему количеству дневного просмотра, потом по общему количеству (если количества дневных просмотров равны).
Шаблон:
{title} - ({views} + <b>{day_read}</b>)<br/>

{title} - просто заголовок
{views} - общее количество просмотров, стандартно
{day_read} - количество просмотров за текущий день

Так же отдельно стоит отметить, что данный метод работает только при выключенном (!) кешировании счетчика просмотров.

Установка:
Выполнить запрос в БД:
ALTER TABLE `dle_post_extras` ADD `day_read` INT( 6 ) NOT NULL DEFAULT '0';


Открыть файл engine/modules/functions.php
Найти строку:
		if ($match[1] == "title" ) $news_msort = "ASC";

DLE 11:
		if ($match[1] == "rand" ) { $fixed = ""; $news_msort = ""; }

После нее вставить:
		if ($match[1] == "day_read" ){
			$sql_select = str_replace("e.news_read, ","e.news_read, e.day_read, ",$sql_select);
			$news_sort = $match[1]." DESC, news_read";
		}


Открыть файл engine/modules/show.full.php
Найти код (2шт):
news_read=news_read+1

Заменить на:
news_read=news_read+1, day_read=day_read+1


Открыть файл engine/modules/cron.php
Найти строку:
if( $cron == 2 ) {

После нее вставить:
$db->query( "UPDATE " . PREFIX . "_post_extras SET day_read=0" );

Это будет сбрасывать ежедневный счетчик.


Этот пункт выполнять только если нужна возможность вывода тега {day_read}
Открыть файл engine/modules/show.custom.php
Найти строку:
$news_find = array (

После нее вставить:
$news_find['{day_read}'] = $row['day_read'];


В шаблоне сайта выводить, например так:
{custom order="day_read" limit="10"}


С уважением,
Олег Александрович a.k.a. Sander
Комментарии: (47)
  1. foto
    Посетитель 1 декабря 2013 23:27 #
    А можно сделать без кеширования?
    0
    1. foto
      Администратор 2 декабря 2013 10:25 #
      {custom order="day_read" cache="no" limit="10"}
      +4
      1. foto
        Посетитель 2 декабря 2013 11:19 #
        Большое спасибо!
        +1
      2. foto
        Посетитель 11 декабря 2013 18:08 #
        Обалдеть, может уважаемый Автор сообщит, как ему удалось на этом сайте реализовать древовидные комментарии? :)
        +1
        1. foto
          Администратор 13 декабря 2013 15:12 #
          +1
      3. foto
        Посетитель 23 октября 2017 16:12 #
        А можно ли вывести в fullstory? чтоб там тоже отображалось
        0
        1. foto
          Администратор 23 октября 2017 23:13 #
          Последний пункт установки повторить для engine/modules/show.full.php
          +1
  2. foto
    VIP 6 декабря 2013 13:16 #
    Шикарная доработочка. Юзая custom и category можно многое интересное наделать. Как всегда на высоте!
    0
  3. foto
    Посетитель 11 декабря 2013 18:06 #
    Вот если бы к этому хаку еще и модуль BlockPro прикрутить, т.е. чтобы с картинками (только не методом ДЛЕ) было, это была бы бомба. Автор может это сделать?
    0
  4. foto
    Посетитель 11 января 2014 19:31 #
    На версии 10.1 счетчик просмотров за сегодня не показывает. А жаль..
    0
    1. foto
      Администратор 12 января 2014 01:05 #
      Сомнительно.
      Потому что я его на 10.1 писал.
      0
  5. foto
    Посетитель 25 февраля 2014 13:30 #
    Как сделать не за текущий день, а за месяц?
    0
    1. foto
      Посетитель 26 февраля 2014 23:16 #
      Нужно чтобы счетчик сбрасывался не ежедневно а еженедельно,а то есть в файле cron.php вместо
      day_read=0
      ставим
      day_read=16
      .
      0
      1. foto
        Посетитель 2 марта 2014 01:12 #
        Я ошибся , это строка сбрасывает на 0...поставив 16 ежедневно будет сбрасываться не на 0 а на 16.
        0
  6. foto
    Посетитель 26 февраля 2014 23:05 #
    У меня не сортирует по просмотрам за день,автор пожалуйста помогите разобраться в чем дело,я вам писал подробности в личку.
    0
    1. foto
      Посетитель 27 февраля 2014 10:18 #
      Я установил и у меня сортирует по просмотрам за день. Делал все по инструкции
      0
    2. foto
      Посетитель 27 февраля 2014 10:37 #
      {custom category="31,55" template="top-igry-2" order="day_read" limit="40"}
      category - категории
      template - шаблон
      order - сортировка
      limit - количество новостей
      В BlockPro не работает если ты туда устанавливаешь order="day_read"
      0
  7. foto
    Посетитель 27 февраля 2014 14:25 #
    Можешь выложить куда нибудь весь код из этих файлов или скриншоты,вторую неделю не могу разобраться с этим.. возможна я что то не так делаю.Block.Pro вообще не устанавливал.Буду благодарен если поможешь.
    mad-dog333@mail.ru.. кидай сюда если будет желания.
    0
    1. foto
      Посетитель 27 февраля 2014 17:16 #
      Письмо отправил. С картинками как ты просил
      0
      1. foto
        Посетитель 27 февраля 2014 18:54 #
        Спасибо большое ... у меня все также как и у тебя...но к сожалению нефига не сортирует(( понятия не имею в чем может быть проблема.. счетчик работает, новости выводится,но не как не хочет сортировать.и тег {day_read} тоже не работает.к кому можно обратится за помощью.
        0
  8. foto
    Посетитель 8 апреля 2014 23:15 #
    Шикарный хак, действительно можно классную вещь на сайте реализовать. Отлично работает даже на ДЛЕ 10.2 !
    0
  9. foto
    Посетитель 20 мая 2014 15:53 #
    Сделайте пожалуйста к этому хаку возможность добавления картинок новости, посредством обработки через function crop ДЛЕ, чтобы не только прикрепить картинку, но и заданно масштабировать ее посредством PHP. Могли бы?
    0
  10. foto
    Посетитель 1 февраля 2015 18:03 #
    Помогите пожалуйста фиксом для ДЛЕ 10.4, не работает, стоят одни плюсики, а цифры пропали...
    0
  11. foto
    Посетитель 9 июля 2015 03:36 #
    Пробовал сделать на DLE 10.5 не хочет работать.
    0
  12. foto
    Посетитель 11 июля 2015 06:17 #
    Как мне сделать чтобы Cron сбрасывал значение на 0 не раз в день, а раз в неделю? к примеру. Кто подскажет? Или какую команду можно прописать в Планировщике задач на хостинге? там можно выбирать когда и во сколько сбрасывать.
    0
  13. foto
    Посетитель 25 января 2016 08:50 #
    Здравствуйте!
    А если нет такой строки что делать или куда вставлять нужно?
    if ($match[1] == "title" ) $news_msort = "ASC";
    0
  14. foto
    Посетитель 31 мая 2016 13:08 #
    Найти строку:
    $news_find = array (

    После нее вставить:
    $news_find['{day_read}'] = $row['day_read'];

    Сделал так
    $news_find = array ( $news_find['{week_read}'] = $row['week_read']; '{comments-num}' => number_format($row['comm_num'], 0, ',', ' '), '{views}' => number_format($row['news_read'], 0, ',', ' '), '{category}' => $my_cat, '{link-category}' => $my_cat_link, '{news-id}' => $row['id'], '{rssdate}' => date( "r", $row['date'] ), '{rssauthor}' => $row['autor'], '{approve}' => '' );
    

    выходит ошибка: engine/modules/show.custom.php on line 93
    0
    1. foto
      Администратор 31 мая 2016 13:10 #
      $news_find = array (

      Это не строка, это код. Вставлять нужно после всей строки.
      В разных версиях эта строка по разному выглядит, но начало везде одинаковое.
      0
      1. foto
        Клиент 8 сентября 2017 11:37 #
        А как сделать чтоб не отображался в fullstory ? А то у похожих новостей Постеры не выводятся...
        напишите пжл в скаип-для быстрого решения, спс!
        radyk84
        0
  15. foto
    Посетитель 31 мая 2016 13:23 #
    Цитата: Sander
    $news_find = array (

    Это не строка, это код. Вставлять нужно после всей строки.
    В разных версиях эта строка по разному выглядит, но начало везде одинаковое.


    Спасибо! :)
    0
  16. foto
    Посетитель 23 июля 2017 01:56 #
    А как сделать чтобы было по просмотрам за последние 7 дней, 30 дней?
    0
  17. foto
    Гость 11 октября 2018 02:37 #
    Здравствуйте!

    Мне нужно буду работат с (Так же отдельно стоит отметить, что данный метод работает только при выключенном (!) кешировании счетчика просмотров.)

    Буджет есть 5$
    0
  18. foto
    Посетитель 11 октября 2018 17:33 #
    Здравствуйте!

    Мне нужно буду работат с (Так же отдельно стоит отметить, что данный метод работает только при выключенном (!) кешировании счетчика просмотров.)

    Бюджет есть 5$
    0
    1. foto
      Администратор 11 октября 2018 17:35 #
      Пока что заказы не принимаю.
      Возможно и вовсе не возьмусь.
      0
      1. foto
        Посетитель 11 октября 2018 18:30 #
        Что это сложно?
        0
  19. foto
    VIP 12 февраля 2020 14:32 #
    На 13.3 этот хак работает?
    0
    1. foto
      VIP 12 февраля 2020 22:20 #
      Да работает!
      0
      1. foto
        VIP 13 февраля 2020 09:13 #
        Ты пользуешься этим хаком? Нагрузка большая?
        0
        1. foto
          VIP 13 февраля 2020 09:31 #
          Пользуюсь уже давно. С нагрузкой проблем нет.
          0
  20. foto
    Посетитель 7 июня 2020 21:29 #
    Спасибо большое за хак, а подскажите пожалуйста, как его подружить с Ajax подгрузка custom в нужный блок Заранее спасибо
    0
    1. foto
      Администратор 8 июня 2020 03:13 #
      По идее никаких проблем быть не должно.
      Хотя я и не рекомендую использовать тот вариант модуля.
      0
      1. foto
        Посетитель 8 июня 2020 21:25 #
        Здравствуйте. Спасибо за ответ, да я читал, что Вы писали про этот хак, просто альтернатив нет, ну я точно не нашел. Вот и использую, а проблема почему-то, вот custom в нем задан order="day_read", переключаюсь на другой custom и обратно на order="day_read", получается так, что order="day_read" вообще не учитывается, новости идут в порядке как в пустом custom без order
        0
        1. foto
          Администратор 9 июня 2020 12:22 #
          Тут, к сожалению, ничего подсказать не могу.
          0
          1. foto
            Посетитель 9 июня 2020 22:05 #
            Все равно спасибо за ответ. Я разобрался в чем причина, если это можно так назвать, если не создавать Ваш хак через плагины, а прописывать в ручную, то все работает, если через плагины то не работает, но если создавать хак этот с ajax custom через плагины, возникает ошибка если обращаешься $.post(dle_root+"engine/ajax/custom.php", {castom:$castom}, function(data){
            $targetBox.html(data);
            }); через скрипты к файлу custom.php который создаем при помощи плагинов, пишет что файл custom.php не найден
            0
  21. foto
    Посетитель 4 июля 2020 23:13 #
    Цитата: Sander
    Тут, к сожалению, ничего подсказать не могу.

    Приветствую. А подскажите как вывести не за день, а за 7 дней?
    0
  22. foto
    Гость 22 апреля 2023 22:54 #
    как на 15.2 установить?
    0
  23. foto
    Гость 21 октября 2023 15:42 #
    Как установить на 17 версию? В ней нет такой строчки:
    news_read=news_read+1
    0
Добавить комментарий

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

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

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