Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Вывод количества объектов в категории. XSLT

Автор idu.kuruРаздел Шаблоны XSLT

Ответов: 6
Просмотров: 4725
Последний ответ 18 Октября 2014, 17:39:24
от idu.kuru
Сортировка по алфавиту в xslt

Автор VladimirРаздел Шаблоны XSLT

Ответов: 2
Просмотров: 4226
Последний ответ 14 Января 2012, 17:25:36
от admin
Не выводятся все теги в xslt

Автор goodprofyРаздел Шаблоны XSLT

Ответов: 2
Просмотров: 3841
Последний ответ 03 Июня 2014, 13:52:04
от goodprofy
webforms & XSLT & модальное окно

Автор graveРаздел JS и AJAX

Ответов: 8
Просмотров: 8568
Последний ответ 13 Июня 2011, 00:41:56
от talanter
Как вывести itemprop="position" content="" в XSLT?

Автор makarov2979Раздел Шаблоны XSLT

Ответов: 0
Просмотров: 1556
Последний ответ 15 Ноября 2018, 09:30:06
от makarov2979

0 Пользователей и 1 Гость просматривают эту тему.

*

wolfman

  • *
  • 23
  • +0/-0
    • Просмотр профиля
Недавно начал вникать в xslt, пробую сделать свой первый шаблон.
Возникла проблема с комментариями.

Сделал все как в итоговом шаблоне справки юми - http://help-dev.umi-cms.ru/chapter.CommentsWithXSLT.files.html
Но как в самом шаблоне вывести форму для добавления комментариев никак не пойму.

Вписывал в свой шаблон такое:

<xsl:apply-templates select="document(concat('udata://comments/insert/', page/@pageId))/udata"  />

В итоге получил только фразу "нет комментариев", но самой формы для добавления комментариев нет.

Еще вопрос по теме - как вывести форму для добавления комментариев и сами комментарии только на какой-то конкретной странице?

Заранее большое спасибо за советы.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Форма добавления комментариев (xslt)
« Ответ #1 : 27 Мая 2012, 01:43:33 »
на странице http://help-dev.umi-cms.ru/#chapter.CommentsWithXSLT.files.html описываются как добавить форму начиная со строк Форма добавления комментариев а для того чтобы эта форма вставилось вы в исходном месте используете вызов
<xsl:apply-templates select="user"/>
что описано в начале статьи

*

wolfman

  • *
  • 23
  • +0/-0
    • Просмотр профиля
Re:Форма добавления комментариев (xslt)
« Ответ #2 : 30 Мая 2012, 09:09:43 »
я добавил в шаблон

<xsl:apply-templates select="user"/>

