Views-Top v.1.1 by Sander для DLE

Views-Top v.1.1 by Sander

Views-Top v.1.1 by Sander

Дополнение для тега custom позволяющее выводить реальный топ из просматриваемых материалов
Как известно, в DLE есть возможность вывод "популярных" новостей.
Для этого есть тег {topnews} (лично я считаю его морально устаревшим)
А так же сортировка в теге custom:
{custom order="reads"}
или же с ограничением по дате
{custom order="reads" days="30"}

Недостатки этих методов в том, что в первом случае выводятся просто новости с наибольшим количеством просмотров. Даже если эта новость уже как год не актуальна и никому не интересна в данный момент, но у нее наибольшее количество просмотров за все время.
Во втором случае используется ограничение по дате публикации. Т.е. это может быть супер-популярный сериал или фильм вышедший 2 месяца назад, который все сейчас смотрят и обсуждают, но в топе его не будет.

Оба эти недостатка решаются с помощью данного модуля. Он позволяет вывести в теге custom реальные популярные новости, которые просматриваются в данный момент. Не принимая во внимание дату публикации. Значение имеют только просмотры в текущий заданный промежуток времени (за последние N-дней).
Примечание: Модуль не сразу будет показывать реальный топ. Ему нужно будет время для сбора статистики.
Так же данная технология работает только при включенном кеше счетчика просмотров!

Пример использования:
{custom order="views_top" category="current" limit="10" template="custom_top"}
В примере использован хак вывода ID текущей категории

Демо


Информация
Стоимость модуля 3wmz
Количество лицензий в комплекте: 1шт
Стоимость дополнительной лицензии: 2wmz
Для работы модуля требуется ionCube Loader v.10.x и старше
В настройках DLE должен быть включен кеш счетчика просмотров.
Версия DLE: 10.1 и старше (14.x включительно)
Версия PHP: 7.1 - 7.3


Новая версия модуля Views-Top v.2



История изменений
v.1.1 - 25.05.2020
+ Добавлена отправка уведомления об ошибке на почту в случае каких-либо проблем в работе модуля.


Контакты
Skype: sander8804
Telegram: @Sandev
E-Mail: oleg.sandev@gmail.com

