UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: diii3 от 30 Ноября 2012, 15:53:39

Название: Свои поля при добавлении комментария
Отправлено: diii3 от 30 Ноября 2012, 15:53:39
Здравствуйте! Подскажите, пожалуйста, как добавлять свои поля в форму добавления комментария к странице? Нужно сделать поле "Ваш сайт" и поле "Ваша фотография".
Название: Re:Свои поля при добавлении комментария
Отправлено: admin от 02 Декабря 2012, 13:52:42
если мы говорим о комментариях для модуля "комментарии", то поля добавить не сложно, надо найти соответствующий тип данных в модуле "шаблоны данных" и добавить то что вам надо, в админке они начнут отображаться... тут все гуд.

Но у вас, будет еще 2 момента...

Во-первых, надо вывести их в шаблоне комментария (так как, там они выводятся просто как html с заранее определенными name, а не берутся из админки)

Во-вторых, надо сделать копию функции которая добавляет комментария и добавить в ней сохранения доп полей в созданный комментарий, так как там тоже привязка к определенно названым полям, а не к типу данных.
Название: Re:Свои поля при добавлении комментария
Отправлено: diii3 от 02 Декабря 2012, 18:04:27
Спасибо! Буду разбираться)
Название: Re:Свои поля при добавлении комментария
Отправлено: Axiomateria от 01 Мая 2013, 16:35:34
У меня тоже на эту тему вопрос (Шаблон "demodizzy")
История такова, что я просто переименовал в шаблоне comments-list.xsl

Заголовки полей С

<label>
   <p>Заголовок комментария
      <input type="text" name="title" class="textinputs" />
         </p>
</label>            

НА:

<label>
<p>Должность / Компания:
   <input type="text" name="title" class="textinputs" />
   </p>
</label>

И вот теперь в этом же файле пытаюсь вывести на сайте в списке комментариев через запрос
<xsl:value-of select="//group[@name='common']/property[@name='h1']/value" disable-output-escaping="yes" />
cтроку этого самого поля...Но не получается...

Полный вид таков:

   <xsl:template match="item" mode="review">
      <div class="reviews-block-items" umi:element-id="{@id}" umi:region="row">
         <div class="descr" umi:field-name="message" umi:delete="delete" umi:empty="&empty;" itemprop="description">
           
                <p><xsl:apply-templates select="document(@xlink:author-href)" /></p>
                <p><xsl:value-of select="//group[@name='common']/property[@name='h1']/value" disable-output-escaping="yes" /></p> 
             <p><xsl:value-of select="." disable-output-escaping="yes" /></p>
         </div>            
      </div>
   </xsl:template>

Однако в шаблоне commet-view.xsl через этот же запрос оно успешно выводится, если открыть страницу с отдельным комментарием.

Что я упустил, подскажите, пожалуйста ?
Название: Re:Свои поля при добавлении комментария
Отправлено: admin от 02 Мая 2013, 19:09:29
когда вы работаете в шаблоне
<xsl:template match="item" mode="review"> ...

вы работаете с каким-то xml в котором есть какие-то данные. Если вы не уверенны что у данные которые вы хотите вывести есть в данном xml то посмотрите что в нем есть через вставку

<textarea style="height:500px; width:900px;">
     <xsl:copy-of select="."/>
   </textarea>

вставив её в тот шаблон который вас интересует и данная конструкция выведет вам весь xml, с которым вы работаете в данном шаблоне

P.S. подскажу что в шаблоне
<xsl:template match="item" mode="review"> ...
заголовок можно вывести через <xsl:value-of select="@title"  />

P.P.S атрибут disable-output-escaping="yes" используется для того чтобы отключить экранирование при выводе содержимого указанного в атрибуте select... так что <xsl:value-of select="..." disable-output-escaping="yes" /> имеет смысл писать тогда, например, когда вы выводите текст из поля типа "html поле"
Название: Re:Свои поля при добавлении комментария
Отправлено: Axiomateria от 05 Мая 2013, 22:38:40
P.S. подскажу что в шаблоне
<xsl:template match="item" mode="review"> ...
заголовок можно вывести через <xsl:value-of select="@title"  />

Спасибо!
Да вот так всё просто как всегда в этом случае и решился вопрос...


Однако теперь вопрос другой:
как сделать так что бы к отправленному отзыву, который был одобрен администратором сайта и разрешён к публикации закачать ещё и аватарку от автора пользователя. Администратор должен эти аватарки сам закачивать в первое время.
Я в типе данных "Комментарии" добавил поле под идентификатором  "photo_author_ reviews"
и вот теперь думаю - а правильно ли будет применить такой вариант, как отображение этой загруженной аватарки администратором на сайте к отзыву так:

Значения:
         <xsl:variable name="authorava1" select="document(concat('upage://', //result/page/@id, '.photo_author_reviews'))//value" />
         <xsl:variable name="authorava2" select="document(concat('udata://system/makeThumbnail/(.', $authorava1, ')/(100)/auto'))/udata/src"/>

