Есть ли какой-либо готовый функционал для этого "из коробки" или какой-либо плагин? Не нашел на форуме подобной информации.
Так просто настройте в типе контента управление публикацией.
По окончании срока публикации контент остается в базе, но не публикуется.
@denier,
Так просто настройте в типе контента управление публикацией.
По окончании срока публикации контент остается в базе, но не публикуется.
Ссылки на него будут работать? Можно ли будет этот контент пользователям где-то посмотреть после снятия с публикации?
Понятия не имею.Ссылки на него будут работать?
Админу в админке.Можно ли будет этот контент пользователям где-то посмотреть после снятия с публикации?
Понятия не имею.Ссылки на него будут работать?
Админу в админке.Можно ли будет этот контент пользователям где-то посмотреть после снятия с публикации?
Вот то ж😥Это как раз и не годится. Контент должен быть виден пользователям, но не в основной категории (X), а в другой (Y). Грубо говоря, должно автоматом перебрасывать контент из категории X в категорию Y тогда, когда наступает день, следующий за днём того самого дедлайна.
Либо, как вариант, автоматом поднимать в "просроченном" контенте какой-нибудь флаг, который бы выводился в этом самом контенте, а уже потом несложно сделать сортировку штатными средствами, например через наборы.
Чтобы по истечению определённого периода запись перемещалась или в другой тип контента или по другому как-то, гуру подскажут как лучше сделать и чтобы доступ оставался обычным пользователям. Своего рода архив статей, разложенных по месяцам например).
А может и перемещение в другой тип контента и не нужен, достаточно создать в этом же типе контента категорию "архив", а в нём по месяцам подкатегории
Если нужно просто переместить в другую категорию — можно сделать простым хуком.
то есть готовых решений на данный момент нет?
2all:
Сколько будет стоить создать такой функционал?
дополнение:
Временно решил вопрос автоматической сортировкой через наборы. Сначала показывает более дальние события, при этом более ранние события или уже прошедшие уходят в конец списка.
Решение вижу такое, в выпадающем списке (что делать с публикацией по истечении срока) нужно добавить выбор категории в этом же типе контента. Это самый простой выход из положения. Самому нужно такое решение. Буду пробовать, если что то получится отпишусь.
Ну и если есть идеи, как это можно запилить, поделитесь с коллегами пожалуйста. Возможно решение попадёт в коробку инстанта, что было бы здорово!
Попробовал реализовать правку таким образом:
system\controllers\admin\forms\form_ctypes_basic.php
строка 91
'title' => LANG_CP_IS_PUB_CONTROL_PROCESS, 'default' => 'hide', 'hide' => LANG_CP_IS_PUB_CONTROL_PROCESS_HIDE, 'transferal' => 'Перенести в CLOSED' , 'delete' => LANG_CP_IS_PUB_CONTROL_PROCESS_DEL, 'in_basket' => LANG_BASKET_DELETE ), )),
system\controllers\content\hooks\cron_publication.php
строка 30
if($ctype['options']['is_date_range_process'] === 'delete') { $this->model->deleteExpiredContentItems($ctype['name']); } elseif($ctype['options']['is_date_range_process'] === 'transferal') { $this->model->CategoriesExpiredContentItems($ctype['name']); } elseif($ctype['options']['is_date_range_process'] === 'in_basket') { $this->model->toTrashExpiredContentItems($ctype['name']); } else { $this->model->hideExpiredContentItems($ctype['name']); }
$this->model->CategoriesExpiredContentItems($ctype['name']);
system\controllers\content\model.php
как пример перенос контента в черновик вывглядит так (строка 2602)
public function toTrashExpiredContentItems($ctype_name){ return $this-> filterNotNull('date_pub_end')-> filter('i.date_pub_end <= NOW()')-> get($this->table_prefix.$ctype_name, function($item, $model) use($ctype_name){ $model->toTrashContentItem($ctype_name, $item); return $item['id']; }); }
Просто изменить $item['category_id'] на нужную категорию. Потом $this->model->updateContentItem($ctype, $id, $item, $fields);как отправить в БД информацию о смене категории
А вот это сложнее, так как потребуется перенос в другую таблицу.а лучше вообще сменить тип контента
А в ['category_id'] как сразу вписать его category_id? это же не просто id который порядковым номером например '7' называется, из чего он складывается чтобы его напрямую вписать?
Просто изменить $item['category_id'] на нужную категорию. Потом $this->model->updateContentItem($ctype, $id, $item, $fields);как отправить в БД информацию о смене категории
А вот это сложнее, так как потребуется перенос в другую таблицу.а лучше вообще сменить тип контента
И всё же если представить что в типе контента 'closed' те же поля с такими же системными именами, как можно перенести?
Просто изменить $item['category_id'] на нужную категорию. Потом $this->model->updateContentItem($ctype, $id, $item, $fields);как отправить в БД информацию о смене категории
А вот это сложнее, так как потребуется перенос в другую таблицу.а лучше вообще сменить тип контента
Не получается, пишу в system\controllers\content\model.php
return $this-> filterNotNull('date_pub_end')-> filter('i.date_pub_end <= NOW()')-> get($this->table_prefix.$ctype_name, function($item, $model) use($ctype_name){ $item['category_id']; $this->model->updateContentItem($ctype, $id, $item, $fields); }); }
Можно прямо вписать.А в ['category_id'] как сразу вписать его category_id ?
Из номера категории, которую Вы создали, как архивную.из чего он складывается чтобы его напрямую вписать?
Добавить в этом типе контента и удалить в другом.И всё же если представить что в типе контента 'closed' те же поля с такими же системными именами, как можно перенести?
возможно я не правильно вписываю, выдаёт ошибку
Можно прямо вписать.А в ['category_id'] как сразу вписать его category_id ?
Из номера категории, которую Вы создали, как архивную.из чего он складывается чтобы его напрямую вписать?
Добавить в этом типе контента и удалить в другом.И всё же если представить что в типе контента 'closed' те же поля с такими же системными именами, как можно перенести?
в файле system\controllers\content\model.php? правильно?
public function CategoriesExpiredContentItems($ctype_name){ return $this-> filterNotNull('date_pub_end')-> filter('i.date_pub_end <= NOW()')-> get($this->table_prefix.$ctype_name, function($item, $model) use($ctype_name){ return $item['category_id']; }); }