Корректное отображение полей в первой группе нового типа данных

Материал из Umicms
Перейти к:навигация, поиск

В некоторых ситуациях необходимо создать совершенно новый тип данных для страниц, и в этом типе первая группа полей имеет идентификатор не common, и в этой группе уже нет полей h1 и title, тогда необходимо переназначить xslt-шаблон, который отвечает за отображение первой группы, иначе будут проблемы с отображением полей в этой группе.

Если первая группа полей в ваше типе данных имеет идентификатор file, и этот тип относится к модулю "Каталог", то необходимо в папку \styles\skins\mac\data\modules\catalog\ добавить файл form.modify.custom.xsl следующего содержания:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet SYSTEM "ulang://common">

  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:umi="http://www.umi-cms.ru/TR/umi">
    
    <xsl:template match="group[position() = 1 and count(../../basetype) and ./@name='file']" mode="form-modify-group-fields">
      <xsl:param name="show-name">
        <xsl:text>1</xsl:text>
      </xsl:param>
      <xsl:param name="show-type">
        <xsl:text>1</xsl:text>
      </xsl:param>
      <xsl:if test="@name = 'file'">
        <div style="width:50%; float:left; padding-bottom:5px;">
          <a href="javascript:void(0);" class="extended_fields_expander">&js-fields-expand;</a>
        </div>
      </xsl:if>
      <xsl:if test="$show-name = '1'">
        <xsl:call-template name="std-form-is-active">
          <xsl:with-param name="value" select="../../@active = 'active'" />
        </xsl:call-template>
        <xsl:call-template name="std-form-name">
          <xsl:with-param name="value" select="../../name" />
        </xsl:call-template>
        <xsl:call-template name="std-form-alt-name">
          <xsl:with-param name="value" select="../../@alt-name" />
        </xsl:call-template>
      </xsl:if>
      <div class="extended_fields">
        <xsl:if test="@name = 'file'">
          <xsl:attribute name="style">
            <xsl:text>display:none</xsl:text>
          </xsl:attribute>
        </xsl:if>
        <xsl:choose>
          <xsl:when test="$show-type = '1'">
            <xsl:call-template name="std-form-data-type">
              <xsl:with-param name="value" select="../../@type-id" />
            </xsl:call-template>
          </xsl:when>
          <xsl:otherwise>
            <input type="hidden" name="type-id" value="{../../@type-id}" />
          </xsl:otherwise>
        </xsl:choose>
        <xsl:apply-templates select="field[not(@type='wysiwyg' or @type='text')]" mode="form-modify" />
      </div>
      <xsl:apply-templates select="field[@type='wysiwyg' or @type='text']" mode="form-modify" />
    </xsl:template>
    
</xsl:stylesheet>

В данном шаблоне, в трех местах, идентификатор file необходимо заменить на ваш идентифкатор поля.

Данный образом, мы добавляем еще один шаблон для обработки первой группы полей, в типах данных модуля Каталог.