Коментарии

#
Re: Коментарии
Ситуация противоположна той, которую Вы предположили: дело в том, что показ оценки как раз реализован(в XSL-шаблоне), но в текущей версии не доступен сам механизм подсчета оценок. Создание данного XSL-шаблона нацелено на использование в последующих версиях системы управления.
#
Re: Коментарии
HostCMS писал(а):


Вставил нижепреведенный код в Подробная Информация об объявлениях и ничего. сайт показывает ошибку на странице объявления (версия системы -  5)

ПРЕДУПРЕЖЕДЕНИЕ: DOMDocument::loadXML() [function.DOMDocument-loadXML]: Extra content at the end of the document in Entity, line: 417 в файле /var/www/admin/data/www/mix-studio.com/modules/Xsl/Xsl.class.php (строка 0)

Код





         <!-- Отображение комментариев  -->
         <xsl:if test="count(item_comments/comment) &gt; 0">
            <p class="title">
               <a name="comments"></a>Комментарии</p>
            <xsl:apply-templates select="item_comments/comment"/>
         </xsl:if>
      </xsl:if>

      <!-- Если разрешено отображать формы добавления комментария
      1 - Только авторизированным
      2 - Всем -->
      <xsl:if test="/document/show_add_comments/node()  and ((/document/show_add_comments = 1 and /document/site_user_id &gt; 0)  or /document/show_add_comments = 2)">
      
         <div id="ShowAddComment">
            <a href="javascript:void(0)" onclick="javascript:cr('AddComment')">Добавить комментарий</a>
         </div>

         <div id="AddComment" style="display: none">
            <xsl:call-template name="AddCommentForm"></xsl:call-template>
         </div>
      </xsl:if>
   </xsl:template>

   <!-- /// Метки для информационного элемента /// -->
   <xsl:template match="tags/tag">
      <a href="{/document/information_system/url}tag/{tag_path_name}/" class="tag">
         <xsl:value-of select="tag_name"/>
      </a>
      <xsl:if test="position() != last()">,</xsl:if>&#xA0;
   </xsl:template>

   <!-- Шаблон для вывода звездочек (оценки) -->
   <xsl:template name="for_star">
      <xsl:param name="i" select="0"/>
      <xsl:param name="n"/>

      <input type="radio" name="comment_grade" value="{$i}" id="id_comment_grade_{$i}"/>&#xA0;
      <label for="id_icomment_grade_{$i}">
         <xsl:call-template name="show_average_grade">
            <xsl:with-param name="grade" select="$i"/>
            <xsl:with-param name="const_grade" select="5"/>
         </xsl:call-template>
      </label>

      <br/>

      <xsl:if test="$n &gt; $i and $n &gt; 1">
         <xsl:call-template name="for_star">
            <xsl:with-param name="i" select="$i + 1"/>
            <xsl:with-param name="n" select="$n"/>
         </xsl:call-template>
      </xsl:if>
   </xsl:template>

   <!-- Вывод рейтинга -->
   <xsl:template name="show_average_grade">
      <xsl:param name="grade" select="0"/>
      <xsl:param name="const_grade" select="0"/>

      <!-- Чтобы избежать зацикливания -->
      <xsl:variable name="current_grade" select="$grade * 1"/>

      <xsl:choose>
         <!-- Если число целое -->
         <xsl:when test="floor($current_grade) = $current_grade and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 1 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 1"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <xsl:if test="$current_grade != 0">
               <img src="/hostcmsfiles/images/stars_single.gif"/>
            </xsl:if>
         </xsl:when>
         <xsl:when test="$current_grade != 0 and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 0.5 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 0.5"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <img src="/hostcmsfiles/images/stars_half.gif"/>
         </xsl:when>

         <!-- Выводим серые звездочки, пока текущая позиция не дойдет то значения, увеличенного до целого -->
         <xsl:otherwise>
            <xsl:call-template name="show_average_grade">
               <xsl:with-param name="grade" select="$current_grade"/>
               <xsl:with-param name="const_grade" select="$const_grade - 1"/>
            </xsl:call-template>
            <img src="/hostcmsfiles/images/stars_gray.gif"/>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:template>

   <!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
   <xsl:template match="group" mode="goup_path">
      <xsl:variable name="parent_id" select="@parent_id"/>

      <!-- Выбираем рекурсивно вышестоящую группу -->
      <xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>

      <xsl:if test="@parent_id=0">
         <a href="{/document/information_system/url}">
            <xsl:value-of disable-output-escaping="yes" select="/document/information_system/name"/>
         </a>
      </xsl:if>

      <span class="path_arrow">&#x2192;</span>

      <a href="{/document/information_system/url}{fullpath}">
         <xsl:value-of select="name"/>
      </a>
   </xsl:template>

   <!-- Отображение комментариев -->
   <xsl:template match="comment">

      <!-- Отображаем комментарий, если задан текст или тема комментария -->
      <xsl:if test="comment_text != '' or comment_subject != ''">
         <a name="comment{comment_id}"></a>
         <div class="comment" id="comment{comment_id}">
            <div class="tl"></div>
            <div class="tr"></div>
            <div class="bl"></div>
            <div class="br"></div>

            <xsl:if test="comment_subject != ''">
               <div>
                  <strong>
                     <xsl:value-of select="comment_subject"/>
                  </strong>
               </div>
            </xsl:if>

            <xsl:value-of select="comment_text" disable-output-escaping="yes"/>

            <!-- Оценка комментария -->
            <xsl:if test="comment_grade != 0">
               <div>Оценка:
                  <xsl:call-template name="show_average_grade">
                     <xsl:with-param name="grade" select="comment_grade"/>
                     <xsl:with-param name="const_grade" select="5"/>
                  </xsl:call-template>
               </div>
            </xsl:if>
         </div>

         <div class="comment_desc">
            <xsl:choose>
               <!-- Комментарий добавил авторизированный пользователь -->
               <xsl:when test="site_user_login/node()">
                  <a href="/users/info/{site_user_login}/" class="c_u_l">
                     <xsl:value-of select="site_user_login"/>
                  </a>&#xA0;·&#xA0;<xsl:value-of select="comment_datetime"/>
               </xsl:when>
               <!-- Комментарй добавил неавторизированный пользователь -->
               <xsl:otherwise>
                  <xsl:value-of select="comment_fio"/>&#xA0;·&#xA0;<xsl:value-of select="comment_date"/></xsl:otherwise>
            </xsl:choose>&#xA0;·&#xA0;<xsl:if
            test="/document/show_add_comments/node()
            and ((/document/show_add_comments = 1 and /document/site_user_id > 0)
            or /document/show_add_comments = 2)"><a href="javascript:cr('cr_{comment_id}');">ответить</a>&#xA0;·&#xA0;</xsl:if><a href="{/document/item/item_path}#comment{comment_id}" title="ссылка">#</a>
            
         </div>

         <!-- Отображаем только авторизированным пользователям -->
         <xsl:if test="/document/show_add_comments/node() and ((/document/show_add_comments = 1 and /document/site_user_id > 0) or /document/show_add_comments = 2)">
            <div class="cr" id="cr_{comment_id}">
            
               <xsl:call-template name="AddCommentForm">
                  <xsl:with-param name="comment_id" select="comment_id"/>
               </xsl:call-template>
            </div>
         </xsl:if>

         <!-- Выбираем дочерние комментарии -->
         <xsl:if test="count(comment) > 0">
            <div class="csd">
               <xsl:apply-templates select="comment"/>
            </div>
         </xsl:if>
      </xsl:if>
   </xsl:template>

   <!-- Шаблон вывода добавления комментария -->
   <xsl:template name="AddCommentForm">
      <xsl:param name="comment_id" select="0"/>
      
      <!--Отображение формы добавления комментария-->
      <form action="{/document/url}" method="post">
         <!-- Авторизированным не показываем -->
         <xsl:if test="/document/site_user_id = 0">
         
            <p>
            ФИО
            <br/>
            <input type="text" size="70" name="comment_autor" value=""/>
            </p>

            <p>
            E-mail
            <br/>
            <input type="text" size="70" name="comment_email" value=""/>
            </p>
            
            <p>
            Тема
            <br/>
            <input type="text" size="70" name="comment_subject" value=""/>
            </p>
         </xsl:if>

         <p>
         Комментарий
         <br/>
         <textarea name="comment_text" cols="68" rows="5" class="mceEditor"></textarea>
         </p>

         <p>
         Оценка материала
         <br/>
         <xsl:call-template name="for_star">
            <xsl:with-param name="n" select="5"/>
         </xsl:call-template>
         </p>

         <!-- Обработка CAPTCHA -->
         <xsl:if test="//captcha_key != 0 and /document/site_user_id = 0">
            <p>
            Код подтверждения
            <br/>
            <div style="float: left">
               <img style="border: 1px solid #777777" src="/captcha.php?get_captcha={//captcha_key}&amp;height=28" title="Код подтверждения"/>
            </div>

            <div style="float: left; margin-left: 10px; margin-top: 5px">
               <input type="hidden" name="captcha_key" value="{//captcha_key}"/>
               <input type="text" name="captcha_keystring" size="15"/>
            </div>
            
            <div style="clear: both"></div>
            </p>
         </xsl:if>
         
         <xsl:if test="$comment_id != 0">
            <input type="hidden" name="comment_parent_id" value="{comment_id}"/>
         </xsl:if>
         
         <p>
         <input type="submit" name="add_comment" value="Опубликовать"/>
         </p>
      </form>
   </xsl:template>

