Prodej brandové domény světové značky Fred Perry
Zobrazují se odpovědi 1 až 10 z 10

WP All Import - problém s kategorií

  1. Zdravím,
    nevím si rady s importem. Mám XMLko a v něm <PRODUCTS>, který namísto názvu kategorie obsahují ID kategorie, která je pak ve stejném XML uvedena v <CATEGORIES>
    Lze to nějak provázat při importu? Tj aby se produkt importoval s názvem kategorie namísto jejího ID?
    Díky.

    Struktura XML takto:

    Kód:
    <?xml version="1.0" encoding="UTF-8"?>
    <ENVELOPE>
    
      <CATEGORIES>
        <CATEGORY>
          <ID>4</ID>
          <PARENTID>0</PARENTID>
          <CATNAMEEGORYID>Název kategorie</CATNAMEEGORYID>
        </CATEGORY>
    </CATEGORIES>
    
      <PRODUCTS>
        <PRODUCT>
          <UID>00021_43</UID>
          <ID>00021</ID>
          <NAME>Jméno produktu</NAME>
          <CATEGORYID>4</CATEGORYID>
          <MANUFACTURER>
          </MANUFACTURER>
          <DESCRIPTION>Popis produktu</DESCRIPTION>
          <AVAILABILITY>0</AVAILABILITY>
          <IMGURL>img_url</IMGURL>
          <PRICE>1</PRICE>
          <DMC>1</DMC>
          <VOC>1</VOC>
          <MARZE>M</MARZE>
          <DPH>21</DPH>
          <EAN>
          </EAN>
        </PRODUCT>
    
      </PRODUCTS>
    </ENVELOPE>
    Udělal bych to podle Category Mapping Tool, ale těch kategorií je 170+ a při každém importu by se to muselo ručně kontrolovat, jestli se nezměmil název kategorie apod.

    Neví někdo, jak to zautomatizovat?

  2. Co se právě děje na Webtrhu?
  3. pres php funkci by to neslo?

  4. Šlo, ale neumím jí poskládat.

  5. muzu se na to zkusit mrknout

  6. Díky. Rád zaplatím za řešení, které bude fungoval. Už to zkoušeli 3 lidi a zatím nikdo nevěděl pořádně.

  7. Toto můžeš udělat přes XSLT

  8. Neumím.

  9. Zkus toto:

    -- START XSL wladas.xsl --

    PHP kód:
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="xml" indent="yes" encoding="UTF-8" />
        <xsl:decimal-format name="number-float" decimal-separator="." grouping-separator="" />
        
        <xsl:template match="//ENVELOPE">
            <ENVELOPE>
                <PRODUCTS>
                    <xsl:apply-templates select="PRODUCTS" />
                </PRODUCTS>
            </ENVELOPE>
        </xsl:template>
        
        <xsl:template match="PRODUCT">
            <xsl:for-each select=".">
                <xsl:variable name="cat" select="CATEGORYID/text()" />
                <PRODUCT>
                    <UID><xsl:value-of select="normalize-space(UID)"/></UID>
                    <ID><xsl:value-of select="normalize-space(ID)"/></ID>
                    <NAME><xsl:value-of select="normalize-space(NAME)"/></NAME>
                    <CATEGORYID><xsl:value-of select="normalize-space(CATEGORYID)"/></CATEGORYID>
                    <CATEGORYNAME>
                        <xsl:value-of select="//ENVELOPE/CATEGORIES/CATEGORY[ID/text() = $cat]/CATEGORYNAME" />
                    </CATEGORYNAME>
                    <MANUFACTURER><xsl:value-of select="normalize-space(MANUFACTURER)"/></MANUFACTURER>
                    <DESCRIPTION><xsl:value-of select="normalize-space(DESCRIPTION)"/></DESCRIPTION>
                    <AVAILABILITY><xsl:value-of select="normalize-space(AVAILABILITY)"/></AVAILABILITY>
                    <IMGURL><xsl:value-of select="normalize-space(IMGURL)"/></IMGURL>
                    <PRICE><xsl:value-of select="format-number( translate(PRICE, ',', '.'), '#########.00', 'number-float')"/></PRICE>
                    <DMC><xsl:value-of select="normalize-space(DMC)"/></DMC>
                    <VOC><xsl:value-of select="normalize-space(VOC)"/></VOC>
                    <MARZE><xsl:value-of select="normalize-space(MARZE)"/></MARZE>
                    <DPH><xsl:value-of select="format-number( translate(DPH, ',', '.'), '#########.00', 'number-float')" /></DPH>
                    <EAN><xsl:value-of select="normalize-space(EAN)"/></EAN>
                </PRODUCT>
            </xsl:for-each>                
        </xsl:template>
        
    </xsl:stylesheet>
    -- END XSL wladas.xsl --

    PHP kód:
    //nacteme obsah XML
    $xmlData file_get_contents(dirname(__FILE__).'/wladas.xml');

    //nacteme XSL sablonu
    $xslData file_get_contents(dirname(__FILE__).'/wladas.xsl');

    //vytvoreni xml domdokumentu
    $xml = new DOMDocument;
    $xml->preserveWhiteSpace false;
    $xml->formatOutput true;
    $xml->substituteEntities false;
    $xml->strictErrorChecking false;

    //nacteni xml dat do dokumentu
    $xml->loadXML($xmlData);

    //vytvoreni xsl domdocumentu
    $xsl = new DOMDocument;
    $xsl->preserveWhiteSpace true;
    $xsl->formatOutput true;
    $xsl->substituteEntities false;
    $xsl->strictErrorChecking false;

    //nacteni xsl dat do dokumentu
    $xsl->loadXML($xslData);

    //transformace vstupniho xml podle xsl sablony
    $proc = new XSLTProcessor;
    $proc->importStyleSheet($xsl);

    //provedeni trannsformace
    $output $proc->transformToXML($xml);

    //odesleme vystup
    header("Content-Type: application/xml; charset=UTF-8");
    print(
    $output); 
    -- INPUT XML --

    PHP kód:
    <?xml version="1.0" encoding="UTF-8"?>
    <ENVELOPE>
      <CATEGORIES>
        <CATEGORY>
          <ID>2</ID>
          <PARENTID>0</PARENTID>
          <CATEGORYNAME>Název 2. kategorie</CATEGORYNAME>
        </CATEGORY>
        <CATEGORY>
          <ID>4</ID>
          <PARENTID>0</PARENTID>
          <CATEGORYNAME>Název 4. kategorie</CATEGORYNAME>
        </CATEGORY>
    </CATEGORIES>
      <PRODUCTS>
        <PRODUCT>
          <UID>00021_43</UID>
          <ID>00021</ID>
          <NAME>Jméno 1. produktu</NAME>
          <CATEGORYID>2</CATEGORYID>
          <MANUFACTURER></MANUFACTURER>
          <DESCRIPTION>Popis 1. produktu</DESCRIPTION>
          <AVAILABILITY>0</AVAILABILITY>
          <IMGURL>img_url</IMGURL>
          <PRICE>1</PRICE>
          <DMC>1</DMC>
          <VOC>1</VOC>
          <MARZE>M</MARZE>
          <DPH>21</DPH>
          <EAN></EAN>
        </PRODUCT>
        <PRODUCT>
          <UID>00020_22</UID>
          <ID>00020</ID>
          <NAME>Jméno 2. produktu</NAME>
          <CATEGORYID>4</CATEGORYID>
          <MANUFACTURER></MANUFACTURER>
          <DESCRIPTION>Popis 2. produktu</DESCRIPTION>
          <AVAILABILITY>0</AVAILABILITY>
          <IMGURL>img_url</IMGURL>
          <PRICE>1</PRICE>
          <DMC>1</DMC>
          <VOC>1</VOC>
          <MARZE>M</MARZE>
          <DPH>21</DPH>
          <EAN></EAN>
        </PRODUCT>
      </PRODUCTS>
    </ENVELOPE>
    -- OUTPUT XML --

    PHP kód:
    <ENVELOPE>
        <
    PRODUCTS>
            <
    PRODUCT>
                <
    UID>00021_43</UID>
                <
    ID>00021</ID>
                <
    NAME>Jméno 1. produktu</NAME>
                <
    CATEGORYID>2</CATEGORYID>
                <
    CATEGORYNAME>Název 2. kategorie</CATEGORYNAME>
                <
    MANUFACTURER/>
                <
    DESCRIPTION>Popis 1. produktu</DESCRIPTION>
                <
    AVAILABILITY>0</AVAILABILITY>
                <
    IMGURL>img_url</IMGURL>
                <
    PRICE>1</PRICE>
                <
    DMC>1</DMC>
                <
    VOC>1</VOC>
                <
    MARZE>M</MARZE>
                <
    DPH>21.00</DPH>
                <
    EAN/>
            </
    PRODUCT>
            <
    PRODUCT>
                <
    UID>00020_22</UID>
                <
    ID>00020</ID>
                <
    NAME>Jméno 2. produktu</NAME>
                <
    CATEGORYID>4</CATEGORYID>
                <
    CATEGORYNAME>Název 4. kategorie</CATEGORYNAME>
                <
    MANUFACTURER/>
                <
    DESCRIPTION>Popis 2. produktu</DESCRIPTION>
                <
    AVAILABILITY>0</AVAILABILITY>
                <
    IMGURL>img_url</IMGURL>
                <
    PRICE>1</PRICE>
                <
    DMC>1</DMC>
                <
    VOC>1</VOC>
                <
    MARZE>M</MARZE>
                <
    DPH>21.00</DPH>
                <
    EAN/>
            </
    PRODUCT>
        </
    PRODUCTS>
    </
    ENVELOPE

  10. Testnu díky

  11. Ještě k cenám. VOC asi bude velkoobchodní cena, která se v tom XSL zpracovává jako text, tak jestli budeš chtít místo textu formátované číslo, tak tam vyměň:

    PHP kód:

    Toto nahraď
    :
    <
    xsl:value-of select="normalize-space(VOC)"/>

    Tímto:
    <
    xsl:value-of select="format-number( translate(VOC, ',', '.'), '#########.00', 'number-float')" /> 

Spolupracujeme: Jooble.org, Aximum - profesionální překlady Hostujeme u Server powered by TELE3