на странице http://help-dev.umi-cms.ru/#chapter.CommentsWithXSLT.files.html описываются как добавить форму начиная со строк Форма добавления комментариев а для того чтобы эта форма вставилось вы в исходном месте используете вызов <xsl:apply-templates select="user"/>
что описано в начале статьи
если у вас есть весь набор шаблонов как тут http://help-dev.umi-cms.ru/chapter.CommentsWithXSLT.files.html и нет своих шаблонов для узла user (которые в малой степени вероятности, но могли перекрыть эти шаблоны)
то у вас все должно получиться, так как вызов <xsl:apply-templates select="user"/>
несомненно обратиться к шаблонам описанным ниже в той ссылке что я привел в начале данного сообщения. Вот они
<xsl:template match="user">
<xsl:apply-templates select="document(concat('udata://comments/insert/', /result/@pageId))/udata/action"/>
</xsl:template>
<xsl:template match="action">
<h3><a name="addcomment">Добавить комментарий</a></h3>
<form method="post" action="{.}" name="form_addcomment" id="form_addcomment">
<fieldset class="intext">
<label for="comment_title" id="for_title" title="Заголовок">
<span>Заголовок: <sup class="asterisk">*</sup></span>
<input type="text" name="title" id="comment_title" />
</label>
<label for="comment_author">
<span>Ваш ник:</span>
<input type="text" name="author_nick" id="comment_author" />
</label>
<label for="comment_email">
<span>Ваш e-mail:</span>
<input type="text" name="author_email" id="comment_email" />
</label>
<label for="comment_text" id="for_comment" title="Текст">
<span>Текст: <sup class="asterisk">*</sup></span>
<textarea name="comment" id="comment_text" cols="6" />
</label>
</fieldset>
<xsl:apply-templates select="document('udata://system/captcha')/udata[url]" /><!-- utils.xsl -->
<input class="btt submit-send" type="submit" value="отправить"/>
</form>
</xsl:template>
<xsl:template match="user[@status = 'auth']">
<h3><a name="addcomment">Добавить комментарий</a></h3>
<form method="post" action="/comments/post/{/result/@pageId}/" name="form_addcomment" id="form_addcomment">
<fieldset class="intext">
<label for="comment_title" id="for_title" title="Заголовок">
<span>Заголовок: <sup class="asterisk">*</sup></span>
<input type="text" name="title" id="comment_title" />
</label>
<label for="comment_text" id="for_comment" title="Текст">
<span>Текст: <sup class="asterisk">*</sup></span>
<textarea name="comment" id="comment_text" cols="6" />
</label>
</fieldset>
<input class="submit-send" type="submit" value="Отправить"/>
</form>
</xsl:template>
Эх. После вставки этой строчки у меня такое огромное количество ошибок посыпалось, что копировать сюда не буду. Только маленький кусочек приведу.
Кажется на рекурсию жалуется в файле с меню:
Warning: XSLTProcessor::transformToXml(): runtime error: file /home/a/a15936/public_html/xsltTpls/modules/content/menu.xsl line 65 element ul in /home/a/a15936/public_html/classes/system/subsystems/umiTemplaters/types/umiTemplaterXSLT.php on line 45 Warning: XSLTProcessor::transformToXml(): xsltApplyXSLTTemplate: A potential infinite template recursion was detected. You can adjust xsltMaxDepth (--maxdepth) in order to raise the maximum number of nested template calls and variables/params (currently set to 3000). in /home/a/a15936/public_html/classes/system/subsystems/umiTemplaters/types/umiTemplaterXSLT.php on line 45
Странно что ошибка возникла только после вставки
<xsl:apply-templates select="document('udata://comments/insert')" />
Причем с меню кажется все в порядке (сделано по справке юми).
Не заметил, что вы отвечали - не пришло оповещение на мэил :(
я добавлял свои шаблоны из документации юми. По сути там все из стандартного (демодиззи кажется) шаблона, но некоторые вещи из документации - просто копи-паст.
кстати вы выше приводили код для формы. но он покороче чем из справки юми. и когда я его использовал, то моя строка:
<xsl:apply-templates select="document(concat('udata://comments/insert/', page/@pageId))/udata" />
вместо фразы "нет комментариев" (писал в первом посте) стала выводить форму, только форма дублировалась (т.е. 2 формы одна над другой).
Комментарий через нее можно было добавить - в админке он появлялся ( у меня модерация включена ), но после модерации на сайте их не видно :(
Вы правы, спасибо! Прописал mode и почти все получилось.
Комментарии выводятся.
Только никак не пойму откуда дубликат формы берется. т.е. у меня выводятся 2 формы для добавления комментариев.
код полностью со справки юми. ничего от себя не добавлял. в шаблоне просто строка
<xsl:apply-templates select="document('udata://comments/insert')" mode="comments" />
мне кажется тот файл они сами взяли из справки юми да и они так написали.
но вот вызов формы отличается.
у меня было так:
<xsl:apply-templates select="document('udata://comments/insert')" mode="comm" />
а они исправили на это:
<xsl:apply-templates select="document(concat('udata://comments/insert/', page/@id))/udata"/>
<xsl:apply-templates select="result/user"/>
в итоге форма есть (не дублируется) и комментарии работают.
судя по официальной документации, древовидные комментарии можно делать только в блогах(у них свои собственные комментарии), хотя надо посмотреть обычные комментарии на предмет того можно ли их исскуственно делать многоуровневыми. То есть комментарий обычный может быть оставлен к странице любого типа. По логике его можно оставить и к другому комментарию.
с попробуйте при выводе каждого оставленного комментария делать вызов шаблона с формой для добавления комментария.
Примерно так:
1. Вызов списка комментариев
<xsl:apply-templates select="document('udata://comments/insert')" />
2. данный список отрабатывается по шаблонам располагаемым в файле (имеется в виду структура demodizzy) /xsltTpls/modules/comments/comments-list.xsl. Попробуем поменять шаблон, который выводит комментарии.
Было:
<xsl:template match="item" mode="comment">
<div class="item" umi:element-id="{@id}" umi:region="row">
<div class="descr" umi:field-name="message" umi:delete="delete" umi:empty="∅">
<xsl:value-of select="." disable-output-escaping="yes" />
</div>
<div class="date">
<xsl:apply-templates select="document(@xlink:author-href)" />
<xsl:text> (</xsl:text>
<span umi:field-name="publish_time">
<xsl:call-template name="format-date">
<xsl:with-param name="date" select="@publish_time" />
</xsl:call-template>
</span>
<xsl:text>)</xsl:text>
</div>
</div>
</xsl:template>
стало:
<xsl:template match="item" mode="comment">
<div class="item" umi:element-id="{@id}" umi:region="row">
<div class="descr" umi:field-name="message" umi:delete="delete" umi:empty="∅">
<xsl:value-of select="." disable-output-escaping="yes" />
</div>
<div class="date">
<xsl:apply-templates select="document(@xlink:author-href)" />
<xsl:text> (</xsl:text>
<span umi:field-name="publish_time">
<xsl:call-template name="format-date">
<xsl:with-param name="date" select="@publish_time" />
</xsl:call-template>
</span>
<xsl:text>)</xsl:text>
</div>
</div>
<xsl:apply-templates select="document(concat('udata://comments/insert/',@id))" />
</xsl:template>
Должно получиться