pavelevap / ceske-sluzby

České služby pro WordPress
56 stars 25 forks source link

XML feedy - podpora variant #19

Open pavelevap opened 8 years ago

pavelevap commented 8 years ago

Pro některé eshopy je důležité generovat do XML i jednotlivé varianty.

novetrendy commented 8 years ago

Ano, varianty jsou určitě důležité. Přikládám ještě kousky kódu, které ve woocommerce často používáme a bylo by super integrovat je do pluginu. Viz níže

novetrendy commented 8 years ago

Kód přesunut: #22

pavelevap commented 8 years ago

Zdrojový kód jsem přesunul do nového požadavku (nesouvisí s podporou variant).

novetrendy commented 8 years ago

Prosím, co můžu udělat pro urychlení variant do feedu.

pavelevap commented 8 years ago

@novetrendy: Získat mi nějaký čas :-) Nebo se do toho pustit sám a pak to mohu jen integrovat...

Nemělo by to být ale nic složitého, zkusím připravit základní verzi na otestování. U každého produktu v hlavním cyklu by se muselo ověřit, zda má nějaké variace a potom by se ve feedu nezobrazoval konkrétní produkt, ale pouze variace. Nebo by se měl zobrazit produkt i variace? To asi spíše logicky ne?

pavelevap commented 8 years ago

Ve feedu heureka jsou varinaty následovně:

 <SHOPITEM>
    <ITEM_ID>325236407</ITEM_ID>
    <PRODUCTNAME>Adidas Superstar 2 W EUR 36</PRODUCTNAME>
    <PRODUCT>Adidas Superstar 2 W EUR 36 - novinka</PRODUCT>
    <DESCRIPTION>V rámci kolekce Originals uvádí adidas sportovní obuv The Superstar, která je již od svého vzniku jedničkou mezi obuví. Jejím poznávacím znamením je mimo jiné detaily designové zakončení špičky. Díky kvalitnímu materiálu a trendy vzhledu, podtrženého logy Adidas uvnitř boty i na ní, bude hvězdou vašeho botníku.</DESCRIPTION>
    <URL>http://www.obchod-s-obuvi.cz/boty/adidas-superstar-2-w7/eur-36/</URL>
    <IMGURL>http://www.obchod-s-obuvi.cz/pictures/403078.jpg</IMGURL>
    <IMGURL_ALTERNATIVE>http://www.obchod-s-obuvi.cz/pictures/403080.jpg</IMGURL_ALTERNATIVE>
    <MANUFACTURER>Adidas</MANUFACTURER>
    <CATEGORYTEXT>Obuv | Dámská obuv</CATEGORYTEXT>
    <EAN>5051571703857</EAN>
    <PRODUCTNO>G43755</PRODUCTNO>
    <PARAM>
      <PARAM_NAME>Velikost</PARAM_NAME>
      <VAL>EUR 36</VAL>
    </PARAM>
    <DELIVERY_DATE>2</DELIVERY_DATE>
    <DELIVERY>
      <DELIVERY_ID>CESKA_POSTA</DELIVERY_ID>
      <DELIVERY_PRICE>120</DELIVERY_PRICE>
    </DELIVERY>
    <ITEMGROUP_ID>ZD563</ITEMGROUP_ID>
  </SHOPITEM>

Kde jsou jednotlivé vlastnosti produktu (použité pro variace) a chápu jako SKU rodičovského produktu, ze kterého jsou variace vytvořeny.

novetrendy commented 8 years ago

Dobrý den, chci se zeptat, jak to vypadá s variantami. Bohužel jsem loop s variantami ještě neřešil, takže nevím kudy kam, abych si to sám doprogramoval.

alesmenzel commented 8 years ago

Taky bych rád viděl variace. Složité to nebude. Zde jsou snippety kódu, který lze použít.