[code]
<!-- Отображение комментариев  -->
         <xsl:if test="count(item_comments/comment) &gt; 0">
            <p class="title">
               <a name="comments"></a>Комментарии</p>
            <xsl:apply-templates select="item_comments/comment"/>
         </xsl:if>
      </xsl:if>

      <!-- Если разрешено отображать формы добавления комментария
      1 - Только авторизированным
      2 - Всем -->
      <xsl:if test="/document/show_add_comments/node()  and ((/document/show_add_comments = 1 and /document/site_user_id &gt; 0)  or /document/show_add_comments = 2)">
      
         <div id="ShowAddComment">
            <a href="javascript:void(0)" onclick="javascript:cr('AddComment')">Добавить комментарий</a>
         </div>

         <div id="AddComment" style="display: none">
            <xsl:call-template name="AddCommentForm"></xsl:call-template>
         </div>
      </xsl:if>
   </xsl:template>

   <!-- /// Метки для информационного элемента /// -->
   <xsl:template match="tags/tag">
      <a href="{/document/information_system/url}tag/{tag_path_name}/" class="tag">
         <xsl:value-of select="tag_name"/>
      </a>
      <xsl:if test="position() != last()">,</xsl:if>&#xA0;
   </xsl:template>

   <!-- Шаблон для вывода звездочек (оценки) -->
   <xsl:template name="for_star">
      <xsl:param name="i" select="0"/>
      <xsl:param name="n"/>

      <input type="radio" name="comment_grade" value="{$i}" id="id_comment_grade_{$i}"/>&#xA0;
      <label for="id_icomment_grade_{$i}">
         <xsl:call-template name="show_average_grade">
            <xsl:with-param name="grade" select="$i"/>
            <xsl:with-param name="const_grade" select="5"/>
         </xsl:call-template>
      </label>

      <br/>

      <xsl:if test="$n &gt; $i and $n &gt; 1">
         <xsl:call-template name="for_star">
            <xsl:with-param name="i" select="$i + 1"/>
            <xsl:with-param name="n" select="$n"/>
         </xsl:call-template>
      </xsl:if>
   </xsl:template>

   <!-- Вывод рейтинга -->
   <xsl:template name="show_average_grade">
      <xsl:param name="grade" select="0"/>
      <xsl:param name="const_grade" select="0"/>

      <!-- Чтобы избежать зацикливания -->
      <xsl:variable name="current_grade" select="$grade * 1"/>

      <xsl:choose>
         <!-- Если число целое -->
         <xsl:when test="floor($current_grade) = $current_grade and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 1 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 1"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <xsl:if test="$current_grade != 0">
               <img src="/hostcmsfiles/images/stars_single.gif"/>
            </xsl:if>
         </xsl:when>
         <xsl:when test="$current_grade != 0 and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 0.5 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 0.5"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <img src="/hostcmsfiles/images/stars_half.gif"/>
         </xsl:when>

         <!-- Выводим серые звездочки, пока текущая позиция не дойдет то значения, увеличенного до целого -->
         <xsl:otherwise>
            <xsl:call-template name="show_average_grade">
               <xsl:with-param name="grade" select="$current_grade"/>
               <xsl:with-param name="const_grade" select="$const_grade - 1"/>
            </xsl:call-template>
            <img src="/hostcmsfiles/images/stars_gray.gif"/>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:template>

   <!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
   <xsl:template match="group" mode="goup_path">
      <xsl:variable name="parent_id" select="@parent_id"/>

      <!-- Выбираем рекурсивно вышестоящую группу -->
      <xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>

      <xsl:if test="@parent_id=0">
         <a href="{/document/information_system/url}">
            <xsl:value-of disable-output-escaping="yes" select="/document/information_system/name"/>
         </a>
      </xsl:if>

      <span class="path_arrow">&#x2192;</span>

      <a href="{/document/information_system/url}{fullpath}">
         <xsl:value-of select="name"/>
      </a>
   </xsl:template>

   <!-- Отображение комментариев -->
   <xsl:template match="comment">

      <!-- Отображаем комментарий, если задан текст или тема комментария -->
      <xsl:if test="comment_text != '' or comment_subject != ''">
         <a name="comment{comment_id}"></a>
         <div class="comment" id="comment{comment_id}">
            <div class="tl"></div>
            <div class="tr"></div>
            <div class="bl"></div>
            <div class="br"></div>

            <xsl:if test="comment_subject != ''">
               <div>
                  <strong>
                     <xsl:value-of select="comment_subject"/>
                  </strong>
               </div>
            </xsl:if>

            <xsl:value-of select="comment_text" disable-output-escaping="yes"/>

            <!-- Оценка комментария -->
            <xsl:if test="comment_grade != 0">
               <div>Оценка:
                  <xsl:call-template name="show_average_grade">
                     <xsl:with-param name="grade" select="comment_grade"/>
                     <xsl:with-param name="const_grade" select="5"/>
                  </xsl:call-template>
               </div>
            </xsl:if>
         </div>

         <div class="comment_desc">
            <xsl:choose>
               <!-- Комментарий добавил авторизированный пользователь -->
               <xsl:when test="site_user_login/node()">
                  <a href="/users/info/{site_user_login}/" class="c_u_l">
                     <xsl:value-of select="site_user_login"/>
                  </a>&#xA0;·&#xA0;<xsl:value-of select="comment_datetime"/>
               </xsl:when>
               <!-- Комментарй добавил неавторизированный пользователь -->
               <xsl:otherwise>
                  <xsl:value-of select="comment_fio"/>&#xA0;·&#xA0;<xsl:value-of select="comment_date"/></xsl:otherwise>
            </xsl:choose>&#xA0;·&#xA0;<xsl:if
            test="/document/show_add_comments/node()
            and ((/document/show_add_comments = 1 and /document/site_user_id > 0)
            or /document/show_add_comments = 2)"><a href="javascript:cr('cr_{comment_id}');">ответить</a>&#xA0;·&#xA0;</xsl:if><a href="{/document/item/item_path}#comment{comment_id}" title="ссылка">#</a>
            
         </div>

         <!-- Отображаем только авторизированным пользователям -->
         <xsl:if test="/document/show_add_comments/node() and ((/document/show_add_comments = 1 and /document/site_user_id > 0) or /document/show_add_comments = 2)">
            <div class="cr" id="cr_{comment_id}">
            
               <xsl:call-template name="AddCommentForm">
                  <xsl:with-param name="comment_id" select="comment_id"/>
               </xsl:call-template>
            </div>
         </xsl:if>

         <!-- Выбираем дочерние комментарии -->
         <xsl:if test="count(comment) > 0">
            <div class="csd">
               <xsl:apply-templates select="comment"/>
            </div>
         </xsl:if>
      </xsl:if>
   </xsl:template>

   <!-- Шаблон вывода добавления комментария -->
   <xsl:template name="AddCommentForm">
      <xsl:param name="comment_id" select="0"/>
      
      <!--Отображение формы добавления комментария-->
      <form action="{/document/url}" method="post">
         <!-- Авторизированным не показываем -->
         <xsl:if test="/document/site_user_id = 0">
         
            <p>
            ФИО
            <br/>
            <input type="text" size="70" name="comment_autor" value=""/>
            </p>

            <p>
            E-mail
            <br/>
            <input type="text" size="70" name="comment_email" value=""/>
            </p>
            
            <p>
            Тема
            <br/>
            <input type="text" size="70" name="comment_subject" value=""/>
            </p>
         </xsl:if>

         <p>
         Комментарий
         <br/>
         <textarea name="comment_text" cols="68" rows="5" class="mceEditor"></textarea>
         </p>

         <p>
         Оценка материала
         <br/>
         <xsl:call-template name="for_star">
            <xsl:with-param name="n" select="5"/>
         </xsl:call-template>
         </p>

         <!-- Обработка CAPTCHA -->
         <xsl:if test="//captcha_key != 0 and /document/site_user_id = 0">
            <p>
            Код подтверждения
            <br/>
            <div style="float: left">
               <img style="border: 1px solid #777777" src="/captcha.php?get_captcha={//captcha_key}&amp;height=28" title="Код подтверждения"/>
            </div>

            <div style="float: left; margin-left: 10px; margin-top: 5px">
               <input type="hidden" name="captcha_key" value="{//captcha_key}"/>
               <input type="text" name="captcha_keystring" size="15"/>
            </div>
            
            <div style="clear: both"></div>
            </p>
         </xsl:if>
         
         <xsl:if test="$comment_id != 0">
            <input type="hidden" name="comment_parent_id" value="{comment_id}"/>
         </xsl:if>
         
         <p>
         <input type="submit" name="add_comment" value="Опубликовать"/>
         </p>
      </form>
   </xsl:template>

Модератор
#
Re: Коментарии
Jekos,
Вы привели часть кода или полностью? Если полностью - то это только фрагмент XSL-шаблона.
#
Re: Коментарии
HostCMS
Здравствуйте

Если полностью, то вот так:


