Сделать виджет популярные теги за сутки

#1 9 ноября 2015 в 21:13
Приветствую всех!
В 2.3 есть виджет популярные теги, он выводит теги, которые были чаще всего введены за все время существование сайта, как сделать его клоны с параметрами "популярные теги за 24 часа" "за месяц" и т.п.?
Порылся в этом каталоге:
\system\controllers\tags\widgets\cloud

в файле widget.php есть такие строчки:
  1.  
  2. $style = $this->getOption('style', 'cloud');
  3. $max_fs = $this->getOption('max_fs');
  4. $min_fs = $this->getOption('min_fs');
  5. $limit = $this->getOption('limit');
  6.  
И я так понял что нужно дописать параметр про дату в options.form.php
И что нудно для клона виджета?

И все… больше пока ничего не понял..(
#2 9 ноября 2015 в 21:32

И я так понял что нужно дописать параметр про дату в options.form.php

Jestik
Да.
А также прописать про дату в \system\controllers\tags\widgets\cloud\widget.php
Также прописать про дату в БД в таблице cms_tags_bind
И про всё это не забыть до выхода следующего обновления движка.

И что нудно для клона виджета?

Jestik
Скопировать все папки нужного виджета, поменять названия папок, поменять некоторые слова в скопированных файлах. Но вам при успешном решении первого вопроса достаточно будет в админке установить несколько виджетов с разными настройками.
#3 9 ноября 2015 в 22:11
Loadырь, в общем мне готовить кошелек)
#4 10 ноября 2015 в 07:37

мне готовить кошелек)

Jestik
Ни в коем разе. И в мыслях такого не было. Готовьте кучу времени на изучение четырёх иностранных языков: html, css, js и php. А то так и будете всю жизнь кошелёк готовить.
#5 10 ноября 2015 в 09:57
Так нету там поля даты в базе, есть частота использования.



Тут логику выстраивать надо и отдельную таблицу заводить. Что-то типа статистики из первой ветки, что крайне не рекомендую. У одного сайта она распухла до 6 гиг и висит мёртвым грузом, так как открыть статистику не выходит, а владельцу глубоко всё-равно, что сервер падает при попытке открыть её. Вот такая опухоль на базе. В вашем случае то же самое пожалуй будет. Не дурите головы — вот и весь совет.
#6 10 ноября 2015 в 10:42

Не дурите головы — вот и весь совет.

Сергей Сергеевич
Собственно и к вам это тоже относиться. Не говорите то, в чем не разбираетесь.
В данном случае достаточно добавить в таблицу с тегами поле дата, и обновлять ее каждый раз при новом использовании тега, то есть записывать текущее время использования. А в виджете уже выводить теги за последние сутки.

А если уж совсем не хочется использовать родную таблицу тегов, то можно сделать отдельную таблицу для виджета, отлавливать все хуки добавления материалов, выдергивать оттуда теги если есть, и обновлять таблицу виджета использования тегов. Ничего распухать естественно не будет и размер таблицы виджета будет равен размеру таблицы тегов
#7 10 ноября 2015 в 10:51
Rossoman, и флаг вам в руки. Я ведь не разбираюсь.
P.S нет, ну на самом деле такую ерунду порят иногда, что слов нет. Как условия вы будете в вашем столбце ставить? По рунам или расположению звёзд?
#8 10 ноября 2015 в 11:07

Rossoman, и флаг вам в руки. Я ведь не разбираюсь.

Сергей Сергеевич
Зачем писать тогда ерунду?

P.S нет, ну на самом деле такую ерунду порят иногда, что слов нет. Как условия вы будете в вашем столбце ставить? По рунам или расположению звёзд?

Сергей Сергеевич
Условия в столбце… Иллюстрация

Уважаемый, для этого достаточно в php файле вашего виджета делать выборку из базы тегов за последние сутки
Примерно как то так:
  1. WHERE `date_pub` > NOW() - INTERVAL 1 DAY
#9 10 ноября 2015 в 17:48
Я тут еще посмотрел базу, в cms_tags есть столбец "frequency" — частота, что если сделать задние крон, на изменение каждого значение на 1, и выполнять это задание раз в сутки/месяц и пр.

Не заметил поста выше о базе) Но все же)
#10 10 ноября 2015 в 18:29

столбец "frequency" — частота

Jestik
Это частота не просмотров пользователями страниц с указанными тэгами, а общее количество записей с данным тегом. Вариант с кроном тут "не вариант"
#11 10 ноября 2015 в 20:12
Rossoman, вперёд, и руны в помощь. Созвездия в правильном расположении.
P.S почитайте, чего человек хочет сделать. Ваш столбец тут даже не знаю, как мягче выразится.
#12 10 ноября 2015 в 20:24

а общее количество записей с данным тегом

Loadырь
frequency — частота использования тега. проверил на рабочем сайте, у одного тега была частота 31 и он был первым с списке, изменил на 0 — исчез, все материалы с ним отображаются. Выходит нужно что бы каждый день в 23-59 в столбце frequency все значения изменялись на "0"
#13 10 ноября 2015 в 20:33

изменил на 0 — исчез

Jestik
facepalm
А когда вы просмотрели запись с этим тегом, его frequency увеличилось на 1 или нет?
#14 10 ноября 2015 в 22:11

увеличилось на 1 или нет?

Loadырь
нет. Но при добавлении новой записи с данным тегом, восстановилось старое значение и к нему +1.
#15 10 ноября 2015 в 22:37
Jestik, вот именно, у вас ровно 32 записи имеют этот тег, и при добавлении ещё одной записи, произойдёт новый перерасчёт. И это никак не связать с тем, что за месяц добавили 10 таких тегов и 20 других. Поэтому решение я описал выше. Добавляем столбец в БД в таблице cms_tags_bind в котором указываем дату добавления. И от этой даты уже можно "плясать" в файле \system\controllers\tags\widgets\cloud\widget.php по выборке количества тегов, добавленных за период, указанный в форме настроек виджета, из файла \system\controllers\tags\widgets\cloud\options.form.php.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.