TicketComments: сохранение комментария
Здравствуйте! В ходе работы с дополнением Tickets возникла следующая проблема.
Есть страница — Конкурсы. Она представляет из себя простой документ. Наполняется она следующим образом:
155 — айди конкурсного раздела с тикетами. Задумка такова, что каждый конкурс представляет из себя тикет в этом разделе. Здесь проблем нет. competitionConditions — композитный tv-параметр, созданный с использованием MigX — с его помощью я вывожу список правил для каждого конкурса.
Что вполне успешно и происходит на одной из вкладок моего шаблона tmpl.Tickets.competitions.row:
Вопрос: можно ли при вызове TicketsComment указвать конкретный тикет, к которому «привяжутся» комментарии?
Я попытался решить это указанием &parents=`[[+id]]` (как в вызове geiImageList &docid=`[[+id]]`). Пробовал задать &thread=`[[+id]]` — и это тоже не помогло.
Буду благодарен за советы или объяснения.
Есть страница — Конкурсы. Она представляет из себя простой документ. Наполняется она следующим образом:
[[!pdoPage?
&element=`getTickets`
&tpl=`tmpl.Tickets.competitions.row`
&parents=`155`
&includeTVs=`competitionConditions`
&includeContent=`1`
&sortby=`{"publishedon":"DESC"}`
&limit=`1`
]]На странице должен демонстрироваться последний из добавленных конкурсов.155 — айди конкурсного раздела с тикетами. Задумка такова, что каждый конкурс представляет из себя тикет в этом разделе. Здесь проблем нет. competitionConditions — композитный tv-параметр, созданный с использованием MigX — с его помощью я вывожу список правил для каждого конкурса.
Что вполне успешно и происходит на одной из вкладок моего шаблона tmpl.Tickets.competitions.row:
<!-- begin tab 1 -->
<div class="competitions_rules tab" id="tab_1">
<ul>
[[!getImageList?
&tvname=`competitionConditions`
&tpl=`tmpl.MIGX.cConditions`
&limit=`all`
&docid=`[[+id]]`
]]
</ul>
</div>
<!-- tab 1 eof -->На второй вкладке должны публиковаться «конкурсные работы». Я решил их реализовать через премодерируемые комментарии, вызывая сниппет TicketComments в оболочке pdoPage:<!-- begin tab 2 -->
<div class="competitions_works tab hide" id="tab_2">
<ul>
<li>
[[!pdoPage?
&includeTVs=``
&element=`TicketComments`
&parents=`[[+id]]`
&tplComments=`tmpl.Tickets.competition.entries`
&tplCommentForm=`tmpl.Tickets.competition.form`
&tplPageFirst=`@INLINE <li class="first"><a href="[[+href]]"></a></li>`
&tplPageFirstEmpty=`@INLINE <li class="first inactive"><a href="javascript:void(0);"></a></li>`
&tplPageLast=`@INLINE <li class="last"><a href="[[+href]]"></a></li>`
&tplPageLastEmpty=`@INLINE <li class="last inactive"><a href="javascript:void(0);"></a></li>`
&tplPagePrev=`@INLINE <li class="control"></li>`
&tplPageNext=`@INLINE <li class="control" style="display: none"><a href="[[+href]]" id="pageNext"></li>`
&tplPagePrevEmpty=`@INLINE <li class="control"></li>`
&tplPageNextEmpty=`@INLINE <li class="control"></li>`
&limit=`3`
&sortby=`{"publishedon":"DESC"}`
&formBefore=`0`
&autoPublish=`0`
&allowGuest=`0`
&allowGuestEdit=`0`
&fastMode=`0`
]]
</li>
</ul>
<!-- begin page navigation -->
<div class="page_navigation">
<ul>
[[!+page.nav]]
</ul>
</div>
<!-- page navigation eof -->
</div>
<!-- tab 2 eof -->И здесь возникает проблема. При попытке добавить комментарий/«конкурсную работу», они добавляются на страницу, с которой вызван сниппет TicketsComment. При этом, в документе закладки «Комментарии» не появляется (потому, что документ не является контейнером с тикетами?). Комментарий можно отследить лишь через Приложения --> Тикеты. Вопрос: можно ли при вызове TicketsComment указвать конкретный тикет, к которому «привяжутся» комментарии?
Я попытался решить это указанием &parents=`[[+id]]` (как в вызове geiImageList &docid=`[[+id]]`). Пробовал задать &thread=`[[+id]]` — и это тоже не помогло.
Буду благодарен за советы или объяснения.
Комментарии: 11
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
1. Комментарии добавляются не к странице, а к thread, который может быть, например, page-155, или mycustomthread, в общем какой угодно. Поэтому на одной странице вы можете вывести разные комментарии, из разных thread…
2.… но в тоже время вроде нельзя делать несколько вызовов TicketsComment, т.к. вроде возникает проблема в javascript =)
короче смотрите что такое thread, и как это устроено в БД.
1)В форме комментирования добавил поле ввода:
2)В тексте TicketComments прописал:
3)В чанке вывода комментариев определил:
Результат нулевой. Подозреваю, что разместил код плагина совсем не в том месте, где нужно — я поглядел код сниппета, и нигде не обнаружил конструкции ($_POST['*variableName*']), что только утвердило меня в подозрении — я туплю.
Пожалуйста, посоветуйте, как правильно поступить? Где разместить код плагина?
P.s.: Единожды поняв принцип, будет намного легче расширять функционал по аналогии.
По сути я пробовал возвращать false в плагине на событие «OnBeforeCommentSave» но коммент все равно сохраняется в БД.
Подскажите, как правильно фильтровать такие комменты?
Почему бы не попробовать фильтровать содержимое комментария на фронтэнде, вовсе до отправки на сервер?
Либо перезаписывать содержимое комментария уже после записи («OnBeforeCommentPublish», «OnCommentSave»), основываясь на результате, возвращённым Вашим мат-фильтром.
github.com/modxcms/revolution/blob/5f59848ab1f1805ba09f03fae35bee5b7166f37b/core/model/modx/modprocessor.class.php#L649
но почему-то коммент все равно сохраняется.
Если хочешь сгенерировать ошибку, то нужно сделать так:
Ну и погляди в энциклопедии значение слова "лаконичный" — оно не про матерки.