Формирование YML файла для разных доменов в системе

Материал из Umicms

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

В версии системы 2.8.1.3 и ниже, при формировании YML файла, такие параметры как name и company берутся из модуля "Конфигурация", вкладка "Глобальные", поле "Название сайта". Из-за этого при формировании YML-файла, XML-данные будут с указанием одного и того же "Названия сайта". Чтобы исправить данное обстоятельство, можно использовать решение, которое будет описано далее. В файле classes/modules/custom.php добавляем кастомный метод:

  public function ymlcompany(){
    $element = cmsController::getInstance()->getCurrentDomain()->getHost();
    return $element;
  }

а шаблон /xsl/export/custom/YML.xsl настраиваем следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
 xmlns:php="http://php.net/xsl" 
 xmlns:udt="http://umi-cms.ru/2007/UData/templates" 
 extension-element-prefixes="php" 
 exclude-result-prefixes="xsl php udt">
  <xsl:template match="umidump[@version='2.0']">
    <xsl:variable name="date2" select="document('udata://system/convertDate/now/(Y-m-d%20H:i)')/udata" />
    <yml_catalog date="{$date2}">
      <shop>
        <name>
          <xsl:value-of select="document('udata://custom/ymlcompany')/udata" />
        </name>
        <company>
          <xsl:value-of select="document('udata://custom/ymlcompany')/udata" />
        </company>
        <xsl:if test="phone">
          <phone>
            <xsl:value-of select="phone" />
          </phone>
        </xsl:if>
        <url>
          <xsl:value-of select="concat('http://', meta/domain)" />
        </url>
        <currencies>
          <xsl:choose>
            <xsl:when test="count($currency/item)">
              <xsl:apply-templates select="$currency/item" mode="currency-list" />
            </xsl:when>
            <xsl:otherwise>
              <currency id="RUB" rate="1"/>
            </xsl:otherwise>
          </xsl:choose>
        </currencies>
        <categories>
          <xsl:apply-templates select="pages/page[basetype/@method = 'category']" />
        </categories>
        <offers>
          <xsl:apply-templates select="pages/page[basetype/@method = 'object']" />
        </offers>
      </shop>
    </yml_catalog>
  </xsl:template>
</xsl:stylesheet>

В вашем аккаунте Яндекс-Маркета, необходимо будет указывать ссылки на yml-данные с указанием разных доменов системы, т.е.:

_http://sait1.ru/admin/exchange/get_export/119616/?as_file=0
_http://sait2.ru/admin/exchange/get_export/116085/?as_file=0

В итоге, в блоках name и company будет указан текущий домен сайта, а не из настроек модуля "Конфигурация"

Личные инструменты