Gerar Arquivo XML

Olá, neste tutorial vamos mostrar como gerar um XML .


Acesse o menu Ofertas > XML. Clique no botão + para adicionar um novo XML.

Ou na própria busca de pesquisa do console, digite XML.


Em "Nome do Arquivo" digite o nome do catálogo, como por exemplo: googleshopping.xml, googlemerchant.xml, etc. (Detalhe: é obrigatório inserir o .xml no nome do arquivo)

No campo Encoding selecione a opção UTF-8.

No campo Coleção selecione a coleção com os produtos para enviar no XML.

Abaixo tem um modelo do código do XML, altere o campo URL_DA_LOJA para seu domínio e copie e cole no campo de XML.

{% load shop_tags i18n l10n %}{% spaceless %}
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
    <channel>
        <title>
            <![CDATA[{{ shop_settings.SEO_TITLE }}]]>
        </title>
        <link>
            <![CDATA[ {{ shop_settings.URL_EMAIL }} ]]> 
        </link>
        <description>
            <![CDATA[{{ shop_settings.SEO_DESCRIPTION }}]]>
        </description>
        {% for object in object_list|dictsortreversed:"product_id" %}
        {% if object.sku.product.category and object.sku.product.images.exists %}
        {% get_data_json object.sku.product.specifications as json_specifications %}
        <item>
            <g:id>
                <![CDATA[{{ object.sku.reference_code }}]]>
            </g:id>
            <title>
                <![CDATA[{{ object.product_name }}]]>
            </title>
            <description>{% if object.product_detail %}
                <![CDATA[{{ object.product_detail|safe }}]]>{% else %}
                <![CDATA[{{ object.product_name|title }}]]>{% endif %}
            </description>
            <g:product_type>
                <![CDATA[{% if object.sku.product.category %}{{ object.sku.product.category.get_root.title }} > {{ object.sku.product.category.parent.title }} > {{ object.sku.product.category.title }}{% else %}Sem categoria{% endif %}]]>
            </g:product_type>
            {% localize off %}
            <link>
                <![CDATA[https://www.URL_DA_LOJA.com.br{{ object.sku.product.get_absolute_url }}{% if object.sku.product.is_variation %}/{{ object.sku.id }}/{% endif %}]]>
            </link>{% endlocalize %}
            <g:image_link>{{ object.product_image }}
            </g:image_link>
            {% for img in object.sku.product.images.all|slice:"10" %}
            {% if img.version_large not in object.product_image %}
            <g:additional_image_link>https:{{ MEDIA_URL }}{{ img.version_large }}</g:additional_image_link>
            {% endif %}
            {% endfor %}
            <g:condition>new
            </g:condition>
            <g:availability>{% if object.sku.has_stock and object.sku_available %}
                <![CDATA[in stock]]>{% else %}
                <![CDATA[out of stock]]>{% endif %}
            </g:availability>
            {% if object.category_global_code %}
            <g:google_product_category>{{ object.category_global_code }}
            </g:google_product_category>
            {% endif %}
            <g:price>{{ object.sku_unit_price }} BRL
            </g:price>
            <g:sale_price>{{ object.sku_price }} BRL
            </g:sale_price>
            {% if object.sku.ean_13 %}
            <g:gtin >
                <![CDATA[{{ object.sku.ean_13 }}]]>
            </g:gtin>
            {% endif %}
            <g:brand>{{ object.product_brand_name }}
            </g:brand>
            <g:mpn>
                <![CDATA[{{ object.sku.reference_code }}]]>
            </g:mpn>
            <g:identifier_exists>no
            </g:identifier_exists>
            <g:online_only>y
            </g:online_only>
            <g:installment>
                <g:months>{{ object.sku_price|get_min_installments }}
                </g:months>
                <g:amount>{{ object.sku_price|get_card_price }} BRL
                </g:amount>
            </g:installment>
            {% for s in object.sku.product.property_values.all %}
            {% if s.value and s.specification.title|slugify == 'cor' %}
            <g:color>
                <![CDATA[{{ s.value }}]]>
            </g:color>
            {% elif s.value and s.specification.title|slugify == 'gender' %}
            <g:gender>
                <![CDATA[{{ s.value }}]]>
            </g:gender>
            {% elif s.value and s.specification.title|slugify == 'age_group' %}
            <g:age_group>
                <![CDATA[{{ s.value }}]]>
            </g:age_group>
            {% elif s.value and s.specification.title|slugify == 'material' %}
            <g:material>
                <![CDATA[{{ s.value }}]]>
            </g:material>
            {% elif s.value and s.specification.title|slugify == 'pattern' %}
            <g:pattern>
                <![CDATA[{{ s.value }}]]>
            </g:pattern>
            {% elif s.value and s.specification.title|slugify == 'is_bundle' %}
            <g:is_bundle>
                <![CDATA[{{ s.value }}]]>
            </g:is_bundle>
            {% elif s.value and s.specification.title|slugify == 'multipack' %}
            <g:multipack>
                <![CDATA[{{ s.value }}]]>
            </g:multipack>
            {% elif s.value and s.specification.title|slugify == 'adult' %}
            <g:adult>
                <![CDATA[{{ s.value }}]]>
            </g:adult>
            {% elif s.value and s.specification.title|slugify == 'tamanho' %}
            <g:size>
                <![CDATA[{{ s.value }}]]>
            </g:size>
            {% endif %}
            {% endfor %}
        </item>
        {% endif %}
        {% endfor %}
    </channel>
</rss>{% endspaceless %}
{% load shop_tags i18n l10n %}{% spaceless %}
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
    <channel>
        <title>
            <![CDATA[{{ shop_settings.SEO_TITLE }}]]>
        </title>
        <link>
            <![CDATA[ {{ shop_settings.URL_EMAIL }} ]]> 
        </link>
        <description>
            <![CDATA[{{ shop_settings.SEO_DESCRIPTION }}]]>
        </description>
        {% for object in object_list|dictsortreversed:"product_id" %}
        {% if object.sku.product.category and object.sku.product.images.exists %}
      	{% if not "chemical" in object.sku.modals %}
        {% get_data_json object.sku.product.specifications as json_specifications %}
        <item>
            <g:id>
                <![CDATA[{{ object.sku.reference_code }}]]>
            </g:id>
            <title>
                <![CDATA[{{ object.product_name }}]]>
            </title>
            <description>{% if object.product_detail %}
                <![CDATA[{{ object.product_detail|safe }}]]>{% else %}
                <![CDATA[{{ object.product_name|title }}]]>{% endif %}
            </description>
            <g:product_type>
                <![CDATA[{% if object.sku.product.category %}{{ object.sku.product.category.get_root.title }} > {{ object.sku.product.category.parent.title }} > {{ object.sku.product.category.title }}{% else %}Sem categoria{% endif %}]]>
            </g:product_type>
            {% localize off %}
            <link>
                <![CDATA[https://www.URL_DA_LOJA.com.br{{ object.sku.product.get_absolute_url }}{% if object.sku.product.is_variation %}/{{ object.sku.id }}/{% endif %}]]>
            </link>{% endlocalize %}
            <g:image_link>{{ object.product_image }}
            </g:image_link>
            <g:condition>new
            </g:condition>
            <g:availability>{% if object.sku.has_stock and object.sku_available %}
                <![CDATA[in stock]]>{% else %}
                <![CDATA[out of stock]]>{% endif %}
            </g:availability>
            {% if object.category_global_code %}
            <g:google_product_category>{{ object.category_global_code }}
            </g:google_product_category>
            {% endif %}
            <g:price>{{ object.sku_unit_price }} BRL
            </g:price>
            <g:sale_price>{{ object.sku_price }} BRL
            </g:sale_price>
            {% if object.sku.ean_13 %}
            <g:gtin >
                <![CDATA[{{ object.sku.ean_13 }}]]>
            </g:gtin>
            {% endif %}
            <g:brand>{{ object.product_brand_name }}
            </g:brand>
            <g:mpn>
                <![CDATA[{{ object.sku.reference_code }}]]>
            </g:mpn>
            <g:identifier_exists>no
            </g:identifier_exists>
            <g:online_only>y
            </g:online_only>
            <g:installment>
                <g:months>{{ object.sku_price|get_min_installments }}
                </g:months>
                <g:amount>{{ object.sku_price|get_card_price }} BRL
                </g:amount>
            </g:installment>
            {% for s in object.sku.product.property_values.all %}
            {% if s.value and s.specification.title|slugify == 'cor' %}
            <g:color>
                <![CDATA[{{ s.value }}]]>
            </g:color>
            {% elif s.value and s.specification.title|slugify == 'gender' %}
            <g:gender>
                <![CDATA[{{ s.value }}]]>
            </g:gender>
            {% elif s.value and s.specification.title|slugify == 'age_group' %}
            <g:age_group>
                <![CDATA[{{ s.value }}]]>
            </g:age_group>
            {% elif s.value and s.specification.title|slugify == 'material' %}
            <g:material>
                <![CDATA[{{ s.value }}]]>
            </g:material>
            {% elif s.value and s.specification.title|slugify == 'pattern' %}
            <g:pattern>
                <![CDATA[{{ s.value }}]]>
            </g:pattern>
            {% elif s.value and s.specification.title|slugify == 'is_bundle' %}
            <g:is_bundle>
                <![CDATA[{{ s.value }}]]>
            </g:is_bundle>
            {% elif s.value and s.specification.title|slugify == 'multipack' %}
            <g:multipack>
                <![CDATA[{{ s.value }}]]>
            </g:multipack>
            {% elif s.value and s.specification.title|slugify == 'adult' %}
            <g:adult>
                <![CDATA[{{ s.value }}]]>
            </g:adult>
            {% elif s.value and s.specification.title|slugify == 'tamanho' %}
            <g:size>
                <![CDATA[{{ s.value }}]]>
            </g:size>
            {% endif %}
            {% endfor %}
        </item>
      	{% endif %}
        {% endif %}
        {% endfor %}
    </channel>
</rss>{% endspaceless %}

Em seguida, clique em Salvar e Continuar Editando.

Após salvar, será gerado o XML. Para visualizar o XML e copiar o link, clique no botão "Ver no Site".

Caso for utilizar o valor do PIX troque pelo código abaixo

{% payment_price object.sku.price "pix" as pix_discount %}
<g:price>{{ object.sku_unit_price }} BRL</g:price>
<g:sale_price>{{ pix_discount.value }} BRL</g:sale_price>

📘

Especificação dos dados do produto

Link de ajuda: https://support.google.com/merchants/answer/7052112

Campos utilizados no arquivo XML

age_group [idade]:
Use o atributo age_group [idade] para definir o grupo demográfico para o qual seu produto é direcionado.

Você pode escolher os seguintes valores aceitos:
newborn [recém-nascido]
Até três meses de idade. Tamanhos para recém-nascidos são muitas vezes identificados pela faixa etária em meses (0 a 3) ou apenas "recém-nascido".
infant [3 a 12 meses]
3 a 12 meses de idade. Tamanhos para bebês são frequentemente indicados pela faixa etária em meses (3 a 12).
toddler [1 a 5 anos]
1 a 5 anos de idade. Tamanhos para crianças são muitas vezes identificados pela faixa etária em meses (12 a 24) ou anos (1 a 5).
kids [infantil]
5 a 13 anos de idade. Todos os tamanhos para essa idade destinam-se a crianças nessa faixa etária.
adult [adulto]
Normalmente adolescentes ou adultos. Todos os tamanhos para esta idade destinam-se a adultos ou adolescentes.

gender [gênero]:
Especifique o gênero para o qual seu produto foi projetado usando o atributo gender [gênero].
male = masculino
female = feminino
unisex = unissex

adult [para_adultos]:
Use o atributo adult [para_adultos] para indicar que produtos individuais são apenas para adultos porque têm conteúdo adulto como nudez e conteúdo com conotação sexual ou visam melhorar a atividade sexual.

Envie yes [sim] ou no [não]. Se um produto individual não for voltado para o público adulto, você não precisará enviar no [não].

is_bundle [é_um_pacote]:
Use o atributo is_bundle [é_um_pacote] para indicar que você criou um pacote, ou seja, um produto principal foi agrupado com outros produtos diferentes, vendidos em conjunto como um pacote por um preço único.
Envie yes [sim] se seu produto for um pacote personalizado de produtos diferentes criado por você e se o pacote inclui um produto principal. Por exemplo, uma câmara combinada com uma lente e uma bolsa.

multipack:
Use o atributo multipack para indicar que você agrupou vários produtos idênticos para venda como um item.
Valores aceitos: Números (dois ou mais)

pattern [estampa]:
Use o atributo pattern [estampa] para descrever a estampa ou o desenho do seu produto.