- [Case Studies](/kategorie/case-studies)
- [E‑commerce tipy](/kategorie/e-commerce-tipy)
- [E‑shopová řešení a platformy](/kategorie/e-shopova-reseni-a-platformy)
- [Mergado Pack](/kategorie/mergado-pack)
- [Mergado tipy](/kategorie/mergado-tipy)
- [Novinky v Mergadu](/kategorie/novinky-v-mergadu)
- [Novinky ze srovnávačů](/kategorie/novinky-ze-srovnavacu)
- [Pracujeme s Mergadem](/kategorie/pracujeme-s-mergadem)
- [Rozhovory](/kategorie/rozhovory)
- [Rozšíření](/kategorie/aplikace)
- [S Mergadem do zahraničí](/kategorie/s-mergadem-do-zahranici)
- [Ze života Mergada](/kategorie/ze-zivota-mergada)
 



 

 1. [  Úvod  ](/)
2. [     Blog  ](/blog)
3. [     Pracujeme s Mergadem  ](/kategorie/pracujeme-s-mergadem)
4. <a class="flex items-center gap-2 hover:underline" href="" itemid="" itemprop="item" itemscope="" itemtype="https://schema.org/Thing">    **Jak upravit Shoptet feed na validní formát** </a>
 
  

 

#  **Jak upravit Shoptet feed na validní formát** 

 

 

 [    ![](https://www.mergado.cz/sites/default/files/perm/user-avatar/23021961102131189073595481259913287n.jpg)   Lukáš Horák  ](/blog/lukas-horak) [Pracujeme s Mergadem](/kategorie/pracujeme-s-mergadem) 

4. 7. 2018

3 minuty čtení

 

 

 

 

 

  ![Jak upravit Shoptet feed na validní formát](https://www.mergado.cz/sites/default/files/field/image/shoptet-cz.png)  

Mají vaši klienti pronajato e‑shopové řešení od Shoptetu? Možná jste se už při správě jejich inzerce dostali do situace, kdy Shoptet validátor hlásil že je váš Shoptet feed na výstupu z Mergada nevalidní. Dnešním návodem tento problém v Mergadu vyřešíme jednou provždy.



 

 

 
                function tableOfContents() {
                  return {
                    headings_menu: [],
                    heading_active: '', // Added to track the active section
                    shouldBeSticky: false,

                    generateToC() {
                      const headings = document.querySelectorAll('.js-article-full-headings h2, .js-article-full-headings h3');
                      let headingMap = {};

                      headings.forEach((heading) => { // Use an arrow function to maintain `this` context
                        // Normalize heading text to remove diacritics, then replace non-alphanumeric characters with dashes
                        var normalizedText = heading.textContent.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); // Remove diacritics
                        var id = heading.id ? heading.id : normalizedText.trim().toLowerCase()
                          .split(' ').join('-').replace(/[^a-z0-9\-]/ig, ''); // Updated regex to replace non-alphanumeric characters
                        headingMap[id] = headingMap[id] !== undefined ? ++headingMap[id] : 0;

                        // Use the updated `id` with diacritics removed for the heading id and the TOC
                        const finalId = headingMap[id] ? `${id}-${headingMap[id]}` : id;
                        this.headings_menu.push({
                          id: finalId,
                          title: heading.textContent,
                          level: heading.tagName.toLowerCase(), // Track heading level
                          active: false, // Initially set active to false
                        });
                        heading.id = finalId;
                      });
                    },

                    checkStickyNeeded() {
                      const ul = this.$el.querySelector('ul');
                      if (ul) {
                        this.shouldBeSticky = ul.scrollHeight < window.innerHeight;
                      }
                    },

                    setActiveHeading() {
                      // disabled not working with active state on click
                      // add @scroll.window="setActiveHeading()" to the parent div

                      // const headings = document.querySelectorAll('.js-article-full-headings h2');
                      // let activeHeading = '';
                      // let closestHeadingDistance = Infinity;

                      // headings.forEach((heading) => {
                      //   const rect = heading.getBoundingClientRect();
                      //   const offset = rect.top - window.innerHeight / 2; // Consider heading in the middle of the screen as active

                      //   if (offset < 0 && Math.abs(offset) < closestHeadingDistance) {
                      //     activeHeading = heading.id;
                      //     closestHeadingDistance = Math.abs(offset);
                      //   }
                      // });

                      // // Update the active state in headings_menu
                      // if (activeHeading !== this.heading_active) {
                      //   this.headings_menu = this.headings_menu.map(item => ({
                      //     ...item,
                      //     active: item.id === activeHeading,
                      //   }));
                      //   this.heading_active = activeHeading;

                      // }
                    },

                    setActiveItem(clickedId) {
                      this.headings_menu.forEach(item => {
                        item.active = (item.id === clickedId);
                      });
                      this.heading_active = clickedId; // Optionally update the heading_active property if used
                    },
                  };
                }
               1. <a :class="{ 'border-r-[3px] border-secondary': item.active, 'text-sm': item.level === 'h3' }" :href="'#' + item.id" class="inline-block text-balance hover:underline p-0.5 pr-3">  — </a>
  



 

Mají vaši klienti pronajato e‑shopové řešení od [Shoptetu](https://www.shoptet.cz/)? Možná jste se už při správě jejich inzerce dostali do situace, kdy Shoptet validátor hlásil že je váš **Shoptet feed** na výstupu z Mergada **nevalidní**. Dnešním návodem tento problém v Mergadu **vyřešíme** jednou provždy.

## Shoptet

Shoptet je **společnost pronajímající e‑shopová řešení**. V současnosti na této platformě podniká **více než 13,5 tisíce e‑shopů** na českém a slovenském trhu. Umožňuje jednoduchou administraci, obsahuje velké množství funkcí. Shoptetem poskytovaný pokladní systém umožňuje prodej přes internet i přes kamenný obchod **v rámci jednoho on-line systému**.

## Shoptet validátor

Shoptet vyžaduje, aby feedy na něj napojených řešení měly **jednotnou** **strukturu**. Shoptet validátor tedy slouží **pro** **kontrolu**, jestli feed vyhovuje podmínkám, a je tak **možné ho napojit** do e‑shopu provozovaném na Shoptet platformě.

Validace probíhá pomocí formuláře umístěném [na stránce validátoru](https://help.shoptet.cz/topic/xml-validace/).

**Zde:**

1. Nejdříve **vyberete**, o jaký **typ** **feedu** (specifikace dle Shoptet formátu či Heureky) se jedná.
2. Poté sem **nahrajete** buďto **XML soubor uložený na disku**, nebo **vložíte** **URL** **adresu** **feedu**.



 

 [  ![](https://www.mergado.cz/sites/default/files/perm/paragraph-image/validator-obr1.png)  ](https://www.mergado.cz/sites/default/files/perm/paragraph-image/validator-obr1.png) 

## Jak v Mergadu postupovat, pokud validátor Shoptetu hlásí, že feed není validní

Pokud byl feed detekovaný jako nevalidní, **nepůjde do e‑shopu** běžícím na Shoptetu **nahrát**. Je tedy **potřeba** ho **upravit**. Nejčastější komplikace bývá v tom, že výstupní feed obsahuje [elementy](https://www.mergado.cz/tema/elementy), **které Shoptet nepovoluje**. V Mergadu můžete tyto elementy **vypnout, či převést hodnoty** z elementů, které Shoptet nezná, do těch, které zná.

## Vypnutí elementu

Vypnutí elementu pro výstup v Mergadu snadno nastavíte na stránce Elementy.

**Stačí:**

1. **Vyhledat** element, který potřebujete vypnout.
2. **Skrýt** element pomocí ikonky “oka” na pravé straně.
3. Následně **přegenerovat** feed (na stránce Nastavení → Přegenerování tlačítkem “Přegenerovat vše”).
4. Po doběhnutí přegenerování **opět** **použít** **validátor** Shoptetu a zjistit, jestli vám hlásí něco dalšího.



 

 [  ![](https://www.mergado.cz/sites/default/files/perm/paragraph-image/validator-obr2.png)  ](https://www.mergado.cz/sites/default/files/perm/paragraph-image/validator-obr2.png) 

Takto krok po kroku můžete pomocí Mergada **feed vyladit na plně validní**. Specifikaci, jak má struktura feedů podle Shoptetu vypadat, najdete v odkazech níže [na webu validátoru](https://help.shoptet.cz/topic/xml-validace/).

## Převedení hodnot elementů

Dalším řešením problémů s validací feedů je **převedení hodnot** ze vstupních elementů **na takové** názvy elementů, **které Shoptet zná**.

**Jak na to:**

1. Pomocí [pravidla](https://www.mergado.cz/tema/pravidla-v-mergadu) typu “Přepsat” **přidejte pravidla**, která vám data převedou do elementů, které Shoptet používá. Přehled Shoptet elementů najdete v tabulce [na této stránce](https://help.shoptet.cz/topic/xml-feedy/).
2. Po přidání pravidel opět **nezapomeňte přegenerovat** feed na stránce Nastavení → Přegenerování (tlačítko “Přegenerovat vše”).



 

Validátor Shoptetu zobrazuje **vždy jen prvních 50 chyb**. Je tedy zapotřebí [feed v Mergadu](https://www.mergado.cz/tema/xml-feed) upravovat **postupně** a validaci provádět **opakovaně**, ať se vám po vyřešení aktuálních chyb zobrazí ty následující.

 

 

 

 

 

Máte dotazy ohledně validace feedu? Jak na [elementy](https://info.mergado.cz/Pruvodce/elementy.html) a na [pravidla](https://info.mergado.cz/Pruvodce/7.Pravidla.html) vám poví naše nápověda. Potřebujete pomoct? [Zavolejte](https://www.mergado.cz/kontakt) nám, nebo nám [napište na podporu](mailto:mergado@mergado.cz).

### **Mohlo by vás zajímat:**



 

 [    ![](https://www.mergado.cz/sites/default/files/perm/image/optimalizace_dat_pro_gptshopping.jpg)  

### Jak připravit produktová data tak, aby dávala smysl pro GPT Shopping?

 

 ](/blog/optimalizace-dat-pro-gpt-shopping) 

 [    ![](https://www.mergado.cz/sites/default/files/perm/image/mf26_clanek.jpg)  

### Zahajte festivalovou sezónu nadupanou konferencí Mergado Fest

 

 ](/blog/zahajte-festivalovou-sezonu-na-mergado-festu) 

 [    ![](https://www.mergado.cz/sites/default/files/perm/image/uawc_cs_cz.jpg)  

### Jak optimalizace feedu zvýšila výkon Meta Ads bez navýšení rozpočtu

 

 ](/blog/optimalizace-feedu-pro-Meta-Ads) 

 

 

- [  Tipy pro práci s Mergadem ](/tema/tipy-pro-praci-s-mergadem)
- [  Elementy ](/tema/elementy)
- [  Shoptet ](/tema/shoptet)
 
 [    ![](https://www.mergado.cz/sites/default/files/perm/user-avatar/23021961102131189073595481259913287n.jpg)  ](/blog/lukas-horak)###  [ Lukáš Horák ](/blog/lukas-horak) 

Lukáš se v Mergadu stará o většinu komunikace v češtině. Prostřednictvím blogu, e‑mailu a sociálních sítí pravidelně zásobuje čtenáře aktualitami z e‑commerce a novinkami a tipy z Mergada. Pokud zrovna není copywriterem, užívá si prosté věci jako badminton, výlety mezi utajené skvosty osmdesátkové hudby a plody moře podávané s červeným vínem.

 

 

 

 

 

 

 

 

 

## Mohlo by vás *zajímat*

 

 [    ![](https://www.mergado.cz/sites/default/files/perm/image/heureka_google_rec.jpg)  

### Heureka recenze do Google recenzí: nový postup krok za krokem

 

 ](/blog/heureka-recenze-do-google-recenzi) 

 [    ![](https://www.mergado.cz/sites/default/files/perm/image/shoptet-shopify-prevod.jpg)  

### Jak jsme s Mergadem převedli e‑shop ze Shoptetu na Shopify: kompletní migrace bez ztráty dat

 

 ](/blog/jak-jsme-s-mergadem-prevedli-e-shop-ze-shoptetu-na-shopify-kompletni-migrace-bez-ztraty-dat) 

 [    ![nastavení agenturních účtů](https://www.mergado.cz/sites/default/files/perm/image/new-nahladovka-na-blog-1200-x-628-px-37.png)  

### Jak nastavovat uživatelské účty agenturních pracovníků v Mergadu

 

 ](/blog/opravneni-uzivatelskych-uctu-pro-agentury) 

 

 

 

## Ať vám *nic neunikne*

 Přihlašte se do našeho newsletteru 

   

       

   Přihlášením souhlasíte, že vaše údaje zpracujeme v souladu s podmínkami o [ochraně osobních údajů](/prohlaseni-o-cookies). 

  Děkujeme, úspěšně jste se připojili k našemu seznamu odběratelů. 

 

 

 
      function ml_webform_success_5807248() {
        var r = ml_jQuery || jQuery
        r('.ml-subscribe-form-5807248 .row-success').show(), r('.ml-subscribe-form-5807248 .row-form').hide()
      }