<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   <xsl:decimal-format name="my" decimal-separator="," grouping-separator=" "/>

   <xsl:template match="/shop">
      <xsl:apply-templates select="item"/>
   </xsl:template>

   <xsl:template match="item">

      <SCRIPT>
         <xsl:comment>
            <xsl:text disable-output-escaping="yes">
         <![CDATA[
         function ShowImgDiv(file_path)
         {
            document.getElementById('big_image').innerHTML = "<img src=\"" + file_path + "\" style=\"border: 1px solid #000000; margin: 0px 5px 5px 0px;\" />"

         }
         ]]>
         </xsl:text>
         </xsl:comment>
      </SCRIPT>

      <h1>
         <xsl:value-of disable-output-escaping="yes" select="name"/>
      </h1>

      <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
      <xsl:variable name="parent_group_id" select="/shop/@current_group_id"/>

      <xsl:if test="$parent_group_id = 0">
         <a href="{/shop/path}">
            <xsl:value-of disable-output-escaping="yes" select="/shop/name"/>
         </a>
      </xsl:if>

      <!-- Путь к группе -->
      <p>
         <xsl:apply-templates select="//group[@id=$parent_group_id]" mode="goup_path"/>

         <span class="path_arrow">&#x2192;</span>
         <a href="{/path}">
            <xsl:value-of disable-output-escaping="yes" select="name"/>
         </a>
      </p>

      <!--
      <div style="float: left; margin: 20px 0px 0px 20px">
         
         <xsl:if test="comments/average_grade/node()">
            <xsl:call-template name="show_average_grade">
               <xsl:with-param name="grade" select="comments/average_grade" />
               <xsl:with-param name="const_grade" select="5" />
            </xsl:call-template>
         </xsl:if>
      </div>
      -->

      <div style="clear: both"></div>

      <!-- Информация об ошибках -->
      <xsl:variable name="error_code" select="/shop/error"/>

      <xsl:if test="$error_code != 0">
         <div id="error">
            <b>Внимание!</b>Неправильно введен код подтвержения!</div>
      </xsl:if>

      <xsl:if test="not(/shop/error/node()) and /shop/comment_is_active/node()">
         <!-- Информация о выполненном действии -->
         <div style="border: 1px solid #dadada; padding: 10px; width: 400px">
            <b>
               <xsl:choose>
                  <xsl:when test="/shop/comment_is_active = '0'">Комментарий успешно добавлен и будет опубликован после проверки модератором!</xsl:when>
                  <xsl:otherwise>Комментарий успешно добавлен и опубликован!</xsl:otherwise>
               </xsl:choose>
            </b>
         </div>
      </xsl:if>

      <table border="0" cellpadding="0" cellspacing="0" width="100%">
         <tr>
            <td valign="top" style="padding-right: 20px;">
               <!-- Если указан вес товара -->
               <xsl:if test="weight != 0">
                  <p>Вес товара: <xsl:value-of select="weight"/>&#xA0;<xsl:value-of select="weight_mesure"/></p>
               </xsl:if>

               <!-- Показываем скидки -->
               <xsl:if test="count(discount) &gt; 0">
                  <xsl:apply-templates select="discount"/>
               </xsl:if>

               <!-- Описание товара -->
               <!-- <p><xsl:value-of disable-output-escaping="yes" select="description" /></p> -->

               <h2>Текст объявления</h2>
               <xsl:value-of disable-output-escaping="yes" select="text"/>
            </td>
            <xsl:if test="image != ''">
               <td valign="top" width="{image/@width}">

                  <div id="big_image" style="valign: top; width: {image/@width}px; margin: 0px 10px 10px 0px; color: #aaaaaa;">

                     <img src="{image}" style="border: 1px solid #000000; margin: 0px 5px 5px 0px"/>
                  </div>

                  <!-- Изображение для товара, если есть -->
                  <!--
                  <div style="float: left; width: {small_image/@width}px; margin: 0px 10px 10px 0px; color: #aaaaaa;">
                     <a href="{image}" target="blank_" onclick="ShowImgWindow('{name}','{image}', {image/@width}, {image/@height}); return false;">
                        <img src="{small_image}" style="border: 1px solid #000000; margin: 0px 5px 5px 0px" />
                     </a>
                     
                  </div>
                  -->
                  <table>
                     <tr>
                        <xsl:if test="small_image != '' ">
                           <td valign="top">
                              <img src="{small_image}" alt="Основное" title="Основное" style="cursor: pointer; border: 1px solid #000000; margin: 0px 5px 5px 0px" onclick="ShowImgDiv('{image}')"/>
                           </td>
                        </xsl:if>
                        <!-- Выводим список дополнительных свойств типа "Файл" -->
                        <xsl:if test="count(//property[type=1]) &gt; 0">
                           <xsl:apply-templates select="//property[type=1]" mode="foto"/>
                        </xsl:if>
                     </tr>
                  </table>
               </td>
            </xsl:if>
         </tr>
      </table>

      <!-- Цена товара -->
      <div class="shop_block">Цена:
         <xsl:choose>
            <xsl:when test="price != 0">

               <xsl:variable name="price" select="price"/>

               <span style="font-size: 11pt; font-weight: bold;">
                  <xsl:value-of select="format-number($price, '### ###', 'my')"/>&#xA0;<xsl:value-of disable-output-escaping="yes" select="currency"/></span>
            </xsl:when>
            <xsl:otherwise>договорная</xsl:otherwise>
         </xsl:choose>

         <!-- Если цена со скидкой - выводим ее -->
         <xsl:if test="price!=price_tax">
            <br/>
            <font color="gray">
               <strike>
                  <xsl:value-of disable-output-escaping="yes" select="price_tax"/>&#xA0;<xsl:value-of disable-output-escaping="yes" select="currency"/></strike>
            </font>
         </xsl:if>
      </div>
      
      <!--<xsl:if test="(count(//property[value != '']) - count(//property[type!=1]) - 1)>0">-->
      
      
         <div style="margin-top: 10px;">
            <!--<h2>Дополнительные сведения</h2>-->

            <!-- Выводим список дополнительных свойств -->
            <table border="0">
               <xsl:apply-templates select="//property[type!=1]"/>
            </table>
         </div>
      <!--</xsl:if>-->
   </xsl:template>

   <!-- Шаблон для модификаций -->
   <xsl:template match="modifications/item">
      <tr>
         <td>
            <!-- Название модификации -->
            <a href="{/shop/path}{fullpath}{path}/">
               <xsl:value-of disable-output-escaping="yes" select="name"/>
            </a>
         </td>
         <td>
            <!-- Цена модификации -->
            <xsl:value-of disable-output-escaping="yes" select="price"/>&#xA0;
            <!-- Валюта -->
            <xsl:value-of disable-output-escaping="yes" select="currency"/>
         </td>
      </tr>
   </xsl:template>

   <!-- Вывод рейтинга товара -->
   <xsl:template name="show_average_grade">
      <xsl:param name="grade" select="0"/>
      <xsl:param name="const_grade" select="0"/>

      <!-- Чтобы избежать зацикливания -->
      <xsl:variable name="current_grade" select="$grade * 1"/>

      <xsl:choose>
         <!-- Если число целое -->
         <xsl:when test="floor($current_grade) = $current_grade and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 1 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 1"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <xsl:if test="$current_grade != 0">
               <img src="/hostcmsfiles/images/stars_single.gif"/>
            </xsl:if>
         </xsl:when>
         <xsl:when test="$current_grade != 0 and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 0.5 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 0.5"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <img src="/hostcmsfiles/images/stars_half.gif"/>
         </xsl:when>

         <!-- Выводим серые звездочки, пока текущая позиция не дойдет то значения, увеличенного до целого -->
         <xsl:otherwise>
            <xsl:call-template name="show_average_grade">
               <xsl:with-param name="grade" select="$current_grade"/>
               <xsl:with-param name="const_grade" select="$const_grade - 1"/>
            </xsl:call-template>
            <img src="/hostcmsfiles/images/stars_gray.gif"/>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:template>

   <!-- Шаблон для вывода звездочек (оценки) -->
   <xsl:template name="for">
      <xsl:param name="i" select="0"/>
      <xsl:param name="n"/>

      <input type="radio" name="shop_comment_grade" value="{$i}" id="id_shop_comment_grade_{$i}">
         <xsl:if test="/shop/shop_comment_grade = $i">
            <xsl:attribute name="checked">
            </xsl:attribute>
         </xsl:if>
      </input>&#xA0;
      <label for="id_shop_comment_grade_{$i}">
         <xsl:call-template name="show_average_grade">
            <xsl:with-param name="grade" select="$i"/>
            <xsl:with-param name="const_grade" select="5"/>
         </xsl:call-template>
      </label>
      <br/>
      <xsl:if test="$n &gt; $i and $n &gt; 1">
         <xsl:call-template name="for">
            <xsl:with-param name="i" select="$i + 1"/>
            <xsl:with-param name="n" select="$n"/>
         </xsl:call-template>
      </xsl:if>
   </xsl:template>

<!-- Шаблон для отзывов -->
   <xsl:template match="comments/comment">
      <b>
         <xsl:value-of select="subject"/>
      </b>&#xA0;
   (<xsl:value-of select="user_name"/>)
      <xsl:value-of select="date_time"/>
      <xsl:call-template name="show_average_grade">
         <xsl:with-param name="grade" select="grade"/>
         <xsl:with-param name="const_grade" select="5"/>
      </xsl:call-template>
      <div style="background: #F5F5F7; padding: 3px;">
         <xsl:value-of select="text"/>
         <br/>
      </div>
      <br/>
   </xsl:template>   




   <!-- Шаблон для скидки -->
   <xsl:template match="discount">
      <br/>
      <xsl:value-of disable-output-escaping="yes" select="name"/>&#xA0;
      <xsl:value-of disable-output-escaping="yes" select="value"/>%</xsl:template>

   <!-- Шаблон вывода дополнительных свойств не являющихся файлами -->
   <xsl:template match="property">
      <!-- Не отображаем дату добавления объявления и e-mail -->
      <xsl:if test="@id!=61 and @id!=6 and value != ''">


         <xsl:choose>
            <!-- Тип свойства - флажок -->
            <xsl:when test="type=7">
               <xsl:if test="value!=0">
                  <tr>
                     <td class="shop_block" style="border: none; color: #da1a05;">
                        <center>
                           <img src="/images/check.gif"/>
                        </center>
                     </td>
                     <td style="padding: 5px;">
                        <strong>
                           <xsl:value-of disable-output-escaping="yes" select="name"/>
                        </strong>
                     </td>
                  </tr>
               </xsl:if>
               <!--
                  <xsl:choose>
                     <xsl:when test="value=0">&#xA0;Нет</xsl:when>
                     <xsl:otherwise>&#xA0;Да</xsl:otherwise>
                  </xsl:choose>
                  -->
            </xsl:when>
            <!-- Остальные типы доп. свойств -->
            <xsl:otherwise>
               <tr>
                  <td class="shop_block" style="border: none;">
                     <xsl:value-of disable-output-escaping="yes" select="name"/>:</td>
                  <td style="padding: 5px;">
                     <strong>
                        <xsl:value-of disable-output-escaping="yes" select="value"/>
                     </strong>
                  </td>
               </tr>
            </xsl:otherwise>
         </xsl:choose>
      </xsl:if>
   </xsl:template>

   <!-- Шаблон вывода дополнительных свойств являющихся файлами -->
   <xsl:template match="property" mode="foto">
      <td valign="top">
         <img src="{small_image/file_path}" alt="{name}" title="{name}" style="cursor: pointer; border: 1px solid #000000; margin: 0px 5px 5px 0px" onclick="ShowImgDiv('{file_path}')"/>
      </td>
      <xsl:if test="position() mod 3 =0">
         <xsl:text disable-output-escaping="yes">
         &lt;/tr&gt;
         &lt;tr&gt;
      </xsl:text>
      </xsl:if>
   </xsl:template>

   <xsl:template match="tying/item">

      <div style="clear: both">
         <p>
            <a href="/shop/{fullpath}{path}/">
               <xsl:value-of disable-output-escaping="yes" select="name"/>
            </a>
         </p>

         <!-- Изображение для товара, если есть -->
         <xsl:if test="small_image != ''">
            <a href="{/shop/path}{fullpath}{path}/">
               <img src="{small_image}" align="left" style="border: 1px solid #000000; margin: 0px 5px 5px 0px"/>
            </a>
         </xsl:if>

         <p>
            <xsl:value-of disable-output-escaping="yes" select="description"/>
         </p>

         <!-- Если указан вес товара -->
         <xsl:if test="weight != 0">
            <br/>Вес товара: <xsl:value-of select="weight"/> <xsl:value-of select="weight_mesure"/></xsl:if>

         <!-- Показываем скидки -->
         <xsl:if test="count(discount) &gt; 0">
            <xsl:apply-templates select="discount"/>
         </xsl:if>

         <!-- Показываем количество на складе, если больше нуля -->
         <xsl:if test="rest &gt; 0">
            <br/>В наличии: <xsl:value-of disable-output-escaping="yes" select="rest"/></xsl:if>

         <xsl:if test="producer/name != ''">
            <br/>Производитель: <xsl:value-of disable-output-escaping="yes" select="producer/name"/></xsl:if>
      </div>
   </xsl:template>

   <!-- ======================================================== -->
   <!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
   <!-- ======================================================== -->

   <xsl:template match="group" mode="goup_path">
      <xsl:variable name="parent_id" select="@parent"/>

      <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
      <xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>

      <xsl:if test="@parent=0">
         <a href="{/shop/path}">
            <xsl:value-of disable-output-escaping="yes" select="/shop/name"/>
         </a>
      </xsl:if>

      <span class="path_arrow">&#x2192;</span>

      <a href="{/shop/path}{fullpath}">
         <xsl:value-of disable-output-escaping="yes" select="name"/>
      </a>
   </xsl:template>