if ($produkt->is_type("variable")){
  foreach($produkt->get_available_variations() as $variation){
    $variation = new WC_Product_Variation($variation['variation_id']);

    /* Zde již lze získat atributy variace */
    $in_stock = $variation->is_in_stock();
    $price_vat = $variation->get_regular_price();
    $url = get_permalink($produkt->id); // tady by se hodilo jako parametr ty varianty (např. **?attribute_pa_barva=červená&attribute_pa_delka=5m**
  }
}

Získání kategorií, separátor by mohl být třeba volitelný z administrace:

$separator = " | ";
        $categories = implode(
            $separator,
            wp_get_object_terms($produkt->id, 
                'product_cat', 
                array('orderby' => 'term_group', 
                    'order' => 'ASC', 
                    'fields' => 'names'
                )
            )
        );

Výrobci:

$separator = ", ";
        $manufacturers = implode(
            $separator,
            wp_get_object_terms($produkt->id, 'brand', array("fields" => "names"))
        );

Potom mám metodu na zapsání jednoho produktu:

function writeXML($xmlWriter, 
        $name,
        $product_no, 
        $id, 
        $description, 
        $category,
        $manufacturers, 
        $url, 
        $img_url, 
        $delivery_date, 
        $price_vat, 
        $ean,
        $item_group_id){

    $xmlWriter->startElement('SHOPITEM' );
        $xmlWriter->writeElement('ITEM_ID', $id);
        $xmlWriter->writeElement('PRODUCTNAME', $name);
        $xmlWriter->startElement('DESCRIPTION');
            $xmlWriter->writeCData($description);
        $xmlWriter->endElement();

        $xmlWriter->writeElement('PRICE_VAT', $price_vat);
        $xmlWriter->writeElement('URL', $url);
        $xmlWriter->writeElement('IMGURL', $img_url);
        $xmlWriter->writeElement('CATEGORYTEXT', $category);
        $xmlWriter->writeElement('MANUFACTURER', $manufacturers);
        $xmlWriter->writeElement('DELIVERY_DATE', $delivery_date);
        if (!empty($ean)) {
            $xmlWriter->writeElement('EAN', $ean );
        }
        if ($item_group_id !== NULL) {
            $xmlWriter->writeElement('ITEMGROUP_ID', $item_group_id);
        }
    $xmlWriter->endElement();
}
pavelevap commented 8 years ago

Tak jsem to na základě uvedených kódů začal konečně implementovat a každá variace bude vlastně speciální položka feedu. A jak to bude třeba s názvem (PRODUCTNAME)? Ten zůstane pro všechny variace stejný nebo mu tam třeba automaticky doplníme hodnotu příslušné vlastnosti?

novetrendy commented 8 years ago

PRODUCTNAME bych vzal title z nadřazeného produktu + vlastnosti varianty. Př: Samolepka Dekor TATRA 576 - Vnitřní - Červená - 17x25cm

pavelevap commented 8 years ago

Je to složitější než jsem si myslel :-(

Zítra zkusím doplnit první verzi na otestování...

pavelevap commented 8 years ago

První pokus: https://github.com/pavelevap/ceske-sluzby/commit/4851661579e5b8b864ff06c3310869f2cbfd074b

Zatím moc netestováno na reálném webu, možná se tam objeví nějaké problémy. Podporovány by měly být vlastnosti (attributes) u jednoduchých produktů, klasické varianty i jejich kombinace. Původně navržené funkce moc nepočítaly s podobně složitým molochem, takže se to bude muset celé přepsat a rozsekat do jednotlivých metod, jinak to nebude dlouhodobě udržitelné :-)

novetrendy commented 8 years ago

Dobrý den, feed pro heureka se nezobrazí vůbec a u zbozi nejsou varianty - je stejný jako předtím. Můžu Vám dát přístupy pro otestování.

pavelevap commented 8 years ago

@novetrendy: Ano, zatím to má na zkoušku pouze Heureka. Objevuje se nějaká chyba? Pošlete prosím přístupy...

novetrendy commented 8 years ago

CHYBA: Neplatná šablona pro RSS zdroj. Přístupy jsem poslal na email.

pavelevap commented 8 years ago