и на месте вывода в отзыве аватарки запрос:
<img src="http://domen.ru/{$authorava2}"/>   

- с новостями такой фокус сработал, а вот с отзывами пока не ладится...

Что посоветуете в таком случае ?
Название: Re:Свои поля при добавлении комментария
Отправлено: admin от 06 Мая 2013, 12:36:05
правильнее назначать аватарку пользователю, так как автор комментария и пользователь связанны. И при выводе комментария (когда вы выводите информацию о авторе комментария) выводите аватар
Название: Re:Свои поля при добавлении комментария
Отправлено: Axiomateria от 06 Мая 2013, 16:26:11
правильнее назначать аватарку пользователю

назначить в админ/панеле в процессе редактирования отзыва ?

И при выводе комментария (когда вы выводите информацию о авторе комментария) выводите аватар

Так вот вывод этой аватарки и есть мой вопрос - каким посоветуете вызовом выводить эту самую аватарку пользователя ?
Название: Re:Свои поля при добавлении комментария
Отправлено: Axiomateria от 07 Мая 2013, 14:20:48
Или я вопрос не могу чётко сформулировать... или это в принципе не реализовать ни как...
Название: Re:Свои поля при добавлении комментария
Отправлено: admin от 20 Мая 2013, 09:23:49
посмотрите ветку обсуждения про аватар для tpl шаблонов

http://umihelp.ru/forum/index.php/topic,41.0.html

Название: Re:Свои поля при добавлении комментария
Отправлено: Axiomateria от 20 Мая 2013, 20:59:35
Спасибо, почитал.
Та тема про то, как аватарку на форуме закачивать самим пользвователем, а у меня для вывода аватарки в комментариях в товару, которую сам администратор будет заливать. В шаблоне данных "Комментарии" я создал в группе полей "comment_props" дополнительное поле "photo_author_reviews" тип "Изображение".
Затем в шаблоне comment-list.xsl вставил "ремикс" этой строчки
<xsl:variable name="avatar" select="document(concat('uobject://',user_id,'.avatar'))/udata/property/value/@path" />

свою строчку:
<xsl:variable name="avatar" select="document(concat('uobject://',user_id,'.avatar'))/udata/property/value/@path" />:
 
но что-то не то опять... не работает...
Название: Re:Свои поля при добавлении комментария
Отправлено: admin от 21 Мая 2013, 12:45:42
вы создали поле avatar в типе данных "комментарий", а затем при выводе каждого комментария пытаетесь вывести поле avatar из текущего пользователя uobject://',user_id....
Название: Re:Свои поля при добавлении комментария
Отправлено: Axiomateria от 22 Мая 2013, 15:36:53
Извиняюсь. Я ошибся.

Свою строчку я вставляю такую:
<xsl:variable name="photo_author_reviews" select="document(concat('uobject://',author_id,'.photo_author_reviews'))/udata/property/value/@path" />

где вместо поля "avatar" в типе данных "Комментарий" я создал такое же по сути поле с названием "photo_author_reviews".
Название: Re:Свои поля при добавлении комментария
Отправлено: Axiomateria от 11 Июня 2013, 14:46:27
В итоге выкрутился таким образом:

в шаблоне commet-list.xsl вот такой код заработал, теперь администратор может любую аватарку загрузить для респондента

<xsl:template match="item" mode="review">
      <div class="reviews-block-items" umi:element-id="{@id}" umi:region="row">
         <div class="descr" umi:field-name="message" umi:delete="delete" umi:empty="&empty;" itemprop="description">
              <table width="100%" border="0" cellspacing="0" cellpadding="0">
                <tr>
                   <td valign="top" width="100">         
         <div class="authoravatar">
           <xsl:attribute name="style">
           <xsl:value-of select="concat('background-image: url(', $site-info[@name = 'avatar_author_default']/value, ')')" />         
         </xsl:attribute>
           <xsl:call-template name="catalog-thumbnail">
           <xsl:with-param name="element-id" select="@id" />
           <xsl:with-param name="field-name">photo_author_reviews</xsl:with-param>
           <xsl:with-param name="width">90</xsl:with-param>
           <xsl:with-param name="height">90</xsl:with-param>
        </xsl:call-template>   
         </div>            
                   </td>
                   <td align="left" valign="top">       
                      <p class="author-name"><xsl:apply-templates select="document(@xlink:author-href)" /></p>
                   <p class="author-org"><xsl:value-of select="@title" /></p>
                      <p class="author-review">
                        <xsl:text>«</xsl:text>
                          <xsl:value-of select="." disable-output-escaping="yes" />
                         <xsl:text>»</xsl:text>
                      </p>
                   </td>
                </tr>
              </table>
         </div>            
      </div>
   </xsl:template>