</xsl:stylesheet>


ДАЛЕЕ ТО ЧТО Я ДОБАВЛЯЮ

         <!-- Отображение комментариев  -->
         <xsl:if test="count(item_comments/comment) &gt; 0">
            <p class="title">
               <a name="comments"></a>Комментарии</p>
            <xsl:apply-templates select="item_comments/comment"/>
         </xsl:if>
      </xsl:if>

      <!-- Если разрешено отображать формы добавления комментария
      1 - Только авторизированным
      2 - Всем -->
      <xsl:if test="/document/show_add_comments/node()  and ((/document/show_add_comments = 1 and /document/site_user_id &gt; 0)  or /document/show_add_comments = 2)">
      
         <div id="ShowAddComment">
            <a href="javascript:void(0)" onclick="javascript:cr('AddComment')">Добавить комментарий</a>
         </div>

         <div id="AddComment" style="display: none">
            <xsl:call-template name="AddCommentForm"></xsl:call-template>
         </div>
      </xsl:if>
   </xsl:template>

   <!-- /// Метки для информационного элемента /// -->
   <xsl:template match="tags/tag">
      <a href="{/document/information_system/url}tag/{tag_path_name}/" class="tag">
         <xsl:value-of select="tag_name"/>
      </a>
      <xsl:if test="position() != last()">,</xsl:if>&#xA0;
   </xsl:template>

   <!-- Шаблон для вывода звездочек (оценки) -->
   <xsl:template name="for_star">
      <xsl:param name="i" select="0"/>
      <xsl:param name="n"/>

      <input type="radio" name="comment_grade" value="{$i}" id="id_comment_grade_{$i}"/>&#xA0;
      <label for="id_icomment_grade_{$i}">
         <xsl:call-template name="show_average_grade">
            <xsl:with-param name="grade" select="$i"/>
            <xsl:with-param name="const_grade" select="5"/>
         </xsl:call-template>
      </label>

      <br/>

      <xsl:if test="$n &gt; $i and $n &gt; 1">
         <xsl:call-template name="for_star">
            <xsl:with-param name="i" select="$i + 1"/>
            <xsl:with-param name="n" select="$n"/>
         </xsl:call-template>
      </xsl:if>
   </xsl:template>

   <!-- Вывод рейтинга -->
   <xsl:template name="show_average_grade">
      <xsl:param name="grade" select="0"/>
      <xsl:param name="const_grade" select="0"/>

      <!-- Чтобы избежать зацикливания -->
      <xsl:variable name="current_grade" select="$grade * 1"/>

      <xsl:choose>
         <!-- Если число целое -->
         <xsl:when test="floor($current_grade) = $current_grade and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 1 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 1"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <xsl:if test="$current_grade != 0">
               <img src="/hostcmsfiles/images/stars_single.gif"/>
            </xsl:if>
         </xsl:when>
         <xsl:when test="$current_grade != 0 and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 0.5 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 0.5"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <img src="/hostcmsfiles/images/stars_half.gif"/>
         </xsl:when>

         <!-- Выводим серые звездочки, пока текущая позиция не дойдет то значения, увеличенного до целого -->
         <xsl:otherwise>
            <xsl:call-template name="show_average_grade">
               <xsl:with-param name="grade" select="$current_grade"/>
               <xsl:with-param name="const_grade" select="$const_grade - 1"/>
            </xsl:call-template>
            <img src="/hostcmsfiles/images/stars_gray.gif"/>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:template>

   <!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
   <xsl:template match="group" mode="goup_path">
      <xsl:variable name="parent_id" select="@parent_id"/>

      <!-- Выбираем рекурсивно вышестоящую группу -->
      <xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>

      <xsl:if test="@parent_id=0">
         <a href="{/document/information_system/url}">
            <xsl:value-of disable-output-escaping="yes" select="/document/information_system/name"/>
         </a>
      </xsl:if>

      <span class="path_arrow">&#x2192;</span>

      <a href="{/document/information_system/url}{fullpath}">
         <xsl:value-of select="name"/>
      </a>
   </xsl:template>

   <!-- Отображение комментариев -->
   <xsl:template match="comment">

      <!-- Отображаем комментарий, если задан текст или тема комментария -->
      <xsl:if test="comment_text != '' or comment_subject != ''">
         <a name="comment{comment_id}"></a>
         <div class="comment" id="comment{comment_id}">
            <div class="tl"></div>
            <div class="tr"></div>
            <div class="bl"></div>
            <div class="br"></div>

            <xsl:if test="comment_subject != ''">
               <div>
                  <strong>
                     <xsl:value-of select="comment_subject"/>
                  </strong>
               </div>
            </xsl:if>

            <xsl:value-of select="comment_text" disable-output-escaping="yes"/>

            <!-- Оценка комментария -->
            <xsl:if test="comment_grade != 0">
               <div>Оценка:
                  <xsl:call-template name="show_average_grade">
                     <xsl:with-param name="grade" select="comment_grade"/>
                     <xsl:with-param name="const_grade" select="5"/>
                  </xsl:call-template>
               </div>
            </xsl:if>
         </div>

         <div class="comment_desc">
            <xsl:choose>
               <!-- Комментарий добавил авторизированный пользователь -->
               <xsl:when test="site_user_login/node()">
                  <a href="/users/info/{site_user_login}/" class="c_u_l">
                     <xsl:value-of select="site_user_login"/>
                  </a>&#xA0;·&#xA0;<xsl:value-of select="comment_datetime"/>
               </xsl:when>
               <!-- Комментарй добавил неавторизированный пользователь -->
               <xsl:otherwise>
                  <xsl:value-of select="comment_fio"/>&#xA0;·&#xA0;<xsl:value-of select="comment_date"/></xsl:otherwise>
            </xsl:choose>&#xA0;·&#xA0;<xsl:if
            test="/document/show_add_comments/node()
            and ((/document/show_add_comments = 1 and /document/site_user_id > 0)
            or /document/show_add_comments = 2)"><a href="javascript:cr('cr_{comment_id}');">ответить</a>&#xA0;·&#xA0;</xsl:if><a href="{/document/item/item_path}#comment{comment_id}" title="ссылка">#</a>
            
         </div>

         <!-- Отображаем только авторизированным пользователям -->
         <xsl:if test="/document/show_add_comments/node() and ((/document/show_add_comments = 1 and /document/site_user_id > 0) or /document/show_add_comments = 2)">
            <div class="cr" id="cr_{comment_id}">
            
               <xsl:call-template name="AddCommentForm">
                  <xsl:with-param name="comment_id" select="comment_id"/>
               </xsl:call-template>
            </div>
         </xsl:if>

         <!-- Выбираем дочерние комментарии -->
         <xsl:if test="count(comment) > 0">
            <div class="csd">
               <xsl:apply-templates select="comment"/>
            </div>
         </xsl:if>
      </xsl:if>
   </xsl:template>

   <!-- Шаблон вывода добавления комментария -->
   <xsl:template name="AddCommentForm">
      <xsl:param name="comment_id" select="0"/>
      
      <!--Отображение формы добавления комментария-->
      <form action="{/document/url}" method="post">
         <!-- Авторизированным не показываем -->
         <xsl:if test="/document/site_user_id = 0">
        
            <p>
            ФИО
            <br/>
            <input type="text" size="70" name="comment_autor" value=""/>
            </p>

            <p>
            E-mail
            <br/>
            <input type="text" size="70" name="comment_email" value=""/>
            </p>
            
            <p>
            Тема
            <br/>
            <input type="text" size="70" name="comment_subject" value=""/>
            </p>
         </xsl:if>

         <p>
         Комментарий
         <br/>
         <textarea name="comment_text" cols="68" rows="5" class="mceEditor"></textarea>
         </p>

         <p>
         Оценка материала
         <br/>
         <xsl:call-template name="for_star">
            <xsl:with-param name="n" select="5"/>
         </xsl:call-template>
         </p>

         <!-- Обработка CAPTCHA -->
         <xsl:if test="//captcha_key != 0 and /document/site_user_id = 0">
            <p>
            Код подтверждения
            <br/>
            <div style="float: left">
               <img style="border: 1px solid #777777" src="/captcha.php?get_captcha={//captcha_key}&amp;height=28" title="Код подтверждения"/>
            </div>

            <div style="float: left; margin-left: 10px; margin-top: 5px">
               <input type="hidden" name="captcha_key" value="{//captcha_key}"/>
               <input type="text" name="captcha_keystring" size="15"/>
            </div>
            
            <div style="clear: both"></div>
            </p>
         </xsl:if>
        
         <xsl:if test="$comment_id != 0">
            <input type="hidden" name="comment_parent_id" value="{comment_id}"/>
         </xsl:if>
        
         <p>
         <input type="submit" name="add_comment" value="Опубликовать"/>
         </p>
      </form>
   </xsl:template>

