Набор типа контента "Новости за сегодня". Возможно ли?

InstantCMS 2.X
#1 23 августа 2019 в 13:45
Доброго всем дня, уважаемые! Собственно вопрос мой в названии темы — можно ли сделать такой набор?
#2 23 августа 2019 в 14:05
Как-то так
#3 23 августа 2019 в 14:15
@noname, это я знаю smileВ этот набор попадают новости за последние 24 часа. Т.е. если сейчас, например, 23 августа 16 часов 15 минут, то в набор попадут все новости после 22 августа 16 часов 15 минут. А мне не нужны вчерашние новости, а только новости с 23 августа 0 часов 0 минут по текущее время.
#4 23 августа 2019 в 14:54
Где-то здесь есть что-то подобное.

Правда, там речь не о последней версии системы и не на русском. Важно: писал любитель может оказаться, что всё не так, а совсем даже наоборот)
#5 23 августа 2019 в 15:13
Олег Васильевич я, спасибо за ссылку. Я имел ввиду стандартными средствами. Подумалось, что может я просто не вижу решения, а оно есть. Значит, видимо, нет. Хотя и был бы логичным такой фильтр из коробки.
#6 23 августа 2019 в 15:18
А другие символы в фильтре не подходят?
#7 23 августа 2019 в 18:14
Казалось бы, можно просто нарисовать фильтр > CURDATE(),
но добрый движок берет CURDATA() в кавычки. smile
  1. SELECT i.*, u.nickname AS `user_nickname`, u.avatar AS `user_avatar`, u.groups AS `user_groups`, f.title AS `folder_title`
  2. FROM cms_con_news i
  3. FORCE INDEX FOR ORDER BY (dataset_curdate)
  4. FORCE INDEX (date_pub)
  5. INNER JOIN cms_users AS u ON u.id = i.user_id
  6. LEFT JOIN cms_content_folders AS f ON f.id = i.folder_id
  7. WHERE (i.date_pub > 'CURDATE()') AND (i.is_approved = '1') AND (i.is_deleted IS NULL) AND (i.is_pub = '1') AND (i.is_parent_hidden IS NULL)
  8. ORDER BY i.date_pub DESC
  9. LIMIT 0, 15
А так, можно хук сделать…
#8 23 августа 2019 в 21:51
Для одного проекта очень надо сделать — буду заказывать
Ris +++
#9 24 августа 2019 в 00:02
Алексей Тимофеев,
В любой контроллер добавляете хук content_list_filter.php
  1. <?php
  2.  
  3. class onYourcontrollerContentListFilter extends cmsAction {
  4.  
  5. public function run($model){
  6.  
  7. if(strpos($_SERVER['REQUEST_URI'], 'yuor_dataset') !== false){
  8.  
  9. $model[1]->filterGt('date_pub', date('Y-m-d', time()));
  10.  
  11. }
  12.  
  13. return $model;
  14.  
  15. }
  16.  
  17. }
Соответственно в имя класса вместо Yourcontroller впишите имя нужного контроллера, а вместо your_dataset — системное имя нужного датасета.
Если надо — могу отдельным компонентом сделать.
#10 24 августа 2019 в 02:20

Если надо — могу отдельным компонентом сделать.

Ris
Это было бы интересно, но временно, как всегда, такие вещи от вас, потом появляются в коробке. smile
#11 24 августа 2019 в 09:58

такие вещи от вас, потом появляются в коробке

vikont
Нет, костыли в коробку не кладут.
Надо подумать, как это можно организовать нормальными методами. Например, сделать для датасетов возможность вписывать требуемый запрос sql вручную.
#12 19 сентября 2019 в 23:37
Алексей Тимофеев,
Вот эта штука
/blogs/zapiski-dinozavra/komponent-dlja-manipuljaci-filtraciei-i-sortirovkoi-v-datasetah.html
решает ваши проблемы добавлением в My conditions строки date_pub = CURDATE()
#13 20 сентября 2019 в 10:49

Вот эта штука
/blogs/zapiski-dinozavra/komponent-dlja-manipuljaci-filtraciei-i-sortirovkoi-v-datasetah.html
решает ваши проблемы добавлением в My conditions строки date_pub = CURDATE()

Ris

Огромное спасибо!
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.