С уважением,
Олег Александрович a.k.a. Sander
Комментарии: (43)
  1. foto
    VIP 14 мая 2020 14:31 #
    Чудово, те що потрібно!
    Чекаю ще більше крутих модулів) Або оновлення чату))
    0
  2. foto
    VIP 14 мая 2020 23:05 #
    Фигово что не будет работать с « Самый просматриваемый материал за текущий день» :(
    0
    1. foto
      Администратор 14 мая 2020 23:59 #
      Это да. Тот метод требует выключенного кеша счетчика просмотров, а этот наоборот.
      Хотя в принципе наверно подружить их не составит проблем.
      Думаю достаточно будет в engine/modules/cron.php
      Найти:
      news_read=news_read+{$row['count']}

      Заменить на
      news_read=news_read+{$row['count']}, day_read = day_read + {$row['count']}
      0
      1. foto
        VIP 30 мая 2020 14:51 #
        Добрый день! Что то у меня не так отображает. Выставил сначала 7 дней далее через неделю поставил 1 день. Показывает те же самые новости... такого быть не может...
        0
      2. foto
        Гость 26 июля 2020 17:14 #
        Этот способ дружбы работает ?
        0
  3. foto
    VIP 14 мая 2020 23:45 #
    ждем в следующем релизе dle как они это любят)
    0
  4. foto
    VIP 15 мая 2020 10:41 #
    Цитата: Sander
    Это да. Тот метод требует выключенного кеша счетчика просмотров, а этот наоборот.
    Хотя в принципе наверно подружить их не составит проблем.
    Думаю достаточно будет в engine/modules/cron.php
    Найти:
    news_read=news_read+{$row['count']}

    Заменить на
    news_read=news_read+{$row['count']}, day_read = day_read + {$row['count']}

    Спасибо попробуем ;)
    0
  5. foto
    VIP 16 мая 2020 18:49 #
    Ещё вопрос, вывод будет за все время или как ??? Или можно добавлять, например, days="7" ??? что то запутался...
    0
    1. foto
      Гость 16 мая 2020 19:15 #
      Цитата: sneiks
      Ещё вопрос, вывод будет за все время или как ??? Или можно добавлять, например, days="7" ??? что то запутался...

      Можно написать свой промежуток
      0
    2. foto
      Администратор 16 мая 2020 20:17 #
      В конфиге модуля указывается количество дней на протяжении которых ведется сбор и хранение данных.
      В custom указывается только тип сортировки order="views_top"

      Цитата: sneiks
      вывод будет за все время или как

      Это сейчас в DLE реализован вывод за все время. Данный модуль/хак как раз и решает эту "проблему".
      Т.е. смысл тот же что в том модуле "Самый просматриваемый материал за текущий день", только не за 1 день, а за любой заданный промежуток времени. За последние N дней.
      +1
    3. foto
      VIP 30 мая 2020 15:03 #
      Проверил базу данных. Таблица dle_views_top пустая как и строка views_top... то-есть не идёт сбор статистики :( Ваши правки внес. "Кешировать счетчик просмотров новостей" выключен. Что можно предпринять ?
      0
      1. foto
        Администратор 30 мая 2020 15:05 #
        Так же данная технология работает только при включенном кеше счетчика просмотров!
        0
  6. foto
    Гость 16 мая 2020 23:44 #
    Было бы удобно сделать в настройках конструктор, чтобы сделать вывод нескольких топов например за неделю, месяц. У меня например на сайте 4 топа, за сутки, за неделю, за месяц и за 120 дней топ 100. юзаю за сутки ваш модуль, остальные костомка кривая с неправильным отображением с тегом days="кол-во дней".
    0
    1. foto
      VIP 17 мая 2020 11:54 #
      Спробуйте цей хак має працювати.
      0
      1. foto
        Администратор 18 мая 2020 00:34 #
        Хак по вашей ссылке - это custom ajax. Причем не самое безопасное решение.
        Вопрос был не касательно организации табов переключения, а чтобы можно было с помощью этого модуля выводить 4 разных топа за разные промежутки времени.
        Но это к сожалению невозможно в текущей реализации.
        0
        1. foto
          Гость 19 мая 2020 20:01 #
          т.е. с помощью вашего модуля возможно вывести только 1 кастом с 1 промежутком времени? Я правильно понял?
          0
          1. foto
            Администратор 19 мая 2020 20:04 #
            Да, но не совсем.
            Статистика будет собираться за один промежуток времени.
            А количество блоков custom может быть любым.
            Топ 10 за месяц
            Топ 100 за месяц
            Топ 1000 за месяц
            0
    2. foto
      Администратор 18 мая 2020 00:35 #
      В текущей реализации - это никак невозможно.
      Нужно либо плюнуть на оптимизацию и нагрузку, либо значительно усложнять сам модуль, добавлять админку и т.п.
      Пока что я считаю это не целесообразным.
      +1
  7. foto
    VIP 18 мая 2020 21:48 #
    Цитата: Sander
    Хак по вашей ссылке - это custom ajax. Причем не самое безопасное решение.

    А почему это решение не является безопастным?
    0
    1. foto
      Клиент 19 мая 2020 00:28 #
      Потому что данные можно изменить через правку кода.
      0
    2. foto
      Администратор 19 мая 2020 11:45 #
      Основная и пожалуй единственная уязвимость этого метода заключается в том, что с его помощью просто таки элементарно положить сайт.
      А при желании можно вообще организовать перманентный ддос.
      Так же можно забить место на диске создав десятки тысяч файлов кеша.

      Т.е. суть в том, что в шаблоне тег {custom ...} заполняет и оформляет админ.
      А с этим модулем, управлением тега custom, грубо говоря, занимается пользователь. И если пользователь захочет сделать каку - то он сможет это сделать.
      0
      1. foto
        Гость 19 мая 2020 17:05 #
        Приветствую, ну, а в теории, можно эту уязвимость пофиксить? Чисто теоретически? С сохранением функциональности.
        0
        1. foto
          Администратор 19 мая 2020 17:09 #
          Разумеется.
          Достаточно в POST параметрах передавать не строку custom, а имя переменной конфига.
          А уже в конфиге модуля будет эта самая строка с параметрами.
          0
  8. foto
    VIP 30 мая 2020 13:44 #
    А есть возможность в кратком описании новости указывать количество просмотров за этот промежуток?
    0
    1. foto
      Администратор 30 мая 2020 14:28 #
      Да, можно.
      Нужно во все запросы в engine/engine.php в SELECT добавить dle_post.views_top
      Затем в engine/modules/show.short.php добавить обработчик для тега {views_top} или создать php файл и выводить через {include file="..."}
      0
  9. foto
    VIP 3 июня 2020 01:59 #
    А примерно сколько должно пройти времени чтобы топ начал заполняться и отображаться?
    Установил, прошло 30 минут, а в бд таблица dle_views_top всё ещё пуста.
    0
    1. foto
      VIP 3 июня 2020 02:01 #
      А всё, как только написал этот комментарий, таблица dle_views_top чудесным образом заполнилась и топ заработал :)
      0
      1. foto
        Администратор 3 июня 2020 11:07 #
        Модуль работает на штатном кроне. Штатный крон запускается раз в 2 часа.
        Вот у вас в 02:00 (как раз между комментариями) крон и запустился.
        +1
        1. foto
          VIP 3 июня 2020 13:59 #
          Спасибо за разъяснения.
          Можно ещё узнать, в конфиг я указал 7 дней, а что произойдёт по истечении 7 дней? Таблица в бд очистится и начнёт заново заполняться?
          0
          1. foto
            Администратор 3 июня 2020 14:14 #
            Стандартная ротация логов.
            Через неделю будет удален лог только за 8й день и старше.
            0
            1. foto
              VIP 3 июня 2020 15:35 #
              Ничего не понял, но ладно :)
              0
              1. foto
                Администратор 3 июня 2020 17:15 #
                Проще говоря в любой момент времени (через неделю после установки модуля), всегда будет выводиться актуальный ТОП по просмотрам за последние 7 дней.
                Удаляется только старая, ненужная информация.
                +1
  10. foto
    VIP 9 июля 2020 02:17 #
    Добрый день! Если на сайте включены мультикатегории то директива category="current" не будет работать, верно?
    0
    1. foto
      Администратор 10 июля 2020 09:46 #
      Будет.
      Но для DLE 13-14 нужно устанавливать через утилиту управления плагинами:
      https://github.com/San-Dev/dle-plugins/blob/master/custom-category-current.xml
      0
      1. foto
        VIP 13 июля 2020 21:41 #
        Спасибо!
        0
  11. foto
    Посетитель 15 ноября 2020 19:35 #
    {custom order="reads" days="30"}

    Во втором случае используется ограничение по дате публикации. Т.е. это может быть супер-популярный сериал или фильм вышедший 2 месяца назад, который все сейчас смотрят и обсуждают, но в топе его не будет.

    Так всё верно, в топе ничего не будет ведь два месяца равно 60 дням. Вот если фильм опубликован на сайте месяц назад тогда он должен быть в кастоме, верно ?
    0
    1. foto
      Администратор 15 ноября 2020 22:20 #
      Опишу ситуацию немного нереальную, но вероятную.
      Есть сайт с большой посещаемостью, но новости публикуются примерно 1-2 шт в нелелю.
      Вопрос. Как вывести ТОП-10 за неделю?
      {custom order="reads" days="7" limit="10"}

      Выведет одну, максимум две новости из 10 необходимых.

      Суть модуля в том, что он игнорируется параметр даты публикации. Учитывается только реальная популярность материала на данный момент за указанный промежуток времени.
      0
      1. foto
        Посетитель 16 ноября 2020 17:55 #
        При таком раскладе это да, не очень будет.
        А вот удалять логи обязательно ? Ведь можно по сути и не удалять, тогда по будет возможность выводить топы за разные периоды.

        Мне плагин wp дали у него реализация плюс минус такая как я себе представлял. И там тоже есть таблица views_top с датой но там логи не удаляются и по словам разработчика можно выводить топ за любой период.
        0
        1. foto
          Администратор 18 ноября 2020 22:02 #
          Удалять не обязательно.
          Но в текущей реализации не нужно и хранить.

          За разные периоды выводить в принципе да, можно будет.
          Однако время выполнения запроса вырастает примерно до 2х секунд и более.

          Возможно сделаю в модуле 2 варианта, текущий и с возможностью вывода нескольких топов за указанный промежуток времени.
          0
  12. foto
    Клиент 16 декабря 2020 09:51 #
    после установки на новых статьях 0 просмотров, счётчик вообще не обновляется.
    0
    1. foto
      Администратор 16 декабря 2020 17:29 #
      Комментарии предназначены для обсуждения модуля, не получения техподдержки.

      Внимание! У Вас нет прав для просмотра скрытого текста.
      0
  13. foto
    Посетитель 30 сентября 2024 14:10 #
    Приветствую, работает ли на php 8.1 / DLE 17.2?
    0
    1. foto
      Посетитель 30 сентября 2024 14:15 #
      P.S. нашел более новую версию, гугл на эту привел = )
      0
Добавить комментарий

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

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

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