[code]
<!-- Отображение комментариев  -->
         <xsl:if test="count(item_comments/comment) &gt; 0">
            <p class="title">
               <a name="comments"></a>Комментарии</p>
            <xsl:apply-templates select="item_comments/comment"/>
         </xsl:if>
      </xsl:if>

      <!-- Если разрешено отображать формы добавления комментария
      1 - Только авторизированным
      2 - Всем -->
      <xsl:if test="/document/show_add_comments/node()  and ((/document/show_add_comments = 1 and /document/site_user_id &gt; 0)  or /document/show_add_comments = 2)">
      
         <div id="ShowAddComment">
            <a href="javascript:void(0)" onclick="javascript:cr('AddComment')">Добавить комментарий</a>
         </div>

         <div id="AddComment" style="display: none">
            <xsl:call-template name="AddCommentForm"></xsl:call-template>
         </div>
      </xsl:if>
   </xsl:template>

   <!-- /// Метки для информационного элемента /// -->
   <xsl:template match="tags/tag">
      <a href="{/document/information_system/url}tag/{tag_path_name}/" class="tag">
         <xsl:value-of select="tag_name"/>
      </a>
      <xsl:if test="position() != last()">,</xsl:if>&#xA0;
   </xsl:template>

   <!-- Шаблон для вывода звездочек (оценки) -->
   <xsl:template name="for_star">
      <xsl:param name="i" select="0"/>
      <xsl:param name="n"/>

      <input type="radio" name="comment_grade" value="{$i}" id="id_comment_grade_{$i}"/>&#xA0;
      <label for="id_icomment_grade_{$i}">
         <xsl:call-template name="show_average_grade">
            <xsl:with-param name="grade" select="$i"/>
            <xsl:with-param name="const_grade" select="5"/>
         </xsl:call-template>
      </label>

      <br/>

      <xsl:if test="$n &gt; $i and $n &gt; 1">
         <xsl:call-template name="for_star">
            <xsl:with-param name="i" select="$i + 1"/>
            <xsl:with-param name="n" select="$n"/>
         </xsl:call-template>
      </xsl:if>
   </xsl:template>

   <!-- Вывод рейтинга -->
   <xsl:template name="show_average_grade">
      <xsl:param name="grade" select="0"/>
      <xsl:param name="const_grade" select="0"/>

      <!-- Чтобы избежать зацикливания -->
      <xsl:variable name="current_grade" select="$grade * 1"/>

      <xsl:choose>
         <!-- Если число целое -->
         <xsl:when test="floor($current_grade) = $current_grade and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 1 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 1"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <xsl:if test="$current_grade != 0">
               <img src="/hostcmsfiles/images/stars_single.gif"/>
            </xsl:if>
         </xsl:when>
         <xsl:when test="$current_grade != 0 and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 0.5 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 0.5"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <img src="/hostcmsfiles/images/stars_half.gif"/>
         </xsl:when>

         <!-- Выводим серые звездочки, пока текущая позиция не дойдет то значения, увеличенного до целого -->
         <xsl:otherwise>
            <xsl:call-template name="show_average_grade">
               <xsl:with-param name="grade" select="$current_grade"/>
               <xsl:with-param name="const_grade" select="$const_grade - 1"/>
            </xsl:call-template>
            <img src="/hostcmsfiles/images/stars_gray.gif"/>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:template>

   <!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
   <xsl:template match="group" mode="goup_path">
      <xsl:variable name="parent_id" select="@parent_id"/>

      <!-- Выбираем рекурсивно вышестоящую группу -->
      <xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>

      <xsl:if test="@parent_id=0">
         <a href="{/document/information_system/url}">
            <xsl:value-of disable-output-escaping="yes" select="/document/information_system/name"/>
         </a>
      </xsl:if>

      <span class="path_arrow">&#x2192;</span>

      <a href="{/document/information_system/url}{fullpath}">
         <xsl:value-of select="name"/>
      </a>
   </xsl:template>

   <!-- Отображение комментариев -->
   <xsl:template match="comment">

      <!-- Отображаем комментарий, если задан текст или тема комментария -->
      <xsl:if test="comment_text != '' or comment_subject != ''">
         <a name="comment{comment_id}"></a>
         <div class="comment" id="comment{comment_id}">
            <div class="tl"></div>
            <div class="tr"></div>
            <div class="bl"></div>
            <div class="br"></div>

            <xsl:if test="comment_subject != ''">
               <div>
                  <strong>
                     <xsl:value-of select="comment_subject"/>
                  </strong>
               </div>
            </xsl:if>

            <xsl:value-of select="comment_text" disable-output-escaping="yes"/>

            <!-- Оценка комментария -->
            <xsl:if test="comment_grade != 0">
               <div>Оценка:
                  <xsl:call-template name="show_average_grade">
                     <xsl:with-param name="grade" select="comment_grade"/>
                     <xsl:with-param name="const_grade" select="5"/>
                  </xsl:call-template>
               </div>
            </xsl:if>
         </div>

         <div class="comment_desc">
            <xsl:choose>
               <!-- Комментарий добавил авторизированный пользователь -->
               <xsl:when test="site_user_login/node()">
                  <a href="/users/info/{site_user_login}/" class="c_u_l">
                     <xsl:value-of select="site_user_login"/>
                  </a>&#xA0;·&#xA0;<xsl:value-of select="comment_datetime"/>
               </xsl:when>
               <!-- Комментарй добавил неавторизированный пользователь -->
               <xsl:otherwise>
                  <xsl:value-of select="comment_fio"/>&#xA0;·&#xA0;<xsl:value-of select="comment_date"/></xsl:otherwise>
            </xsl:choose>&#xA0;·&#xA0;<xsl:if
            test="/document/show_add_comments/node()
            and ((/document/show_add_comments = 1 and /document/site_user_id > 0)
            or /document/show_add_comments = 2)"><a href="javascript:cr('cr_{comment_id}');">ответить</a>&#xA0;·&#xA0;</xsl:if><a href="{/document/item/item_path}#comment{comment_id}" title="ссылка">#</a>
            
         </div>

         <!-- Отображаем только авторизированным пользователям -->
         <xsl:if test="/document/show_add_comments/node() and ((/document/show_add_comments = 1 and /document/site_user_id > 0) or /document/show_add_comments = 2)">
            <div class="cr" id="cr_{comment_id}">
            
               <xsl:call-template name="AddCommentForm">
                  <xsl:with-param name="comment_id" select="comment_id"/>
               </xsl:call-template>
            </div>
         </xsl:if>

         <!-- Выбираем дочерние комментарии -->
         <xsl:if test="count(comment) > 0">
            <div class="csd">
               <xsl:apply-templates select="comment"/>
            </div>
         </xsl:if>
      </xsl:if>
   </xsl:template>

   <!-- Шаблон вывода добавления комментария -->
   <xsl:template name="AddCommentForm">
      <xsl:param name="comment_id" select="0"/>
      
      <!--Отображение формы добавления комментария-->
      <form action="{/document/url}" method="post">
         <!-- Авторизированным не показываем -->
         <xsl:if test="/document/site_user_id = 0">
        
            <p>
            ФИО
            <br/>
            <input type="text" size="70" name="comment_autor" value=""/>
            </p>

            <p>
            E-mail
            <br/>
            <input type="text" size="70" name="comment_email" value=""/>
            </p>
            
            <p>
            Тема
            <br/>
            <input type="text" size="70" name="comment_subject" value=""/>
            </p>
         </xsl:if>

         <p>
         Комментарий
         <br/>
         <textarea name="comment_text" cols="68" rows="5" class="mceEditor"></textarea>
         </p>

         <p>
         Оценка материала
         <br/>
         <xsl:call-template name="for_star">
            <xsl:with-param name="n" select="5"/>
         </xsl:call-template>
         </p>

         <!-- Обработка CAPTCHA -->
         <xsl:if test="//captcha_key != 0 and /document/site_user_id = 0">
            <p>
            Код подтверждения
            <br/>
            <div style="float: left">
               <img style="border: 1px solid #777777" src="/captcha.php?get_captcha={//captcha_key}&amp;height=28" title="Код подтверждения"/>
            </div>

            <div style="float: left; margin-left: 10px; margin-top: 5px">
               <input type="hidden" name="captcha_key" value="{//captcha_key}"/>
               <input type="text" name="captcha_keystring" size="15"/>
            </div>
            
            <div style="clear: both"></div>
            </p>
         </xsl:if>
        
         <xsl:if test="$comment_id != 0">
            <input type="hidden" name="comment_parent_id" value="{comment_id}"/>
         </xsl:if>
        
         <p>
         <input type="submit" name="add_comment" value="Опубликовать"/>
         </p>
      </form>
   </xsl:template>


Модератор
#
Re: Коментарии
Добавлять надо перед
</xsl:stylesheet>
, а не после.
#
Re: Коментарии
Сделал, система выдает



ПРЕДУПРЕЖЕДЕНИЕ: DOMDocument::loadXML() [function.DOMDocument-loadXML]: Opening and ending tag mismatch: stylesheet line 4 and if in Entity, line: 420 в файле /var/www/admin/data/www/mix-studio.com/modules/Xsl/Xsl.class.php (строка 0)
ПРЕДУПРЕЖЕДЕНИЕ: DOMDocument::loadXML() [function.DOMDocument-loadXML]: Extra content at the end of the document in Entity, line: 425 в файле /var/www/admin/data/www/mix-studio.com/modules/Xsl/Xsl.class.php (строка 0)
Модератор
#
Re: Коментарии
Jekos,
Показывайте еще раз XML, текста [code] в XSL-шаблоне быть не должно, это BB-код с форума
#
Re: Коментарии
да, виноват, он там был, я его убрал, но ничего не поменялось.

Вот весь код


