Tickets Comments
Добрый день! Задача стоит такая. В комментах Tickets нужно чтобы пользователь опубликовал всего один комментарий в одном ресурсе, и больше не смог, и форму убираем. Как мне прописать в снипетах Tickets? Есть советы? А то голову ломаю)
Modx Revo, Tickets
Modx Revo, Tickets
Комментарии: 5
Какой пользователь авторизованный или анонимный?
Авторизованный
Я бы просто записывал id ресурсов к которым этот пользователь оставил комментарий. Для этого придётся править исходники, поскольку у Tickets нет событий, значит плагин не написать
Какие шаги вы делали? Как пытались решить задачу?
Первое что приходит на ум мне, это создать новую таблицу в базе у которой будет два колонки — id ресурса и id пользователя.
Писать в эту таблицу данные, когда какой то пользователь оставляет комментарий.
В шаблоне страницы вызывать свой сниппет, который на вход будет принимать id ресурса и id пользователя и внутри делать запрос к новой таблице. Если count() от этого запроса будет больше 0 значит что этот пользователь уже «отметился» на этой странице. В такой случае выставляем в вашем сниппете какой то плейсхолдер.
Ниже в шаблоне на основании этого плейсхолдера решаем — стоит ли вообще вызывать тикетс или нет.
Первое что приходит на ум мне, это создать новую таблицу в базе у которой будет два колонки — id ресурса и id пользователя.
Писать в эту таблицу данные, когда какой то пользователь оставляет комментарий.
В шаблоне страницы вызывать свой сниппет, который на вход будет принимать id ресурса и id пользователя и внутри делать запрос к новой таблице. Если count() от этого запроса будет больше 0 значит что этот пользователь уже «отметился» на этой странице. В такой случае выставляем в вашем сниппете какой то плейсхолдер.
Ниже в шаблоне на основании этого плейсхолдера решаем — стоит ли вообще вызывать тикетс или нет.
Открыл assets/components/tickets/js/web/default.js и вижу, что при сохранении тикета скрипт вызывает свое событие javascript и передает в него response. А значит вы можете обойтись и без правки исходников, написать свой javascript скрипт, отлавливать там наступление этого события и если оно успешно писать данные в базу.
success: function (response) {
$(document).trigger('tickets_ticket_save', response);
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.