@novetrendy: Mělo by to být opraveno, způsobovalo to velké množství variant. Pokud je na webu mnoho položek (produktů + variant dohromady), tak je třeba používat průběžně generovaný .xml soubor (nově podporován i pro Heureku).

novetrendy commented 8 years ago

Zítra hned vyzkouším a dám vědět!

novetrendy commented 8 years ago

Omlouvám se za zdržení, novou verzi jsem nainstaloval, ještě se soubor generuje, ale podle první části to vypadá SUPER! Moc dobrá práce!

pavelevap commented 8 years ago

@novetrendy: Díky, jak to nakonec dopadlo s vygenerovaným souborem? A co na to Heureka?

novetrendy commented 8 years ago

To bohužel nevím, protože všichni klienti používají jen zbozi.cz Ale podle mě to odpovídá jejich specifikaci. Jakmile to bude fungovat i pro zbozi.cz můžu dát hned vědět.

novetrendy commented 8 years ago

Tak bohužel soubor heureka.xml se nevytvoří, pouze heureka-tmp.xml

pavelevap commented 8 years ago

@novetrendy: Tak to je podivné, už jsem to na jednom webu zkoušel a prošlo to vcelku bez problémů. Mohu poprosit o přístupy? Doplním to po opravě zrovna pro Zbozi.cz.

novetrendy commented 8 years ago

Přístupy jsem Vám již zasílal na email. (10.12. 12:08)

pavelevap commented 8 years ago

@novetrendy: Soubor se nestihl vygenerovat, je tam více než 8000 produktů + variant, takže se musel cron spustit 8-krát (po 3 minutách). A ten web je patrně testovací a nemá žádnou návštěvnost, takže se asi tolikrát nespustil. Jakmile jsem ho navštívil, tak se to automaticky dokončilo.

novetrendy commented 8 years ago

@pavelevap: Ano web je před spuštěním, takže nemá žádnou návštěvnost. Díky za info!

pavelevap commented 8 years ago

Stává se to pouze při prvním spuštění skriptu, potom už bude feed přepisován až v případě, kdy bude zcela hotov (aby se na něj nečekalo). Vše probíhá v souboru heureka-tmp.xml a teprve když je vše hotovo, tak se změní název.

novetrendy commented 8 years ago

Paráda, dobrá práce :+1:

pavelevap commented 8 years ago

Doplnil jsem vlastnosti a varianty pro Zbozi.cz: https://github.com/pavelevap/ceske-sluzby/commit/53bfd7c02de27925e253f958190b6b01fe1b767d

Docela mě překvapilo, že se nový feed pro Zbozi.cz mnohem více podobá Heurece, takže už tam nejsou skoro žádné rozdíly (nebo jsem si jich zatím nevšiml). Celý skript byl původně připravován jen na jednoduché (a odlišné) XML feedy a nyní jsme se už dostali do fáze, kdy to bude potřeba celé přepsat a generalizovat do jednoduchých funkcí nebo se v tom utopíme :-)

Prosím vyzkoušejte (patrně tam budou nějaké chybky, na svých eshopech varianty nepoužívám), bude to asi zase chvíli trvat, pro urychlení je možné deaktivovat a znovu aktivovat XML feed pro Zbozi.cz v nastavení WooCommerce.

novetrendy commented 8 years ago

@pavelevap To jste mi udělal radost! Vyzkouším, dám vědět. BTW:Zkouším přidat CAF do pluginu České služby, ale nějak se mi nedaří. Až budu mít nějaký úspěch, pošlu Vám verzi na otestování, s tím gitem si zatím bohužel nějak moc netykám :-1: Budu si muset najít čas na nastudování.

pavelevap commented 8 years ago

Zkoušel někdo varianty v XML? Jsou s tím nějaké problémy?

dudlaj commented 8 years ago

Dobrý večer pánové,

mám problém, tak se napřed zeptám. Z heuréky se mi vrací u produktů s variantami varování, že se jedná o duplicity a produkty tak nejsou zařazeny do katalogu. Nejsem si jist co dělám špatně. Má být pole SKU vyplněna unikátně pro každou variantu produktu?