<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   <xsl:decimal-format name="my" decimal-separator="," grouping-separator=" "/>

   <xsl:template match="/shop">
      <xsl:apply-templates select="item"/>
   </xsl:template>

   <xsl:template match="item">

      <SCRIPT>
         <xsl:comment>
            <xsl:text disable-output-escaping="yes">
         <![CDATA[
         function ShowImgDiv(file_path)
         {
            document.getElementById('big_image').innerHTML = "<img src=\"" + file_path + "\" style=\"border: 1px solid #000000; margin: 0px 5px 5px 0px;\" />"

         }
         ]]>
         </xsl:text>
         </xsl:comment>
      </SCRIPT>

      <h1>
         <xsl:value-of disable-output-escaping="yes" select="name"/>
      </h1>

      <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
      <xsl:variable name="parent_group_id" select="/shop/@current_group_id"/>

      <xsl:if test="$parent_group_id = 0">
         <a href="{/shop/path}">
            <xsl:value-of disable-output-escaping="yes" select="/shop/name"/>
         </a>
      </xsl:if>

      <!-- Путь к группе -->
      <p>
         <xsl:apply-templates select="//group[@id=$parent_group_id]" mode="goup_path"/>

         <span class="path_arrow">&#x2192;</span>
         <a href="{/path}">
            <xsl:value-of disable-output-escaping="yes" select="name"/>
         </a>
      </p>

      <!--
      <div style="float: left; margin: 20px 0px 0px 20px">
         
         <xsl:if test="comments/average_grade/node()">
            <xsl:call-template name="show_average_grade">
               <xsl:with-param name="grade" select="comments/average_grade" />
               <xsl:with-param name="const_grade" select="5" />
            </xsl:call-template>
         </xsl:if>
      </div>
      -->

      <div style="clear: both"></div>

      <!-- Информация об ошибках -->
      <xsl:variable name="error_code" select="/shop/error"/>

      <xsl:if test="$error_code != 0">
         <div id="error">
            <b>Внимание!</b>Неправильно введен код подтвержения!</div>
      </xsl:if>

      <xsl:if test="not(/shop/error/node()) and /shop/comment_is_active/node()">
         <!-- Информация о выполненном действии -->
         <div style="border: 1px solid #dadada; padding: 10px; width: 400px">
            <b>
               <xsl:choose>
                  <xsl:when test="/shop/comment_is_active = '0'">Комментарий успешно добавлен и будет опубликован после проверки модератором!</xsl:when>
                  <xsl:otherwise>Комментарий успешно добавлен и опубликован!</xsl:otherwise>
               </xsl:choose>
            </b>
         </div>
      </xsl:if>

      <table border="0" cellpadding="0" cellspacing="0" width="100%">
         <tr>
            <td valign="top" style="padding-right: 20px;">
               <!-- Если указан вес товара -->
               <xsl:if test="weight != 0">
                  <p>Вес товара: <xsl:value-of select="weight"/>&#xA0;<xsl:value-of select="weight_mesure"/></p>
               </xsl:if>

               <!-- Показываем скидки -->
               <xsl:if test="count(discount) &gt; 0">
                  <xsl:apply-templates select="discount"/>
               </xsl:if>

               <!-- Описание товара -->
               <!-- <p><xsl:value-of disable-output-escaping="yes" select="description" /></p> -->

               <h2>Текст объявления</h2>
               <xsl:value-of disable-output-escaping="yes" select="text"/>
            </td>
            <xsl:if test="image != ''">
               <td valign="top" width="{image/@width}">

                  <div id="big_image" style="valign: top; width: {image/@width}px; margin: 0px 10px 10px 0px; color: #aaaaaa;">

                     <img src="{image}" style="border: 1px solid #000000; margin: 0px 5px 5px 0px"/>
                  </div>

                  <!-- Изображение для товара, если есть -->
                  <!--
                  <div style="float: left; width: {small_image/@width}px; margin: 0px 10px 10px 0px; color: #aaaaaa;">
                     <a href="{image}" target="blank_" onclick="ShowImgWindow('{name}','{image}', {image/@width}, {image/@height}); return false;">
                        <img src="{small_image}" style="border: 1px solid #000000; margin: 0px 5px 5px 0px" />
                     </a>
                     
                  </div>
                  -->
                  <table>
                     <tr>
                        <xsl:if test="small_image != '' ">
                           <td valign="top">
                              <img src="{small_image}" alt="Основное" title="Основное" style="cursor: pointer; border: 1px solid #000000; margin: 0px 5px 5px 0px" onclick="ShowImgDiv('{image}')"/>
                           </td>
                        </xsl:if>
                        <!-- Выводим список дополнительных свойств типа "Файл" -->
                        <xsl:if test="count(//property[type=1]) &gt; 0">
                           <xsl:apply-templates select="//property[type=1]" mode="foto"/>
                        </xsl:if>
                     </tr>
                  </table>
               </td>
            </xsl:if>
         </tr>
      </table>

      <!-- Цена товара -->
      <div class="shop_block">Цена:
         <xsl:choose>
            <xsl:when test="price != 0">

               <xsl:variable name="price" select="price"/>

               <span style="font-size: 11pt; font-weight: bold;">
                  <xsl:value-of select="format-number($price, '### ###', 'my')"/>&#xA0;<xsl:value-of disable-output-escaping="yes" select="currency"/></span>
            </xsl:when>
            <xsl:otherwise>договорная</xsl:otherwise>
         </xsl:choose>

         <!-- Если цена со скидкой - выводим ее -->
         <xsl:if test="price!=price_tax">
            <br/>
            <font color="gray">
               <strike>
                  <xsl:value-of disable-output-escaping="yes" select="price_tax"/>&#xA0;<xsl:value-of disable-output-escaping="yes" select="currency"/></strike>
            </font>
         </xsl:if>
      </div>
      
      <!--<xsl:if test="(count(//property[value != '']) - count(//property[type!=1]) - 1)>0">-->
      
      
         <div style="margin-top: 10px;">
            <!--<h2>Дополнительные сведения</h2>-->

            <!-- Выводим список дополнительных свойств -->
            <table border="0">
               <xsl:apply-templates select="//property[type!=1]"/>
            </table>
         </div>
      <!--</xsl:if>-->
   </xsl:template>

   <!-- Шаблон для модификаций -->
   <xsl:template match="modifications/item">
      <tr>
         <td>
            <!-- Название модификации -->
            <a href="{/shop/path}{fullpath}{path}/">
               <xsl:value-of disable-output-escaping="yes" select="name"/>
            </a>
         </td>
         <td>
            <!-- Цена модификации -->
            <xsl:value-of disable-output-escaping="yes" select="price"/>&#xA0;
            <!-- Валюта -->
            <xsl:value-of disable-output-escaping="yes" select="currency"/>
         </td>
      </tr>
   </xsl:template>

   <!-- Вывод рейтинга товара -->
   <xsl:template name="show_average_grade">
      <xsl:param name="grade" select="0"/>
      <xsl:param name="const_grade" select="0"/>

      <!-- Чтобы избежать зацикливания -->
      <xsl:variable name="current_grade" select="$grade * 1"/>

      <xsl:choose>
         <!-- Если число целое -->
         <xsl:when test="floor($current_grade) = $current_grade and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 1 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 1"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <xsl:if test="$current_grade != 0">
               <img src="/hostcmsfiles/images/stars_single.gif"/>
            </xsl:if>
         </xsl:when>
         <xsl:when test="$current_grade != 0 and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 0.5 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 0.5"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <img src="/hostcmsfiles/images/stars_half.gif"/>
         </xsl:when>

         <!-- Выводим серые звездочки, пока текущая позиция не дойдет то значения, увеличенного до целого -->
         <xsl:otherwise>
            <xsl:call-template name="show_average_grade">
               <xsl:with-param name="grade" select="$current_grade"/>
               <xsl:with-param name="const_grade" select="$const_grade - 1"/>
            </xsl:call-template>
            <img src="/hostcmsfiles/images/stars_gray.gif"/>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:template>

   <!-- Шаблон для вывода звездочек (оценки) -->
   <xsl:template name="for">
      <xsl:param name="i" select="0"/>
      <xsl:param name="n"/>

      <input type="radio" name="shop_comment_grade" value="{$i}" id="id_shop_comment_grade_{$i}">
         <xsl:if test="/shop/shop_comment_grade = $i">
            <xsl:attribute name="checked">
            </xsl:attribute>
         </xsl:if>
      </input>&#xA0;
      <label for="id_shop_comment_grade_{$i}">
         <xsl:call-template name="show_average_grade">
            <xsl:with-param name="grade" select="$i"/>
            <xsl:with-param name="const_grade" select="5"/>
         </xsl:call-template>
      </label>
      <br/>
      <xsl:if test="$n &gt; $i and $n &gt; 1">
         <xsl:call-template name="for">
            <xsl:with-param name="i" select="$i + 1"/>
            <xsl:with-param name="n" select="$n"/>
         </xsl:call-template>
      </xsl:if>
   </xsl:template>

