Pavel8289
Total posts: 66
29 Апр 2019 14:59

Приветствую! Возникла необходимость выводить список статей по полю "календарь" (datetime). Пользователи создают статьи и в поле "datetime" указывают дату проведение события. Не важно в каком порядки создаются статьи, но, когда заходите в раздел должно быть первый в списке самый ближайший по даты от СЕГОДНЯ. Пример: Я создал событие что 1 июня 2019 будет праздник. Другой пользователь создал что 31 мая 2019 будет праздник другой. Вот этот другой пользователь в списке событий в раздел должен быть на первом месте. В кобальте в разделе стоит сортировка "Сначала новые" но выводит не в такой последовательности + необходимо еще указать чтоб не выводились статьи какие "вчерашние". Где я могу перепределить функцию/запрос чтоб для определеного вида задачи смог реализовать. Приму любые советы и идеи как решению проблемы

Последние изменения: 10 Май 2019


Giorgi625 VIP
Total posts: 655
29 Апр 2019 16:49

Так вот что ви должни сделать заидите на страницу поля date&time и наидите параметры Override Settings там 2 параметра включите их. они перепишут стандартние параметри дат публикации и снятия с публикации события.

так что после вибранной дати события должни исчезнуть из списка если в параметрах типа в поле Change article access level on when expired у вас задан нужний параметр, думаю Super user подоидёт вам чтоби показивать толко админам или No one некому не показивать.

А сортировку сделайте Oldest first, и это покажет сначала самие ближние по дате события.

Для уже созданних событии чтоби параметри публикации и снятия публикации переписались параметром поля date&time нужно открит эти собития и заново сохранить


Pavel8289
Total posts: 66
30 Апр 2019 05:26

Giorgi625 Так вот что ви должни сделать заидите на страницу поля date&time и наидите параметры Override Settings там 2 параметра включите их. они перепишут стандартние параметри дат публикации и снятия с публикации события.

так что после вибранной дати события должни исчезнуть из списка если в параметрах типа в поле Change article access level on when expired у вас задан нужний параметр, думаю Super user подоидёт вам чтоби показивать толко админам или No one некому не показивать.

А сортировку сделайте Oldest first, и это покажет сначала самие ближние по дате события.

Для уже созданних событии чтоби параметри публикации и снятия публикации переписались параметром поля date&time нужно открит эти собития и заново сохранить Спасибо все заработо.

А вот как сделать архив тогда из статей какие истекли?

Для раздела Архива вывести статьи какие уже "вчерашние". Могу конечно через условие вывести, но они будут выводится не в обьеме полном "показать N количекство на страницу"


Giorgi625 VIP
Total posts: 655
30 Апр 2019 14:10

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


Pavel8289
Total posts: 66
03 Май 2019 14:54

Так как тема звучит похоже с моим вопрос не буду создавать новую ветку и тут спрошу. Есть такая задача: В разделе редактирования вкладка "основные параметры" дальше "Сортировка в корневой раздела" вот сюда надо добавить новый вариант. Чтоб вывести новый вариант я отредактировал файл 136 строка в /administrator/components/com_cobalt/xml/section.xml. Отлично вариант мой уже есть в админки.

Вопрос где лежит функционал (sql запрос) где я могу в том файле ( если можно вообще переопределить было бы супер) дописать вариант получения статей из бд ?

Необходимо в разделе определенном по мимо отсортированном все по дате еще вывести(выводить) записи какие старше 10 дней от "Сегодня"


Pavel8289
Total posts: 66
04 Май 2019 15:48

Приветсвую! Из выше изложенной проблемы я смог найти и поправить код в /components/com_cobalt/models/records.php строчка 274

if($this->_showRecords)
{
if($this->section->id == 4){
$query = "SELECT * FROM #__js_res_record WHERE ctime > NOW() + INTERVAL 10 DAY";
} else {
$this->add_where($query);
}
}

Здесь я основной вывод статей привязал к условию конкретного мне раздела где статьи выводятся старше(будут через) на 10 дней от сегодня. Все работает, но тут без «НО» не обойтись. По не понятной мне идеи но модуль какой подключен на этой же станице какой должен выбирать и отдавать даные на оборот от сегодня + ближайшие статьи до 10 дней. Дописал функционал med/modules/mod_cobalt_records/mod_cobalt_records.php

if($params->get('view_what', 'all') == 'upcoming_events')
{
$query = $db->getQuery(TRUE);
$query->select('id');
$query->from('#__js_res_record');
$query->where('ctime >= NOW() AND ctime < NOW() + INTERVAL 10 DAY');
$query->where('published = 1');
$query->where('hidden = 0');
$query->where('section_id = ' . $params->get('section_id'));
$db->setQuery($query);
$ids = $db->loadColumn();
if(empty($ids))
{
return;
}
$params->set('view_what', 'all');
}

Проверяю переменную $ids да я получаю из БД id статей все верно. Но на главную выводит статьи совсем другие, а именно те какие в основном списке выводятся какие будут после 10 дней от сегодня. У меня 2 задачи: 1.модулей вывести статьи(события) какие от сегодня до 10 дней и не старше 10 дней. 2. основной список ниже какой выводит статьи(события) какие будут чепрез 10 дней от сегодня.

Кто может подправить/подсказать мою идею в реализации чтоб все вышло?

P.S. старшие статьи это какие в будущем будут через 10 дней


Sergey
Total posts: 13,748
10 Май 2019 11:32

Нужно посмотреть весь файл изменненый модуля. Прикрепите его я гляну.

Работает на Cobalt