Mám verzi 0.5-alpha. Další problém je že se vrací nevyplněná pole EAN. - na záložce nastavení feedu mám v poli EAN zadánu hodnotu SKU. Ve feedu pro zboží jsou v pořádku ale ve feedu pro heuréku mi pole EAN zcela chybí. (zkoušel jsem i přidat pole pro EAN pomocí návodu #22 ale ani tak se mi EAN ve feedu pro heureku nezobrazil.

Děkuji za radu a přeji hezký den

dUDLAJ

pavelevap commented 8 years ago

@dudlaj: Díky za report! Zajímavé, varianty zatím nebyly moc testovány (nebo o tom nevím), takže tam mohou být problémy.

dudlaj commented 8 years ago

Dobrý den,

Zkusím zadat SKU pro jednotlivé varianty produktu. Na začátku jsem to tak měl, ale pak jsem nabyl dojmu, že funguje právě spíše načítání SKU z hlavního produktu. Používám na zmiňovaném webu i doplněk Product Bundels od WooCommerce - jedná se konkrétně o tento web - http://beeranek.cz.

Chyba z emailu s popisem:

Chybový výpis z automatické kontroly pro vašeho programátora:


Přeskočeno 5/24 položek. Důvody: 20.83% - duplicitní produkt

Příklady duplicitních produktů: 7x http://beeranek.cz/shop/beershirts-v-2/ 6x http://beeranek.cz/shop/beershirts-v-1/ 6x http://beeranek.cz/shop/detska-beertricka/ 2x http://beeranek.cz/shop/sklenice-willi-v-2/ 2x http://beeranek.cz/shop/sklenice-praha-v-2/

XML soubor nesmí obsahovat více stejných URL adres.

Popis chyby EAN je tento.

chybí u 100% položek (24/24) EAN kód produktu. Díky EAN kódům dochází k rychlejšímu spárování vašich produktů do katalogu Heureky v případě PPC režimu.

Ale zkusím ještě jednou zadat SKU pro jednotlivé varianty a uvidíme.

Děkuji za rychlou odezvu. Pokud bych mohl být při vývoji jakkoliv nápomocen, pak se rád přidám.

Hezký den

dUDLAJ

pavelevap commented 8 years ago

@dudlaj: Aha, tak tím se to asi trochu vysvětluje :-)

dudlaj commented 8 years ago

Dobrý den,

jsem rád, že máme naprosto opačné problémy a přesto si rozumíme. Publikování asi není problém - BEERANEK je v podstatě můj sport - vymyslel jsem značku, dělám komplet marketing, včetně webu a textů - takže zde můžete posoudit mé možnosti v tomto směru.

EAN upravím odpoledne ... a dám vědět, že je všechno na webu, tak jak má být pro testovaní. Není problém pro Vás vytvořit dočasný přístup, pokud byste si chtěl něco odzkoušet naživo. (udělal jsem zálohy)

Děkuji mnohkrát za reakce i za skvělý plugin - jedna věc o které jsem přemýšlel je, že plugin nemá v repository en popis. Myslím, že by o plugin mohli mít zájem i cizinci, kteří chtějí prodávat v čechách ... Možná bych měl začít en verzí..

Hezký den

dUDLAJ

Borsapv commented 8 years ago

Dobrý den, předem díky za skvělý plugin, jakmile se vyladí, bude to pecka :)

Mám úplně stejný problém s těmi varitantami a duplicitní URL, tak jsem rád, že jsem tady na to narazil.

Jen mi to nějak negeneruje .xml soubor, eshop mi jen napíše, že stránka neexistuje, když se na něj chci koukout. Platí to jak pro heuréku, tak pro zboží. /?feed=zbozi toto se generuje normálně.

Ale zatím se s tím učím, tak třeba dělám něco špatně :)

Mějte se, Marian

pavelevap commented 8 years ago