<!-- Шаблон для отзывов -->
   <xsl:template match="comments/comment">
      <b>
         <xsl:value-of select="subject"/>
      </b>&#xA0;
   (<xsl:value-of select="user_name"/>)
      <xsl:value-of select="date_time"/>
      <xsl:call-template name="show_average_grade">
         <xsl:with-param name="grade" select="grade"/>
         <xsl:with-param name="const_grade" select="5"/>
      </xsl:call-template>
      <div style="background: #F5F5F7; padding: 3px;">
         <xsl:value-of select="text"/>
         <br/>
      </div>
      <br/>
   </xsl:template>   




   <!-- Шаблон для скидки -->
   <xsl:template match="discount">
      <br/>
      <xsl:value-of disable-output-escaping="yes" select="name"/>&#xA0;
      <xsl:value-of disable-output-escaping="yes" select="value"/>%</xsl:template>

   <!-- Шаблон вывода дополнительных свойств не являющихся файлами -->
   <xsl:template match="property">
      <!-- Не отображаем дату добавления объявления и e-mail -->
      <xsl:if test="@id!=61 and @id!=6 and value != ''">


         <xsl:choose>
            <!-- Тип свойства - флажок -->
            <xsl:when test="type=7">
               <xsl:if test="value!=0">
                  <tr>
                     <td class="shop_block" style="border: none; color: #da1a05;">
                        <center>
                           <img src="/images/check.gif"/>
                        </center>
                     </td>
                     <td style="padding: 5px;">
                        <strong>
                           <xsl:value-of disable-output-escaping="yes" select="name"/>
                        </strong>
                     </td>
                  </tr>
               </xsl:if>
               <!--
                  <xsl:choose>
                     <xsl:when test="value=0">&#xA0;Нет</xsl:when>
                     <xsl:otherwise>&#xA0;Да</xsl:otherwise>
                  </xsl:choose>
                  -->
            </xsl:when>
            <!-- Остальные типы доп. свойств -->
            <xsl:otherwise>
               <tr>
                  <td class="shop_block" style="border: none;">
                     <xsl:value-of disable-output-escaping="yes" select="name"/>:</td>
                  <td style="padding: 5px;">
                     <strong>
                        <xsl:value-of disable-output-escaping="yes" select="value"/>
                     </strong>
                  </td>
               </tr>
            </xsl:otherwise>
         </xsl:choose>
      </xsl:if>
   </xsl:template>

   <!-- Шаблон вывода дополнительных свойств являющихся файлами -->
   <xsl:template match="property" mode="foto">
      <td valign="top">
         <img src="{small_image/file_path}" alt="{name}" title="{name}" style="cursor: pointer; border: 1px solid #000000; margin: 0px 5px 5px 0px" onclick="ShowImgDiv('{file_path}')"/>
      </td>
      <xsl:if test="position() mod 3 =0">
         <xsl:text disable-output-escaping="yes">
         &lt;/tr&gt;
         &lt;tr&gt;
      </xsl:text>
      </xsl:if>
   </xsl:template>

   <xsl:template match="tying/item">

      <div style="clear: both">
         <p>
            <a href="/shop/{fullpath}{path}/">
               <xsl:value-of disable-output-escaping="yes" select="name"/>
            </a>
         </p>

         <!-- Изображение для товара, если есть -->
         <xsl:if test="small_image != ''">
            <a href="{/shop/path}{fullpath}{path}/">
               <img src="{small_image}" align="left" style="border: 1px solid #000000; margin: 0px 5px 5px 0px"/>
            </a>
         </xsl:if>

         <p>
            <xsl:value-of disable-output-escaping="yes" select="description"/>
         </p>

         <!-- Если указан вес товара -->
         <xsl:if test="weight != 0">
            <br/>Вес товара: <xsl:value-of select="weight"/> <xsl:value-of select="weight_mesure"/></xsl:if>

         <!-- Показываем скидки -->
         <xsl:if test="count(discount) &gt; 0">
            <xsl:apply-templates select="discount"/>
         </xsl:if>

         <!-- Показываем количество на складе, если больше нуля -->
         <xsl:if test="rest &gt; 0">
            <br/>В наличии: <xsl:value-of disable-output-escaping="yes" select="rest"/></xsl:if>

         <xsl:if test="producer/name != ''">
            <br/>Производитель: <xsl:value-of disable-output-escaping="yes" select="producer/name"/></xsl:if>
      </div>
   </xsl:template>

   <!-- ======================================================== -->
   <!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
   <!-- ======================================================== -->

   <xsl:template match="group" mode="goup_path">
      <xsl:variable name="parent_id" select="@parent"/>

      <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
      <xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>

      <xsl:if test="@parent=0">
         <a href="{/shop/path}">
            <xsl:value-of disable-output-escaping="yes" select="/shop/name"/>
         </a>
      </xsl:if>

      <span class="path_arrow">&#x2192;</span>

      <a href="{/shop/path}{fullpath}">
         <xsl:value-of disable-output-escaping="yes" select="name"/>
      </a>
   </xsl:template>

<!-- Отображение комментариев  -->
         <xsl:if test="count(item_comments/comment) &gt; 0">
            <p class="title">
               <a name="comments"></a>Комментарии</p>
            <xsl:apply-templates select="item_comments/comment"/>
         </xsl:if>
      </xsl:if>

      <!-- Если разрешено отображать формы добавления комментария
      1 - Только авторизированным
      2 - Всем -->
      <xsl:if test="/document/show_add_comments/node()  and ((/document/show_add_comments = 1 and /document/site_user_id &gt; 0)  or /document/show_add_comments = 2)">
      
         <div id="ShowAddComment">
            <a href="javascript:void(0)" onclick="javascript:cr('AddComment')">Добавить комментарий</a>
         </div>

         <div id="AddComment" style="display: none">
            <xsl:call-template name="AddCommentForm"></xsl:call-template>
         </div>
      </xsl:if>
   </xsl:template>

   <!-- /// Метки для информационного элемента /// -->
   <xsl:template match="tags/tag">
      <a href="{/document/information_system/url}tag/{tag_path_name}/" class="tag">
         <xsl:value-of select="tag_name"/>
      </a>
      <xsl:if test="position() != last()">,</xsl:if>&#xA0;
   </xsl:template>

   <!-- Шаблон для вывода звездочек (оценки) -->
   <xsl:template name="for_star">
      <xsl:param name="i" select="0"/>
      <xsl:param name="n"/>

      <input type="radio" name="comment_grade" value="{$i}" id="id_comment_grade_{$i}"/>&#xA0;
      <label for="id_icomment_grade_{$i}">
         <xsl:call-template name="show_average_grade">
            <xsl:with-param name="grade" select="$i"/>
            <xsl:with-param name="const_grade" select="5"/>
         </xsl:call-template>
      </label>

      <br/>

      <xsl:if test="$n &gt; $i and $n &gt; 1">
         <xsl:call-template name="for_star">
            <xsl:with-param name="i" select="$i + 1"/>
            <xsl:with-param name="n" select="$n"/>
         </xsl:call-template>
      </xsl:if>
   </xsl:template>

   <!-- Вывод рейтинга -->
   <xsl:template name="show_average_grade">
      <xsl:param name="grade" select="0"/>
      <xsl:param name="const_grade" select="0"/>

      <!-- Чтобы избежать зацикливания -->
      <xsl:variable name="current_grade" select="$grade * 1"/>

      <xsl:choose>
         <!-- Если число целое -->
         <xsl:when test="floor($current_grade) = $current_grade and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 1 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 1"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <xsl:if test="$current_grade != 0">
               <img src="/hostcmsfiles/images/stars_single.gif"/>
            </xsl:if>
         </xsl:when>
         <xsl:when test="$current_grade != 0 and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 0.5 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 0.5"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <img src="/hostcmsfiles/images/stars_half.gif"/>
         </xsl:when>

         <!-- Выводим серые звездочки, пока текущая позиция не дойдет то значения, увеличенного до целого -->
         <xsl:otherwise>
            <xsl:call-template name="show_average_grade">
               <xsl:with-param name="grade" select="$current_grade"/>
               <xsl:with-param name="const_grade" select="$const_grade - 1"/>
            </xsl:call-template>
            <img src="/hostcmsfiles/images/stars_gray.gif"/>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:template>

   <!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
   <xsl:template match="group" mode="goup_path">
      <xsl:variable name="parent_id" select="@parent_id"/>

      <!-- Выбираем рекурсивно вышестоящую группу -->
      <xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>

      <xsl:if test="@parent_id=0">
         <a href="{/document/information_system/url}">
            <xsl:value-of disable-output-escaping="yes" select="/document/information_system/name"/>
         </a>
      </xsl:if>

      <span class="path_arrow">&#x2192;</span>

      <a href="{/document/information_system/url}{fullpath}">
         <xsl:value-of select="name"/>
      </a>
   </xsl:template>

   <!-- Отображение комментариев -->
   <xsl:template match="comment">

      <!-- Отображаем комментарий, если задан текст или тема комментария -->
      <xsl:if test="comment_text != '' or comment_subject != ''">
         <a name="comment{comment_id}"></a>
         <div class="comment" id="comment{comment_id}">
            <div class="tl"></div>
            <div class="tr"></div>
            <div class="bl"></div>
            <div class="br"></div>

            <xsl:if test="comment_subject != ''">
               <div>
                  <strong>
                     <xsl:value-of select="comment_subject"/>
                  </strong>
               </div>
            </xsl:if>

            <xsl:value-of select="comment_text" disable-output-escaping="yes"/>

            <!-- Оценка комментария -->
            <xsl:if test="comment_grade != 0">
               <div>Оценка:
                  <xsl:call-template name="show_average_grade">
                     <xsl:with-param name="grade" select="comment_grade"/>
                     <xsl:with-param name="const_grade" select="5"/>
                  </xsl:call-template>
               </div>
            </xsl:if>
         </div>

         <div class="comment_desc">
            <xsl:choose>
               <!-- Комментарий добавил авторизированный пользователь -->
               <xsl:when test="site_user_login/node()">
                  <a href="/users/info/{site_user_login}/" class="c_u_l">
                     <xsl:value-of select="site_user_login"/>
                  </a>&#xA0;·&#xA0;<xsl:value-of select="comment_datetime"/>
               </xsl:when>
               <!-- Комментарй добавил неавторизированный пользователь -->
               <xsl:otherwise>
                  <xsl:value-of select="comment_fio"/>&#xA0;·&#xA0;<xsl:value-of select="comment_date"/></xsl:otherwise>
            </xsl:choose>&#xA0;·&#xA0;<xsl:if
            test="/document/show_add_comments/node()
            and ((/document/show_add_comments = 1 and /document/site_user_id > 0)
            or /document/show_add_comments = 2)"><a href="javascript:cr('cr_{comment_id}');">ответить</a>&#xA0;·&#xA0;</xsl:if><a href="{/document/item/item_path}#comment{comment_id}" title="ссылка">#</a>
            
         </div>

         <!-- Отображаем только авторизированным пользователям -->
         <xsl:if test="/document/show_add_comments/node() and ((/document/show_add_comments = 1 and /document/site_user_id > 0) or /document/show_add_comments = 2)">
            <div class="cr" id="cr_{comment_id}">
            
               <xsl:call-template name="AddCommentForm">
                  <xsl:with-param name="comment_id" select="comment_id"/>
               </xsl:call-template>
            </div>
         </xsl:if>

         <!-- Выбираем дочерние комментарии -->
         <xsl:if test="count(comment) > 0">
            <div class="csd">
               <xsl:apply-templates select="comment"/>
            </div>
         </xsl:if>
      </xsl:if>
   </xsl:template>

   <!-- Шаблон вывода добавления комментария -->
   <xsl:template name="AddCommentForm">
      <xsl:param name="comment_id" select="0"/>
      
      <!--Отображение формы добавления комментария-->
      <form action="{/document/url}" method="post">
         <!-- Авторизированным не показываем -->
         <xsl:if test="/document/site_user_id = 0">
        
            <p>
            ФИО
            <br/>
            <input type="text" size="70" name="comment_autor" value=""/>
            </p>

            <p>
            E-mail
            <br/>
            <input type="text" size="70" name="comment_email" value=""/>
            </p>
            
            <p>
            Тема
            <br/>
            <input type="text" size="70" name="comment_subject" value=""/>
            </p>
         </xsl:if>

         <p>
         Комментарий
         <br/>
         <textarea name="comment_text" cols="68" rows="5" class="mceEditor"></textarea>
         </p>

         <p>
         Оценка материала
         <br/>
         <xsl:call-template name="for_star">
            <xsl:with-param name="n" select="5"/>
         </xsl:call-template>
         </p>

         <!-- Обработка CAPTCHA -->
         <xsl:if test="//captcha_key != 0 and /document/site_user_id = 0">
            <p>
            Код подтверждения
            <br/>
            <div style="float: left">
               <img style="border: 1px solid #777777" src="/captcha.php?get_captcha={//captcha_key}&amp;height=28" title="Код подтверждения"/>
            </div>

            <div style="float: left; margin-left: 10px; margin-top: 5px">
               <input type="hidden" name="captcha_key" value="{//captcha_key}"/>
               <input type="text" name="captcha_keystring" size="15"/>
            </div>
            
            <div style="clear: both"></div>
            </p>
         </xsl:if>
        
         <xsl:if test="$comment_id != 0">
            <input type="hidden" name="comment_parent_id" value="{comment_id}"/>
         </xsl:if>
        
         <p>
         <input type="submit" name="add_comment" value="Опубликовать"/>
         </p>
      </form>
   </xsl:template>

