Как обновить дату редактирования ресурса в котором публикуется цепочка сообщений easyComm при нажатии в админке кнопки сохранить?
Как обновить дату редактирования ресурса в котором публикуется цепочка при публикации отзыва или ответа на вопрос (редактировании ответа на вопрос), в общем при нажатии в админке кнопки сохранить?
Нужно для правильной работы LastModified, так как публикация отзыва или ответа на вопрос является изменением документа.
В каком файле это можно сделать и где именно, или надо сниппет или плагин свой делать?
Нужно для правильной работы LastModified, так как публикация отзыва или ответа на вопрос является изменением документа.
В каком файле это можно сделать и где именно, или надо сниппет или плагин свой делать?
Комментарии: 30
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Повесить на него плагин который будет обновлять дату в ресурсе…
код плагина такой:
Этой же строкой ведь уже обновляется дата редактирования 'editedon'
$response = $modx->runProcessor('resource/update', $res);
Работает так?
Не определяет id ресурса. Кроме главной нигде не работает, видимо там всегда значение == 1
А в остальном вот такой код плагина, вроде работает без ошибок. Благодарю Евгения за правильное (вроде бы) направление решения данной задачи, чем смог, помог.
Помогите определить id ресурса в данном плагине!
По поводу кода плагина. Это треш.
Во-первых, может быть в плагине уже доступен нужный объект. Автор подскажет.
Во-вторых, зачем ради изменения одного поля менять весь объект через тяжелый процессор.
В-третьих, очистить кэш ресурса можно одной строкой
Сделал так как ты написал, но не работает это
Дата редактирования 'editedon' не меняется и кэш не очищается.
Еще после методов getOne желательно проверять объекты на null.
по логике это все.
Если все равно осталось закешированным, то стоит посмотреть, как генерируется LastModified
Сейчас не могу проверить все, надо на работу, после посмотрю внимательнее.
А объекты на null проверять какие?
Так?
Или как?
каждый раз после getOne.
Можно даже очистить кэш до сохранения и закэшировать в момент сохранения. Но нужно смотреть результат.
ни так
Еще дело в том, что в компоненте LastModified есть системная настройка lastmodified.update_parent —
«Обновление родителя», поэтому при включенной этой настройке нужно обновлять ресурс через «тяжелый процессор», чтобы обновился родитель, а если выключена то просто менять дату последнего редактирования ресурса.
Поэтому сделал так, вроде все работает…
Благодарю всех за помощь!
В связи с этим вопрос. Как получить значение published сообщения, чтобы сделать проверку: если сообщение опубликовано или в неопубликованном сообщении установлен флажок в чекбокс «Опубликовано:», то только в этом случае обновлять ресурс.
В общем как сделать такую проверку?
Но опять одно НО!
При редактировании ресурса, если поставить галочку «Опубликован» и сохранить, то проверку делаю так
Однако при редактировании сообщения, если СНЯТЬ галочку с «Опубликован» и сохранить, то обнуляются значения полей 'published' и 'publishedon', поэтому не знаю за что зацепиться, чтобы сделать проверку. Других подходящих полей в таблице _ec_messages нет. Например, типа поле со значением что ресурс ранее уже публиковался, но снят с публикации.
Может что-то упускаю?
А потом соответственно проверяйте.
Как Сергей подметил, можно properties использовать, это поле есть не только у ресурса, но и у комментария.
Оно в компоненте нигде не используется.
Делайте там пометку нужную вам.
Или в какой-то другой таблице это поле? Как туда записать и проверять находящееся там значение? Просто ни разу не работал с таким полем…
Правда сейчас не могу проверить, нет доступа к сайту. Дома буду проверю.
Еще вопрос. Если ты указал, что поле сообщения можно получить вот так:
То наверное в моем коде
И подскажи в чем отличие? Или это одно и тоже?
Обозвал его "Подружить easyComm с LastModified"
Вроде все работает как задумано. А именно:
1. Если редактировать сообщение, которое еще не публиковалось или снятое с публикации, НО при этом не публиковать его, то дата редактирования ресурса и его родителя не меняется кэш не очищается.
2. Если опубликовать/снять с публикации сообщение любым способом (из меню в списке или в модальном окне — чекбокс «Опубликовано»), а также если отредактировать и сохранить опубликованное сообщение, то меняется дата последнего редактирования ресурса и очищается кэш ресурса.
Кроме того, если в компоненте LastModified включена системная настройка «Обновление родителя», то обновляется также дата редактирования родителя и очищается его кэш. Если указанная настройка выключена, то меняется дата редактирования ресурса и очищается его кэш. С родителем ничего не происходит.
Буду благодарен, за конструктивную критику и за предложения по улучшению.
Благодарю за помощь!