Zkuste prosím stáhnout novou verzi pluginu, URL adresy by měly být unikátní (https://github.com/pavelevap/ceske-sluzby/commit/32e69546487bf404eef13475e7f228605b5751f1) a ještě můžete použít povedený plugin: https://wordpress.org/plugins/woocommerce-direct-variation-link/ A dejte prosím vědět, co na to Heureka :-)

@dudlaj: Jak to nakonec dopadlo z EAN kódy? Používáte odlišné pro každou variantu? Nebo myslíte, že bychom měli podporovat i verzi, kdy mají všechny varianty stejný EAN?

Spíše než EN verze bude potřeba lépe řešit slovenskou verzi :-) Myslíte, že by Američan měl v obchodě nastavenou angličtinu pro prodej v Česku? Myslel jsem, že dává smysl jen možnost češtiny a slovenštiny, ale rád se nechám přesvědčit.

@Borsapv: Máte feedy povolené v nastavení na záložce "XML feed"? Soubory .xml nejsou generované automaticky, ale musíte je nejdříve ručně povolit. Jakou verzi WooCommerce používáte?

Borsapv commented 8 years ago

Děkuji, už jsem si to narychlo zprovoznil po svém, ale Vaše řešení v kombinaci s doporučeným pluginem je o mnoho lepší. Jen jsem si tam dovolil přidat řádek kódu, aby se odstranily duplicitní varianty z pole. Nevím jak to dělá, ale klientka má čas od času u produktu 2 naprosto identické varianty a tím pádem vznikají opět duplicitní URL pro heureku.

XML feedy jsem povolené měl, ale zřejmě to chvíli trvalo, než se vytvořily. Druhý den už tam byly v pořádku.

dudlaj commented 8 years ago

Dobrý den,

otevřeně přiznávám, že jsem přepsal EAN až dnes (stydím se) - dřív jsem se k tomu nedostal. (instaloval jsem novou verzi - ověření feedu může den trvat - napíšu zítra - prní kontrola říká, že 21 z 24 EAN nemá - ve feed jsou však EAN korektně zobrazeny)

Za mě osobně - podpora "globalního" EAN nadřazeného produktu je zajímavá - především pro eshopy kde nejsou vyplněny EAN pro variace, na kterých by byl plugin doinstalován dodatečně. Jinak to asi úplně smysl nemá - nemám představu kolik by to bylo práce - nastavení by muselo být: použij EAN nadřazeného produktu, pokud není vyplněn EAN u variant - jakékoliv nastavení této možnosti v adminu je samozřejmě zbytečné.

K EN verzi - myslel jsem popis v repository - myšleno tak, že by plugin mohl být užitečný pro někoho, kdo nemluví česky a chtěl by prodávat i zde v Čechách. Nevím do jaké míry jsem schopen pomoci se Slovenštinou, ale můžu to zkusit.

Mám jeden zcela nový dotaz, když jsem zabýval problematikou feedu pro heureku, narazil jsem na jejich řazení do kategorií. Toto plugin vůbec neřeší... Přemýšlel jste o tom?

Hezký den

dUDLAJ

dudlaj commented 8 years ago

Dobrý den,

omluva z mé strany. EAN má mít 13 míst a já omylem zadával 12.

Co se týče řazení do kategorií, upravoval jsem v rámci testování produkty s variantami, kde se vůbec nezobrazuje tab České služby. Na webu používám i product bundles a tam už České služby jsou..

Jinak co se týče kategorii - skvělá práce.. :-)

Všechny duplicity u variant byly odstrarněny.

Hezký den

dUDLAJ

lukasprelovsky commented 8 years ago

Tak testoval jsem to. Nejnovsi verze ceske sluzby + https://wordpress.org/plugins/woocommerce-direct-variation-link/ . V predosli verzii byl problem s duplicitami u variant, ted s pluginem direct variantion link uz duplicity nejsou,ale ve fulltextu heureka se varianty nezobrazuji. TAB české služby se nezobrazuje u variantových produktú , v jiných jo.

pavelevap commented 8 years ago

@lukasprelovsky: A je to problém pluginu nebo nějaké omezení na straně Heureky? Nemusíte mít placený tarif, aby se varianty zobrazovaly? Objevují se tam nějaké chyby při napárování?