и убрал свою строку. в итоге вообще пустота. форма не выводиться :(
« Последнее редактирование: 30 Мая 2012, 09:11:45 от wolfman »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Форма добавления комментариев (xslt)
« Ответ #3 : 31 Мая 2012, 08:44:55 »
если у вас есть весь набор шаблонов как тут 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>Заголовок:&nbsp;<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>Текст:&nbsp;<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>Заголовок:&nbsp;<sup class="asterisk">*</sup></span>
        <input type="text" name="title" id="comment_title" />
      </label>

      <label for="comment_text" id="for_comment" title="Текст">
        <span>Текст:&nbsp;<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>


*

wolfman

  • *
  • 23
  • +0/-0
    • Просмотр профиля
Re:Форма добавления комментариев (xslt)
« Ответ #4 : 31 Мая 2012, 09:12:38 »
У меня есть стандартные шаблоны modules/user (из шаблона магазина юми) и они подключены.

Я пробовал отключать - ничего не изменилось.
Сам код формы комментариев - полностью взят из юми без редактирования.
В шаблон внутренней страницы вставил

<xsl:apply-templates select="user"/>

и ничего. формы нигде не вижу :(

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Форма добавления комментариев (xslt)
« Ответ #5 : 31 Мая 2012, 09:37:01 »
если у вас стандартный demodizzy то для вывода списка шаблонов и формы шаблонов достаточно вызвать <xsl:apply-templates select="document('udata://comments/insert')" /> а так слишком много всяких моментов которые могли сыграть в вашем случае, так как не понятно что было, что вы добавляли и что может быть не так, на словах очень долго можно моделировать в чем может быть загвоздка

*

wolfman

  • *
  • 23
  • +0/-0
    • Просмотр профиля
Re:Форма добавления комментариев (xslt)
« Ответ #6 : 31 Мая 2012, 10:02:02 »
Эх. После вставки этой строчки у меня такое огромное количество ошибок посыпалось, что копировать сюда не буду. Только маленький кусочек приведу.
Кажется на рекурсию жалуется в файле с меню:

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')" />

Причем с меню кажется все в порядке (сделано по справке юми).

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Форма добавления комментариев (xslt)
« Ответ #7 : 31 Мая 2012, 12:20:27 »
это на дефорлтном шаблоне или вы уже добавляли свои шаблjны, например с документации umi?

*

wolfman

  • *
  • 23
  • +0/-0
    • Просмотр профиля
Re:Форма добавления комментариев (xslt)
« Ответ #8 : 06 Июня 2012, 19:24:49 »
Не заметил, что вы отвечали - не пришло оповещение на мэил :(

я добавлял свои шаблоны из документации юми. По сути там все из стандартного (демодиззи кажется) шаблона, но некоторые вещи из документации - просто копи-паст.

кстати вы выше приводили код для формы. но он покороче чем из справки юми. и когда я его использовал, то моя строка:

<xsl:apply-templates select="document(concat('udata://comments/insert/', page/@pageId))/udata"  />

вместо фразы "нет комментариев" (писал в первом посте) стала выводить форму, только форма дублировалась (т.е. 2 формы одна над другой).

Комментарий через нее можно было добавить - в админке он появлялся ( у меня модерация включена ), но после модерации на сайте их не видно :(
« Последнее редактирование: 06 Июня 2012, 19:31:02 от wolfman »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Форма добавления комментариев (xslt)
« Ответ #9 : 06 Июня 2012, 20:15:14 »
скорее всего у вас получилось наслоение тех шаблонов что вы добавили, на те что были в demodizzy, так что для того чтобы их разделить добавьте какой-нибудь свой mode к вызову apply-templates и далее по цепочке также проставьте mode чтобы знать что другие шаблоны не влияют на конечный вывод

*

wolfman

  • *
  • 23
  • +0/-0
    • Просмотр профиля
Re:Форма добавления комментариев (xslt)
« Ответ #10 : 06 Июня 2012, 23:18:25 »
Вы правы, спасибо! Прописал mode и почти все получилось.
Комментарии выводятся.

Только никак не пойму откуда дубликат формы берется. т.е. у меня выводятся 2 формы для добавления комментариев.

код полностью со справки юми. ничего от себя не добавлял. в шаблоне просто строка

 <xsl:apply-templates select="document('udata://comments/insert')" mode="comments" />

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Форма добавления комментариев (xslt)
« Ответ #11 : 06 Июня 2012, 23:40:30 »
проставьте в своих шаблонах какие-нибудь метки, например циферки 1, 2 и т.д. чтобы понять в каких местах начинаются и заканчиваются твои шаблоны, так и разберешься скорее всего

*

wolfman

  • *
  • 23
  • +0/-0
    • Просмотр профиля
Re:Форма добавления комментариев (xslt)
« Ответ #12 : 07 Июня 2012, 00:02:06 »
Мне показалось, что проблема в самом начале кода, где список комментариев выводиться.

Цитировать
<xsl:template match="udata[@module = 'comments'][@method = 'insert'][items/item]" mode="comm">
   <xsl:variable name="doc-numpages" select="document(concat('udata://system/numpages/', total, '/', per_page, '/notemplate/p/10'))/udata" />

   <ul class="comments">
      <xsl:apply-templates select="items/item" mode="comm" />
   </ul>

   <!-- paging -->
   <xsl:apply-templates select="$doc-numpages" mode="paging.words" />   <!-- utils.xsl -->
   <xsl:apply-templates select="$doc-numpages" mode="paging.numbers" /> <!-- utils.xsl -->

</xsl:template>

в самом начале я там добавляю mode="comm" и когда это добавлено - формы исчезают. когда убираю - формы появляются. почему так, не подскажете?

на счет двух форм странно тоже.
ответ udata:

Цитировать
<udata module="comments" method="insert" generation-time="0.013477"><items><item id="359" title="тестинг" author_id="421" num="1" xlink:href="upage://359" xlink:author-href="udata://users/viewAuthor/421" publish_time="1338904061">тестинг</item></items><per_page>10</per_page><total>1</total>
<add_form><action>/comments/post/84/</action>
</add_form><action>/comments/post/84/</action>

</udata>

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Форма добавления комментариев (xslt)
« Ответ #13 : 07 Июня 2012, 00:07:02 »
какие еще шаблоны участвуют в выводе списка комментариев и формы для добавления комментария?

*

wolfman

  • *
  • 23
  • +0/-0
    • Просмотр профиля
Re:Форма добавления комментариев (xslt)
« Ответ #14 : 07 Июня 2012, 11:14:39 »
В том то и дело, что все в одном файле - comments.xsl, в котором шаблоны из справки юми.