- [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. [     Novinky v Mergadu  ](/kategorie/novinky-v-mergadu)
4. <a class="flex items-center gap-2 hover:underline" href="" itemid="" itemprop="item" itemscope="" itemtype="https://schema.org/Thing">    **Custom formát: Nahrajte do Mergada jakýkoliv feed** </a>
 
  

 

#  **Custom formát: Nahrajte do Mergada jakýkoliv feed** 

 

 

 [  Pavel Rusinský  ](/blog/pavel-rusinsky) [Novinky v Mergadu](/kategorie/novinky-v-mergadu) 

26. 4. 2018

3 minuty čtení

 

 

 

 

 

  ![Custom formát: Nahrajte do Mergada jakýkoliv feed](https://www.mergado.cz/sites/default/files/field/image/customformat-cz.png)  

V nové verzi Mergada přinášíme novou funkci, kterou jsme nazvali Custom formát. Hezky česky bychom ho mohli pojmenovat jako univerzální/​uživatelský formát. Umožní vám nahrát do Mergada libovolný XML nebo CSV feed, a pak s ním pracovat.



 

 

 
                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>
  



 

V nové verzi Mergada přinášíme **novou funkci**, kterou jsme nazvali Custom formát. Hezky česky bychom ho mohli pojmenovat jako **univerzální/​uživatelský formát**. Umožní vám nahrát do Mergada libovolný XML nebo CSV feed, a pak s ním pracovat.

### Proč Custom formát?

Aktuálně bylo nutné nové specifikace formátů implementovat našimi vývojáři. To je určitě lepší, protože vše kontrolujeme, a tak ručíme za správnost. Nicméně to nějakou chvíli trvá. Na vývoji musíme řešit priority, udělat průzkum využitelnosti atd. A proto zavedení nových formátů zabírá více času. Tak jsme si řekli, že **nabídneme i další možnost**.

Doteď bylo možné v Mergadu pracovat pouze s feedy, které měly námi nachystanou specifikaci. Více jak 200 formátů není málo, přesto se pořád objevují nové, které v Mergadu neznáme. Například ze zahraničních srovnávačů zboží, dodavatelských feedů nebo speciálních feedů e‑shopových řešení.



 

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

### Jak na to?

1.) Při vytváření nového exportu klikněte na nové tlačítko **„Ručně nastavit zdrojový formát“**.

2.) Nyní jste na stránce, kde si **„namapujete“ elementy** z vašeho vstupního (pro Mergado neznámého) feedu na Mergado. Abyste pochopili, proč je tento krok trochu složitější, pokusili jsme se ho lehce popsat.

### *Proč tak složitě?*

*Uvnitř Mergada je tzv. **Univerzální převodník** (neplést s formátem, o kterém je tento článek). Ten nám pomáhá převádět z jednoho formátu na druhý. Je to takový obrovský slovník, který umí **všech těch 200 specifikací**, které aktuálně v Mergadu jsou. Bez toho by to nešlo, protože s ním pracuje celá aplikace.*

*Na Univerzální převodník je tedy nutné namapovat elementy vašeho vstupního feedu. Mergado si to mapování **uloží**, a pak s tím může **pracovat jako s jakýmkoliv jiným feedem**. (Rozdíly tam jsou, ale jen z vývojářského hlediska.) Aby to bylo co nejlépe pochopitelné, vycházíme z naší vlastní specifikace Mergado product XML, ke které jsme vytvořili hezké a pochopitelné [popisky](https://www.mergado.cz/sites/default/files/users/documents/shopsystems/mergado-product-xml-1-4.pdf).*

*Kdyby tento krok neexistoval, nemůžeme feed správně namapovat na Mergado a nemusely by nad ním fungovat Pravidla a všechny další důležité věci.*

### *Co je co?*

*V levém sloupci jsou všechny unikátní **elementy ze vstupního feedu**. Jsou uspořádané ve stromové struktuře přesně tak, jak je Mergado stáhlo.*

*V pravém sloupci říkáte Mergadu, co je co, viz. „Proč tak složitě“. Vlastně tím učíte Mergado **nový, soukromý překladač/​slovník/​převodník**.*

### *Proč jsou některé elementy povinné?*

*Protože bez nich **nemůžeme** v Mergadu **pracovat**. Element CHANNEL (XML root) je nutný z pohledu validity celého XML. A ITEM (Položka e‑shopu) je nutná, aby Mergado umělo jednotlivé položky od sebe oddělit.*



 

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

3.) Pojmenujte nový feed

4.) Klikněte na **Uložit**. To vás přesměruje zpátky na známou stránku, kde určujete vstupní a výstupní feed. Na vstupu budete mít nastavený vámi nastavený a pojmenovaný feed. A na výstupu si klasicky **zvolíte formát podle potřeby**.



 

Pokud chcete „mapování“ vstupního feedu upravit, najdete tuto možnost v Nastavení exportu **pod záložkou Vlastní formát**.

 

 

 

 

 

A to je ke Custom formátu všechno. Doufáme, že vám pomůže v práci s nestandardními feedy. Samozřejmě budeme rádi za jakoukoliv zpětnou vazbu. Pište nám na [fórum](https://forum.mergado.cz/) nebo na [support](http://mergado@mergado.cz).



 

- [  Custom formát ](/tema/custom-format)
 
###  [ Pavel Rusinský ](/blog/pavel-rusinsky) 

Podívejte se na další články externího specialisty Pavla Rusinského

 

 

 

 

 

 

 

 

 

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

 

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

### ChatGPT Shopping: Budoucnost nakupování je tady

 

 ](/blog/chatgpt-shopping-budoucnost-nakupovani-je-tady) 

 [    ![](https://www.mergado.cz/sites/default/files/perm/image/mergado-research-group.png)  

### Prosaďte své tipy na vylepšení MERGADA. Odteď nám můžete mluvit do práce v rámci Research Group

 

 ](/blog/mergado-research-group) 

 [    ![](https://www.mergado.cz/sites/default/files/perm/image/cesta-k-elementu-mergado2.png)  

### Mergado 2 má nový nástroj. Vyzkoušíte s ním cestu k elementu nanečisto 

 

 ](/blog/mergado-2-cesta-k-elementu-nanecisto) 

 

 

 

## 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()
      }