<!-- Отображение комментариев  -->
         <xsl:if test="count(item_comments/comment) &gt; 0">
            <p class="title">
               <a name="comments"></a>Комментарии</p>
            <xsl:apply-templates select="item_comments/comment"/>
         </xsl:if>
      </xsl:if>

      <!-- Если разрешено отображать формы добавления комментария
      1 - Только авторизированным
      2 - Всем -->
      <xsl:if test="/document/show_add_comments/node()  and ((/document/show_add_comments = 1 and /document/site_user_id &gt; 0)  or /document/show_add_comments = 2)">
      
         <div id="ShowAddComment">
            <a href="javascript:void(0)" onclick="javascript:cr('AddComment')">Добавить комментарий</a>
         </div>

         <div id="AddComment" style="display: none">
            <xsl:call-template name="AddCommentForm"></xsl:call-template>
         </div>
      </xsl:if>
   </xsl:template>

   <!-- /// Метки для информационного элемента /// -->
   <xsl:template match="tags/tag">
      <a href="{/document/information_system/url}tag/{tag_path_name}/" class="tag">
         <xsl:value-of select="tag_name"/>
      </a>
      <xsl:if test="position() != last()">,</xsl:if>&#xA0;
   </xsl:template>

   <!-- Шаблон для вывода звездочек (оценки) -->
   <xsl:template name="for_star">
      <xsl:param name="i" select="0"/>
      <xsl:param name="n"/>

      <input type="radio" name="comment_grade" value="{$i}" id="id_comment_grade_{$i}"/>&#xA0;
      <label for="id_icomment_grade_{$i}">
         <xsl:call-template name="show_average_grade">
            <xsl:with-param name="grade" select="$i"/>
            <xsl:with-param name="const_grade" select="5"/>
         </xsl:call-template>
      </label>

      <br/>

      <xsl:if test="$n &gt; $i and $n &gt; 1">
         <xsl:call-template name="for_star">
            <xsl:with-param name="i" select="$i + 1"/>
            <xsl:with-param name="n" select="$n"/>
         </xsl:call-template>
      </xsl:if>
   </xsl:template>

   <!-- Вывод рейтинга -->
   <xsl:template name="show_average_grade">
      <xsl:param name="grade" select="0"/>
      <xsl:param name="const_grade" select="0"/>

      <!-- Чтобы избежать зацикливания -->
      <xsl:variable name="current_grade" select="$grade * 1"/>

      <xsl:choose>
         <!-- Если число целое -->
         <xsl:when test="floor($current_grade) = $current_grade and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 1 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 1"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <xsl:if test="$current_grade != 0">
               <img src="/hostcmsfiles/images/stars_single.gif"/>
            </xsl:if>
         </xsl:when>
         <xsl:when test="$current_grade != 0 and not($const_grade &gt; ceiling($current_grade))">

            <xsl:if test="$current_grade - 0.5 &gt; 0">
               <xsl:call-template name="show_average_grade">
                  <xsl:with-param name="grade" select="$current_grade - 0.5"/>
                  <xsl:with-param name="const_grade" select="$const_grade - 1"/>
               </xsl:call-template>
            </xsl:if>

            <img src="/hostcmsfiles/images/stars_half.gif"/>
         </xsl:when>

         <!-- Выводим серые звездочки, пока текущая позиция не дойдет то значения, увеличенного до целого -->
         <xsl:otherwise>
            <xsl:call-template name="show_average_grade">
               <xsl:with-param name="grade" select="$current_grade"/>
               <xsl:with-param name="const_grade" select="$const_grade - 1"/>
            </xsl:call-template>
            <img src="/hostcmsfiles/images/stars_gray.gif"/>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:template>

   <!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
   <xsl:template match="group" mode="goup_path">
      <xsl:variable name="parent_id" select="@parent_id"/>

      <!-- Выбираем рекурсивно вышестоящую группу -->
      <xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>

      <xsl:if test="@parent_id=0">
         <a href="{/document/information_system/url}">
            <xsl:value-of disable-output-escaping="yes" select="/document/information_system/name"/>
         </a>
      </xsl:if>

      <span class="path_arrow">&#x2192;</span>

      <a href="{/document/information_system/url}{fullpath}">
         <xsl:value-of select="name"/>
      </a>
   </xsl:template>

   <!-- Отображение комментариев -->
   <xsl:template match="comment">

      <!-- Отображаем комментарий, если задан текст или тема комментария -->
      <xsl:if test="comment_text != '' or comment_subject != ''">
         <a name="comment{comment_id}"></a>
         <div class="comment" id="comment{comment_id}">
            <div class="tl"></div>
            <div class="tr"></div>
            <div class="bl"></div>
            <div class="br"></div>

            <xsl:if test="comment_subject != ''">
               <div>
                  <strong>
                     <xsl:value-of select="comment_subject"/>
                  </strong>
               </div>
            </xsl:if>

            <xsl:value-of select="comment_text" disable-output-escaping="yes"/>

            <!-- Оценка комментария -->
            <xsl:if test="comment_grade != 0">
               <div>Оценка:
                  <xsl:call-template name="show_average_grade">
                     <xsl:with-param name="grade" select="comment_grade"/>
                     <xsl:with-param name="const_grade" select="5"/>
                  </xsl:call-template>
               </div>
            </xsl:if>
         </div>

         <div class="comment_desc">
            <xsl:choose>
               <!-- Комментарий добавил авторизированный пользователь -->
               <xsl:when test="site_user_login/node()">
                  <a href="/users/info/{site_user_login}/" class="c_u_l">
                     <xsl:value-of select="site_user_login"/>
                  </a>&#xA0;·&#xA0;<xsl:value-of select="comment_datetime"/>
               </xsl:when>
               <!-- Комментарй добавил неавторизированный пользователь -->
               <xsl:otherwise>
                  <xsl:value-of select="comment_fio"/>&#xA0;·&#xA0;<xsl:value-of select="comment_date"/></xsl:otherwise>
            </xsl:choose>&#xA0;·&#xA0;<xsl:if
            test="/document/show_add_comments/node()
            and ((/document/show_add_comments = 1 and /document/site_user_id > 0)
            or /document/show_add_comments = 2)"><a href="javascript:cr('cr_{comment_id}');">ответить</a>&#xA0;·&#xA0;</xsl:if><a href="{/document/item/item_path}#comment{comment_id}" title="ссылка">#</a>
            
         </div>

         <!-- Отображаем только авторизированным пользователям -->
         <xsl:if test="/document/show_add_comments/node() and ((/document/show_add_comments = 1 and /document/site_user_id > 0) or /document/show_add_comments = 2)">
            <div class="cr" id="cr_{comment_id}">
            
               <xsl:call-template name="AddCommentForm">
                  <xsl:with-param name="comment_id" select="comment_id"/>
               </xsl:call-template>
            </div>
         </xsl:if>

         <!-- Выбираем дочерние комментарии -->
         <xsl:if test="count(comment) > 0">
            <div class="csd">
               <xsl:apply-templates select="comment"/>
            </div>
         </xsl:if>
      </xsl:if>
   </xsl:template>

   <!-- Шаблон вывода добавления комментария -->
   <xsl:template name="AddCommentForm">
      <xsl:param name="comment_id" select="0"/>
      
      <!--Отображение формы добавления комментария-->
      <form action="{/document/url}" method="post">
         <!-- Авторизированным не показываем -->
         <xsl:if test="/document/site_user_id = 0">
        
            <p>
            ФИО
            <br/>
            <input type="text" size="70" name="comment_autor" value=""/>
            </p>

            <p>
            E-mail
            <br/>
            <input type="text" size="70" name="comment_email" value=""/>
            </p>
            
            <p>
            Тема
            <br/>
            <input type="text" size="70" name="comment_subject" value=""/>
            </p>
         </xsl:if>

         <p>
         Комментарий
         <br/>
         <textarea name="comment_text" cols="68" rows="5" class="mceEditor"></textarea>
         </p>

         <p>
         Оценка материала
         <br/>
         <xsl:call-template name="for_star">
            <xsl:with-param name="n" select="5"/>
         </xsl:call-template>
         </p>

         <!-- Обработка CAPTCHA -->
         <xsl:if test="//captcha_key != 0 and /document/site_user_id = 0">
            <p>
            Код подтверждения
            <br/>
            <div style="float: left">
               <img style="border: 1px solid #777777" src="/captcha.php?get_captcha={//captcha_key}&amp;height=28" title="Код подтверждения"/>
            </div>

            <div style="float: left; margin-left: 10px; margin-top: 5px">
               <input type="hidden" name="captcha_key" value="{//captcha_key}"/>
               <input type="text" name="captcha_keystring" size="15"/>
            </div>
            
            <div style="clear: both"></div>
            </p>
         </xsl:if>
        
         <xsl:if test="$comment_id != 0">
            <input type="hidden" name="comment_parent_id" value="{comment_id}"/>
         </xsl:if>
        
         <p>
         <input type="submit" name="add_comment" value="Опубликовать"/>
         </p>
      </form>
   </xsl:template>




</xsl:stylesheet>




#
Re: Коментарии
Авторизация