Pravda, záložka České služby se zobrazuje pouze u jednoduchých produktů kvůli třídě show_if_simple zde: https://github.com/pavelevap/ceske-sluzby/blob/32e69546487bf404eef13475e7f228605b5751f1/includes/class-ceske-sluzby-product-tab.php#L16 Asi by se měla zobrazovat i u variantních, ale možná tam nemusí obsahovat všechny informace?

lukasprelovsky commented 8 years ago
  1. Varianty v XML feedu neukazuje.
  2. Mam placeny tarif na heurece (nemam jak odtestovat neplaceny tarif) a variabile producty se nezobrazuji ve feedu ani v heurece.
  3. Idealne by se melo i u variantoveho produktu dat nastavit categorytext a nazevproduktu pro XML..
xolik commented 8 years ago

Dobry den, nainstaloval jsem Vas plugin na svuj wordpress, a kdyz mackam na (Zbozi.cz nebo Heureka Generovaný feed je dostupný zde.) tak hned me hlasi chybu (CHYBA: Neplatná šablona pro RSS zdroj.) Pouzivam prosim Vas tuto sablonu http://themeforest.net/item/oxygen-woocommerce-wordpress-theme/7851484

Muzete me prosim poradit jak mam opravit tady tu chybu? Dekuji

pavelevap commented 8 years ago

@lukasprelovsky: Poprosím ještě o přístupy, abych to mohl zkusit dořešit, díky.

@xolik: Odkaz na feed tam není nikde vložen? Obecně by to ale neměla žádná šablona ovlivňovat...

pavelevap commented 8 years ago

@lukasprelovsky: U produktu s variantami lze nově také nastavit všechny potřebné informace: https://github.com/pavelevap/ceske-sluzby/commit/2b9b6f891da74d08529efc86da48a0fdc6bb511a

@dudlaj: Zkusil jsem doplnit podobu globálního EAN, takže pokud je EAN zadán přímo u produktu a u variant (zatím) chybí, tak se u nich ale přesto bude zobrazovat EAN nadřazeného produktu: https://github.com/pavelevap/ceske-sluzby/commit/ba0dbb9a6f13774c7cd2a3e253a6f9173844f75a. Původně jsem si myslel, že je EAN unikátní (nebo musí být), ale není tomu tak, např. barevné či velikostní varianty ho mohou mít stejný. Ale uvidíme, co na to uživatelé :-)

pavelevap commented 8 years ago

Jsou s variantami nějaké zásadní potíže?

dudlaj commented 8 years ago

Dobrý den,

podívám se na jeden z webů, kde mám doplněk nainstalován (aktualizace) a na github na novinky v pluginu a podám report - během zítřka.

Jaroslav Ondra

Dne 1. 9. 2016 v 17:02 pavelevap napsal(a):

Jsou s variantami nějaké zásadní potíže?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pavelevap/ceske-sluzby/issues/19#issuecomment-244107572, or mute the thread https://github.com/notifications/unsubscribe-auth/AIu-NM7bJRyOvCgPjQDH1d40yJ3DcRn0ks5qlukTgaJpZM4GSDMB.

dudlaj commented 8 years ago

Omlouvám se za prodlevu. Včera jsem se dostal k instalaci doplňku na mém nejsložitějším eshopu. Eshop využívá plugin Composite products. Zatím mi Váš plugin složené produkty vůbec do feedu nenačítá, ale ještě se na to dnes podívám. Dnes se dostanu i k jiným systémům kde je plugin instalován - provedu upgrade a podám hlášení. Kdybyste se chtěl podívat do systému, kde jsou instalovány Composite products, tak se nějak domluvíme. Hezký den Jaroslav Ondra

pavelevap commented 8 years ago

@dudlaj: Díky, to by bylo fajn, můžete se případně ozvat. XML feed zatím podporuje jednoduché produkty a varianty, specifické produkty zatím ne. Ale možná by nebylo moc těžké to doplnit, potřeboval bych ale přístupy, protože je plugin placený a nemám k němu přístup.