UMIhelp

Разработка сайта на UMI.CMS => Настройка системы и модулей => Тема начата: Exorcist от 19 Декабря 2011, 07:12:29

Название: Вложенные комментарии
Отправлено: Exorcist от 19 Декабря 2011, 07:12:29
Как сделать вложенные комментарии? Ответ комментария на комментарий? Хотя бы с Административной стороны. А то пользователи пишут вопросы в комментариях хочется ответить чтобы это было отнесено к текущему комменту
Название: Re:Вложенные комментарии
Отправлено: Alexey от 19 Декабря 2011, 10:23:38
Exorcist, здесь (http://wiki.umisoft.ru/%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B8) смотрел?
Название: Re:Вложенные комментарии
Отправлено: korogan от 25 Июня 2012, 19:06:18
НЕ работает.
Может есть другой способ?

Хотя бы сделать кнопку ответить - это возможно?
Название: Re:Вложенные комментарии
Отправлено: admin от 29 Июня 2012, 22:59:15
в любом случае, если вы используете комментарии не блогов, а обчные комментарии, то это кастомизация, так как макрос добавления обычных комментариев не предусматривает древовидной системы, просто еще один комментарий.

Так что вернее будет разобраться почему не работает код с wiki (ссылку на которую привели выше), чем писать самому с нуля
Название: Re:Вложенные комментарии
Отправлено: msa от 21 Июня 2014, 11:09:36
Хочу вернуться к этому вопросу.... Не могу понять как этот макрос применить в xslt-шаблоне. Подскажите пожалуйста :)
Название: Re:Вложенные комментарии
Отправлено: admin от 21 Июня 2014, 23:54:02
вы говорите про то как адаптировать статью на wiki (http://wiki.umisoft.ru/%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B8) представленную выше под xslt шаблон?
Название: Re:Вложенные комментарии
Отправлено: msa от 22 Июня 2014, 15:49:08
Да. именно. Правильно я понимаю, что если использовать статью из wiki, то обычные комментарии подключать не нужно? Или же надо и то и другое использовать?
Название: Re:Вложенные комментарии
Отправлено: admin от 23 Июня 2014, 11:02:55
если делаете по статье wiki, то обычный макрос для вывода комментариев не нужен.

xslt шаблон такой же как и у обыных комментариев, только у каждого комментария появляется узел subcomments в котором могут быть дочерние комментарии. Возьмите шаблон из демодиззи или т.п. и в xsl:template? где выводится комментарий, переберите  subcomments узлы рекурсивно
Название: Re:Вложенные комментарии
Отправлено: msa от 23 Июня 2014, 14:25:27
Что-то не то немножко получается. Гдето не так я делаю. пока не могу увидеть где. Вот что у меня получается
<xsl:template match="result[@module='news'][@method='item']">

<script type="text/javascript">
<xsl:text>
function setCommentParent(parentId) {
var form   = document.getElementById('comment_add_form');
var editor = document.getElementById('message');
if(form)
form.action = '/comments/post/' + parentId + '/';
if(editor)
editor.focus();
</xsl:text>
</script>
<div id="news-item">
бла-бла-бла
</div>
<div id="comments">
<h3>Комментарии</h3>
<xsl:apply-templates select="document(concat('udata://comments/commentsList/', page/@id))/udata"/>
<xsl:apply-templates select="document(concat('udata://comments/commentsList/', /result/@pageId))/udata/action"/>
</div>
</xsl:template>
Далее организовываю вывод
<xsl:template match="udata[@module = 'comments'][@method = 'commentsList'][items/item]">
  <ul>
    <xsl:apply-templates select="items/item" mode="comment" />
  </ul>
</xsl:template>

<xsl:template match="item" mode="comment">
  <li>
    <xsl:apply-templates select="document(concat('udata://users/viewAuthor/', author_id))/udata" mode="author"/>
<span class="time"> / <xsl:value-of select="document(concat('udata://system/convertDate/', publish_time, '/(d.m.Y)/'))/udata"/></span>
    <div class="message">
          <xsl:value-of select="content" disable-output-escaping="yes" />
    </div>
<p style="padding-bottom:20px;">
(<a href="#comment_add_form" onclick="javascript:setCommentParent({@cid});">Ответить</a>)
</p>
 
<div style="padding-left:30px;">
<xsl:value-of select="subcomments" disable-output-escaping="yes" />
</div>
  </li>
</xsl:template>
<xsl:template match="udata" mode="author">
  <span class="author"> <xsl:value-of select="nickname" /></span>
</xsl:template>

<xsl:template match="action">

  <form method="post" action="{.}" name="comment_add_form" id="comment_add_form">
   <fieldset class="intext">
<div class="ctrlHolder required">
   <textarea name="comment" id="comment_text" cols="6" />
</div>
    </fieldset>
    <input class="submitButton" type="submit" value="Добавить комментарий"/>

  </form>

</xsl:template>
Вроде все появляется. Но когда нажимаешь на кнопку ответить ни чего не происходит. Вернее происходит - перескакиваю на форму ответа и если вношу туда текст и нажимаю "Добавить комм" добавляется новый комментарий а не ответ к предыдущему...
Название: Re:Вложенные комментарии
Отправлено: admin от 23 Июня 2014, 14:31:18
1. каждый комментарий который вы выводите должен выводиться через apply-templates, конструкция вида <xsl:value-of select="subcomments" disable-output-escaping="yes" /> просто выведет текст, а вам надо вывести весь html блок одного комментария, поэтому вам надо сделать что-то вроде такого запроса

<xsl:apply-templates select="subcomments/item" mode="comment" />
Название: Re:Вложенные комментарии
Отправлено: msa от 23 Июня 2014, 15:44:56
Тут даже не проблема в том, что у меня не выводятся вложенные комментарии, у меня не появляется форма для ответа на комментарий. При нажатии на кнопку ответить, я так понимаю должна она как раз появиться...
Название: Re:Вложенные комментарии
Отправлено: admin от 23 Июня 2014, 17:33:42
я так понимаю, форма у вас одна и при нажатии ответить у этой формы меняется action (что видно по вашему js коду setCommentParent())

Так что возможно у вас проблема с js кодом?
Название: Re:Вложенные комментарии
Отправлено: msa от 26 Июня 2014, 08:18:27
Форма действительно одна. Просто не понятно почему не добавляется комментарий вложенный, а добавляется новый....
Название: Re:Вложенные комментарии
Отправлено: admin от 26 Июня 2014, 12:12:40
потому, что у action формы есть id, который указывает родителя длянового комментария. Если ваш js не срабатывает и id не меняется, то система всегда генерит новые комментарии к текущей странице, а не к какому-то комментарию в данной ветке