Jump to content

XML FEED - krok za krokem


kubik104

Recommended Posts

ahoj,

procetl jsem toho hodne ale furt to nechapu :D dokazete mi nekdo prosim poradit, krok po kroku, jak vlozit xml feed na např. zbozi.cz?

jedna se mi o tyto kroky:

1) nejaky script
2) kam ho vlozit na server? co s nim delat? (je to php a vsude chcou xml)
3) kde zjistim tedy url feedu, kterou vlozim sem: http://zbozi.cz/addPremiseScreen

dela se neco v BO? asi jsem slepej, ale nikde jsem to nezjistil :D

diky moc nejake dobre dusi, co mi popise krok po kroku, co kam nahrat, co spustit, co vygenerovat a kde to vygenerovat, a co kam vlozit :)

děkuji moc (precizni prace usetri hodne podobnych temat :) )

EDIT:

nejake tipy a triky? :) treba nejaky prefix pred nazev zbozi atd? :)

Link to comment
Share on other sites

Ahoj...

1) Vytvořit si soubor .php a vložit to něj následující:

<?php
$shopUrl = 'http://www.presta.bazarhudebnin.cz';      // adresa shopu včetně http://
include(dirname(__FILE__).'/config/config.inc.php'); // cesta ke config souboru
include(dirname(__FILE__).'/init.php');
error_reporting(0);
$p=Product::getProducts(3, 0, 0, 'id_product', 'desc', false); // ceština je v databázi zapsaná pod číslem 3
$products=Product::getProductsProperties(3, $p); // ceština je v databázi zapsaná pod číslem 3

header("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="utf-8"?>
';
foreach ($products as $row) {
$img=Product::getCover($row['id_product']);
echo '

'.str_replace("&", "&", $row['name']).'
'.str_replace("&", "&",strip_tags($row['description_short'])).'
'.$row['link'].'
'.$shopUrl.'/img/p/'.$row['id_product'].'-'.$img['id_image'].'.jpg
'.($row['price']*1).'
0
';
}
echo '';
?>



2) uložit do rootu složky s Prestou

3) Url feedu bude:

http://www.tvojedomena.cz/nazevtvyhosouboru.php

a to budeš zadávat při registraci feedu na zbozi.cz.


Tipy, triky

Nainstalovat a spustit SEO (nastavit si .htaccess)

Link to comment
Share on other sites

1.nějaký script...http://prestashopcesky.cz/kategorie/scripty/
2.vytvoř si v kořenu shopu složku třeba feed a do ní vlož jednotlivé .php
3.adresa bude tvuj obchod,kde za .cz bude lomítko se složkou feed a za dalším lomítkem název php souboru k jednotlivým službám(na seznam..cz/feed/seznam.php,...k heurece..cz/feed/heureka.php..atd) když si zadáš tuhle cestu do vyhledávače,měl by se ti zobrazit výpis jednotlivého zboží.

Další varianta je placenej modul na broucek-a-beruska.cz

Link to comment
Share on other sites

  • 4 months later...

Zkuzte mně někdo nakopnout správným směrem. Potřebuju do XML pro jyxo dostat jak ceny s DPH, tak bez DPH. Toho jsem dosáhl:

<?php

$shopUrl = "http://".$_SERVER['SERVER_NAME'];
include(dirname(__FILE__).'/config/config.inc.php');
include('init.php');  
error_reporting(0);
$p=Product::getProducts(3, 0, 0, 'id_product', 'desc', false);
$products=Product::getProductsProperties(3, $p); 

header("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="utf-8"?>
';
foreach ($products as $row) {
$img=Product::getCover($row['id_product']);
echo '

'.str_replace("&", "&", $row['name']).'
'.str_replace("&", "&",strip_tags($row['description_short'])).'
'.$row['link'].'
'.$shopUrl.'/img/p/'.$row['id_product'].'-'.$img['id_image'].'.jpg
'.($row['price_tax_exc']).'
'.($row['price_tax_exc']*1.2).'
0
';
}
echo '';
?>



Problémem je, že ceny jsou na desetinná místa, což nechci. Ví někdo, jak to zaokrouhlit?

Link to comment
Share on other sites

Ahoj, zdravím Vás, prosím o pomoc s feedem na jyxo.cz, zahoha mě nefunguje :(

v administraci jyxa:
Feed obsahuje prázdné tagy DESCRIPTION ?
Ceny jsou špatně stanoveny ?

<?php

$shopUrl = "http://www.mojedomena.cz".$_SERVER['SERVER_NAME'];
include(dirname(__FILE__).'/config/config.inc.php');
include('init.php');
error_reporting(0);
$p=Product::getProducts(3, 0, 0, 'id_product', 'desc', false);
$products=Product::getProductsProperties(3, $p);

header("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="utf-8"?>
';
foreach ($products as $row) {
$img=Product::getCover($row['id_product']);
echo '

'.str_replace("&", "&", $row['name']).'
'.str_replace("&", "&",strip_tags($row['description_short'])).'
'.$row['link'].'
'.$shopUrl.'/img/p/'.$row['id_product'].'-'.$img['id_image'].'.jpg
'. round ($row['price_tax_exc']).'
'. round ($row['price_tax_exc']*1.2).'
0
';
}
echo '';
?>

díky moc za info

Link to comment
Share on other sites

Občasná tupost mně přivádí do hrobu. Ode mně máš nahoře PLNĚ FUNKČNÍ FEED PRO JYXO, a ty se tu ptáš, jak máš upravit nějaký pofidérní feed bůhví odkud...To mi hlava nebere...

<?php

$shopUrl = "http://".$_SERVER['SERVER_NAME'];
include(dirname(__FILE__).'/config/config.inc.php');
include('init.php');  
error_reporting(0);
$p=Product::getProducts(3, 0, 0, 'id_product', 'desc', false);
$products=Product::getProductsProperties(3, $p); 

header("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="utf-8"?>
';
foreach ($products as $row) {
$img=Product::getCover($row['id_product']);
echo '

'.str_replace("&", "&", $row['name']).'
'.str_replace("&", "&",strip_tags($row['description_short'])).'
'.$row['link'].'
'.$shopUrl.'/img/p/'.$row['id_product'].'-'.$img['id_image'].'.jpg
'.round($row['price_tax_exc']).'
'.round($row['price_tax_exc']*1.2).'
0
';
}
echo '';
?> 



jsem zvědav, kolik lidí se ještě zeptá...

Link to comment
Share on other sites

díky moc za rychlou reakci,

já zkoušel všechny možné úpravy (včetně toho tvého)

teď jsem tam tedy vložil přesně tento co jsi mě poslal a jyxo stejně hlásí:

Feed obsahuje prázdné tagy DESCRIPTION ?
Ceny jsou špatně stanoveny ?

Link to comment
Share on other sites

No tak nejprve si zkontroluj, jestli máš u zboží vyplněn krátký popis...ostatně, můžeš tu dát link na web, abychom ho mohli zkritizovat :-)
feed odesílá krátký popis, nikolv dlouhý...z prostého důvodu: stejně jsi omezen délkou popisu na jyxu (a na všech dalších vyhledávačích)

Link to comment
Share on other sites

Tak za prvé: nevím, co máš za hosting a jak máš nastavenou prestu, ale generuje ti to odkazy na zboží, které neexistuje, např na
Krosové kolo CUBE LTD PRO (http://www.vasekolo.cz/trekova-kola-cube/105-krosove-kolo-cube-ltd-pro.html)
tohle zboží nejde ani u tebe na webu najít

za druhé: tys nahrál feed na web a v jyxu dal znova odeslat, že? tak počkej do zítra,až ho skutečně načte ;-) To, že to nemá deskription máš asi z předešlého feedu, v tomhle se ti generuje v pořádku.

Link to comment
Share on other sites

mno nevím, jel jsem na viruemartu, nadávat na něj nemůžu...každý shop má něco do sebe...

za třetí: oprav si v nastavení presty (nebo .htaccess) nastavení URL webu, generuje ti to neexistující odkazy na obrázky, protože ti chybí lomítko za URL, čímž děláš krásnou reklamu nejhoršímu hostingu co znám, a to banánu (takže už víme, kde hostuješ)

za čtvrté: vrať v té patičce Powered By Prestashop....za prvé porušuješ licenci, a za druhé, kdybych si toho všimnl dřív, žes to dal pryč, tak bych ani neporadil...Když porušuješ licenci ;-)

Jinak jo, dobrej web hezkej, Presta má krásný vzhled, co k němu dává grátis, ani bych to nepoznal... (to je ironie, doufám, že pochopíš :-) )

Link to comment
Share on other sites

Aramon: Tak to seš trošku uved v omyl, u Prestashopu můžeš odebrat link na Prestashop z patičky.

Viz.: There are plenty of software vendors who make their software free but make a charge to remove the logos. This is not the case with Prestashop, you are free to remove this, but why not make a donation (or ask your customer to) or contibute in another way to help the developers and community improve Prestashop.

Link to comment
Share on other sites

Přesně tak, jestli ten odkaz na Prestashop smažeš záleží jen na tobě. Viz. htaccess:

# URL rewriting module activation
RewriteEngine on

# URL rewriting rules
RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)\.jpg$ /img/p/$1-$2$3.jpg [L,E]
RewriteRule ^([0-9]+)(\-[_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)\.jpg$ /img/c/$1$2.jpg [L,E]
RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$3&isolang;=$1$5 [L,E]
RewriteRule ^lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$2&isolang;=$1$4 [L,E]
RewriteRule ^lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /category.php?id_category=$2&isolang;=$1 [QSA,L,E]
RewriteRule ^([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$2$4 [L,E]
RewriteRule ^([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$1$3 [L,E]
RewriteRule ^([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /category.php?id_category=$1 [QSA,L,E]
RewriteRule ^content/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /cms.php?id_cms=$1 [QSA,L,E]
RewriteRule ^([0-9]+)__([a-zA-Z0-9-]*)(.*)$ /supplier.php?id_supplier=$1$3 [QSA,L,E]
RewriteRule ^([0-9]+)_([a-zA-Z0-9-]*)(.*)$ /manufacturer.php?id_manufacturer=$1$3 [QSA,L,E]
RewriteRule ^lang-([a-z]{2})/(.*)$ /$2?isolang=$1 [QSA,L,E]

# Catch 404 errors
ErrorDocument 404 /404.php

Link to comment
Share on other sites

Aramon: Tak to seš trošku uved v omyl, u Prestashopu můžeš odebrat link na Prestashop z patičky.

Viz.: There are plenty of software vendors who make their software free but make a charge to remove the logos. This is not the case with Prestashop, you are free to remove this, but why not make a donation (or ask your customer to) or contibute in another way to help the developers and community improve Prestashop.


This is not the case with Prestashop, you are free to remove this, but why not make a donation (or ask your customer to) or contibute in another way to help the developers and community improve Prestashop.

Ono je teoreticky jedno, co napíše tým PrestaShopu do podmínek, ale nejde se vymanit z licence a její báze.

Je to stejné jako s autorským zákonem. Nelze se zbavit autorských práv, můžeš je prodat, ale vždy budeš vlastníkem autorských práv.

Celkem hodně využívám různé opensources, a nikdy jsem nepovažoval za nutné se za to stydět. Často vídám weby, jedoucí třeba na Wordpressu, kde je v patičce "Powered by Pepa Vocásek"...Nikdo si nesmí (podle licencí všeobecne a autorského zákona) přivlastnit cizí dílo. a tady jsem to napsal preventivně, aby k něčemu takovému nedošlo. Nejsem zastáncem OSA a podobných nesmyslných združení, ale nemám rád ani nepravosti.



Jinak s těmi obrázky jsem to zjistil jednoduše, z toho feedu :-)
Link to comment
Share on other sites

no takže to mám stejné, jen navíc přepis url bez www.

takže stále nevím, ale je pravda, že když aktivuji modul na podobné produkty v kategorii, tak jsou obrázky chybné, viz:
http://www.vasekolo.cz/43-horske-kolo-dema-iseo.html

# URL rewriting module activation
RewriteEngine on

RewriteCond %{HTTP_HOST} ^vasekolo.cz [nc]
RewriteRule (.*) http://www.vasekolo.cz/$1 [R=301,L]

# URL rewriting rules
RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)\.jpg$ /img/p/$1-$2$3.jpg [L,E]
RewriteRule ^([0-9]+)(\-[_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)\.jpg$ /img/c/$1$2.jpg [L,E]
RewriteRule ^lang-([a-z]{2})/([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$3&isolang;=$1$5 [L,E]
RewriteRule ^lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$2&isolang;=$1$4 [L,E]
RewriteRule ^lang-([a-z]{2})/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /category.php?id_category=$2&isolang;=$1 [QSA,L,E]
RewriteRule ^([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$2$4 [L,E]
RewriteRule ^([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$1$3 [L,E]
RewriteRule ^([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /category.php?id_category=$1 [QSA,L,E]
RewriteRule ^content/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$ /cms.php?id_cms=$1 [QSA,L,E]
RewriteRule ^([0-9]+)__([a-zA-Z0-9-]*)(.*)$ /supplier.php?id_supplier=$1$3 [QSA,L,E]
RewriteRule ^([0-9]+)_([a-zA-Z0-9-]*)(.*)$ /manufacturer.php?id_manufacturer=$1$3 [QSA,L,E]
RewriteRule ^lang-([a-z]{2})/(.*)$ /$2?isolang=$1 [QSA,L,E]

# Catch 404 errors
ErrorDocument 404 /404.php

Link to comment
Share on other sites

No popravde nevidim moc duvod to mazat (ikdyz to nekdo chce preprodavat), nevidim nic spatneho rict ze je to postavene na preste. Aby slovek udelal takhle vyladenej eshop s tolika funkcema potreboval by tym 20lidi a delat na tom rok, coz si nemuze dovolit urcite kazdej. Lepsi pouzit prestu a rict to zakaznikovi, nez delat svuj vlastni eshop kterej bude k nicemu.

Link to comment
Share on other sites

  • 1 month later...

Ahoj, v nejakem prispevku sem se docetl, ze staci na ftp do k e-shopu nahrat PHP pro xml feed soubor a zbytek se bude generovat automaticky. Ale vetsinou v tech katalozich chteji uvadet cestu k XML souboru. Jenze jakou cestu zadat kdyz zadny XML soubor na ftp nemam? Kdyz spustim php script tak se vypise zbozi, ale nikde se nevytvori zadny xml soubor. Vzdy sem to delal tak, ze sem spustil php a vysledny vypis ulozil jako XML soubor kterej sem nasledne nakopiroval na ftp a pak do katalogu zadal k nemu cestu. Taky to tak jde, zejo?
Ale mam problem s cestinou. Jiste se to tu nekde resilo, kdyztak prosim hodte link na prislusny prispevek. Ve vygenerovanem seznamu zbozi je nazev produktu v poradku, ale v popise je spstna diakritika (nejake ty entity). Proto kdyz sem rucne vygenerovany xml soubor ulozil, musel sem rucne upravovat/nahrazovat ty entity spravnymi znaky. Sice sem to delal hromadnou zmenou v celem dokumentu, ale i tak nic zabavneho. Muzete mi sem teda pls hodit link na clanek kde se toto resi?
Pak jeste budu hledat script na Heureku s temi pozadovanymi Categorietext... :-/. Diky vsem za pomoc. Petr

Link to comment
Share on other sites

Normalne das jako zdroj ten soubor .php a je to. Ale ten generator co je tady zverejnenej tak ma par vad na krase, pro cca 3000 a vice polozek uz nefunguje, protze SQL vyuziva tridu z presty ktera v SQL dotazu vraci celou tabulku a ten dotaz je tak narocny ze na vetsine hostingach pak nefunguje a druhe je ze negeneruje vyrobce a kategorie, uz asi mesic komunikuju s seznamem jak to spravne udelat aby se zbozi dobre zarazovalo (porad to meni a nefunguje jim to spravne) a dalsi vec v tom generatoru je podle potreby prespat tagy (zalezi jak mate v obchude ulozene nadpisy viz napoveda zbozi.cz) a jeden tag se uz nepouziva.

Link to comment
Share on other sites

  • 4 weeks later...

Ve zbozi.cz jsou upni ignoranti, na to ze vsechno mozne platime cca ..., tak jejich odpoved vzdy trva 14dnu. PRoto jsme se rozhodli ze penize vlozime jinym zpusobem do kampane. XML feed mam porad na bazi SQL dotazu. Jeste jsem to nedodelal do php, tak generuji pres phpmyadmin.

Link to comment
Share on other sites

  • 2 weeks later...

Ahoj, mohl by jste mi prosím někdo poradit jak upravit kód toho xmlfeedu, který je v tomto vlákně popisován tak, aby se do výsledku generování nedostalo zboží, které sice mám v katalogu ale je vypnuté (není zobrazeno).
Předem dík za pomoc.

Link to comment
Share on other sites

Ahoj, upravil jsem xmlfeed pro zbozi.cz
moje verze má navíc následující omezení. Do feedu se nedostane
- zboží které není v katalogu aktivní
- zboží u kterého je uvedena nulová cena
- zboží z kategorií definovaných v kódu
navíc u zboží kde není v katalogu stručný popis je doplněn defaultní text stručného popisu
odzkoušeno na www.zbozi.cz
soubor s kódem je vložen v instalaci prestashopu v adresari www

<?php

$shopUrl = "http://".$_SERVER['SERVER_NAME'];
include(dirname(__FILE__).'/config/config.inc.php');
include('init.php');
error_reporting(0);
$p=Product::getProducts(3, 0, 0, 'id_product', 'desc', false, true);
$products=Product::getProductsProperties(3, $p);

header("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="utf-8"?>
';
foreach ($products as $row)
{
If ($row['price'] > 0) // vynechání zboží u kterého není uvedena cena
{
If (($row['id_category_default'] < 50) or ($row['id_category_default'] > 56)) // vynechání některých kategorií

{
$img=Product::getCover($row['id_product']);
If ($row['description_short']=='') // pokud u zboží není short description je doplněn defaultní text
{
$row['description_short']='detailni informace nejsou zatim k dispozici';

}
echo '

'.str_replace("&", "&", $row['name']).'
'.str_replace("&", "&",strip_tags($row['description_short'])).'
'.$row['link'].'
'.$shopUrl.'/img/p/'.$row['id_product'].'-'.$img['id_image'].'.jpg
'. $row['price_tax_exc'] .'
'. $row['price'] . '
0
';
}
}
}
echo '';
?>

Link to comment
Share on other sites

Taky bych poprosil o postup jak upravit kod pro XML, ktery by zabranil vypisovani polozek z katalogu, ktere jsou deaktivovane. Pripadne jestli nekdo vite jak na to, budu rad kdyz pomuzes, poslal bych ti soubor pro Heureku, ktery mi funguje dobre, ale generuje i deaktivovane polozky. Diky

Link to comment
Share on other sites

Zdravím,
máte někdo feed na www.bezvaceny.cz ? Jejich struktura má vypadat následovně

http://www.bezvaceny.cz/project/bezvaceny/files/uploaded/Pokyny_pro_import_XML.pdf


Tak nevím jestli můžu použít stejný feed jako je třeba na zbozi.cz
Předem děkuji, Shaft

Link to comment
Share on other sites

Zdravim všechny. Prvně děluji za postup na generování feedů.

Mohli byste mě někdo nakopnout jak vypsat do feedu i jednotlivé attributy zboží?

Mám v obchodě attributy (1700 attributu na 160 kusů zboží) a všechny svázaný s obrázkem. Jen se mi nepodařilo tyto atributy vylistovat do feedu.

Dík Gate

Link to comment
Share on other sites

Jde to udelat, ale je to docela slozite a vyzaduje to cloveka ktery hodne rozumi DB nebo to jde resit na strene PHP (snazim se to s kolegou udelat ale jeste to bude asi nakej cas trvat). Pokud by mel nekdo zajem tak tady davam k dispozici svuj php soubor na export pro zbozi.cz, ktery ted pouzivam (funguje bezproblemu i pro tisice polozek). Odzkouseno na v. 1.2.5.

Pri pouziti dejte pozor zejmena na:

1. spravnou cestu k soubru

require "../config/settings.inc.php";



2. adresar kam nahrajete php soubor musi byt zapisovatelny
3.

'.$data['PRODUCT'].'


- nastavte spravny parametr podle tvaru v jakem zadavate produkty podle napovedy (PRODUCTNAMEEXT, PRODUCT, PRODUCTNAME)

4. zbozi ktere je levnejsi nez 3500 tak se zobrazuje pouze ve fulltextu a ne v prednostnim vypisu, castku muzete zmenit

EDIT (20. 6. 2010): Upraveny jeste drobne chyby v generatoru.

feed.php

Link to comment
Share on other sites

Tak se mi povedlo vykuchat dotaz do DB, který vrací všechny kombinace k danémů předměnu. Snad se někam dopracuju :). (daný dotaz pro produkt ID 1001)

SELECT pa.*, 
ag.id_attribute_group, 
ag.is_color_group, 
agl.name AS group_name,
al.name AS attribute_name,
a.id_attribute,
pai.id_image
       FROM ps_product_attribute pa
       LEFT JOIN ps_product_attribute_combination pac ON pac.id_product_attribute = pa.id_product_attribute
       LEFT JOIN ps_attribute a ON a.id_attribute = pac.id_attribute
       LEFT JOIN ps_attribute_group ag ON ag.id_attribute_group = a.id_attribute_group
       LEFT JOIN ps_attribute_lang al ON (a.id_attribute = al.id_attribute AND al.id_lang = 4)
       LEFT JOIN ps_attribute_group_lang agl ON (ag.id_attribute_group = agl.id_attribute_group AND agl.id_lang = 4)

       LEFT JOIN ps_product_attribute_image pai ON (pa.id_product_attribute = pai.id_product_attribute)

       WHERE pa.id_product = 1001
       ORDER BY pa.id_product_attribute

Link to comment
Share on other sites

Nenasel by jsi tam jeste stejnej SQL dotaz pro vypsani nadrazenych kategorii? Kdyby bylo i tohle tak by se konecne dal dat dohromady poradnej generator xml, kterej bude obsahovat vsechno co zbozi.cz vyzaduje pro spravne zarazeni.

Link to comment
Share on other sites

Tak tohle jsem nedávno stáhnul. V kodu je i od koho, tak snad by to mohlo pomoct - netestoval jsem.

<?php

/*
Prestashop česky
www.prestashopcesky.cz
[email protected]
************
Spolupracujeme:
www.eshopsnadno.cz
www.web-snadno.cz
www.designsnadno.cz
www.weboveprojekty.com
************
Tento sript je pro vyhledávač http://seznamzbozi.cz
Místo http://VASEDOMENA.cz vložte URL Vašeho internetového obchodu
*/

$shopUrl = 'http://kosmetika-usa.cz';      // adresa shopu včetně http://
$langCz = 4;                // ceština je v databázi zapsaná pod číslem 3
$prefix = "ps_";                // prefix, pokud nepoužíváte žádný ponehte prázdné
$cfgFile = dirname(__FILE__) . '/../config/settings.inc.php';
if (!file_exists($cfgFile))
{
   die('Skript musi byt umisten v rootu prestashopu v config/settings.inc.php musi byt nastaveni databaze.');
}

require_once($cfgFile);

$db = @MySQL_Connect(_DB_SERVER_, _DB_USER_, _DB_PASSWD_);
if (!$db)
{
   die('Nemohu se spojit s databazi.');
}

MySQL_Select_DB(_DB_NAME_, $db);
MySQL_Query("SET NAMES 'utf8'");

$res = MySQL_Query("
   SELECT
       c.id_category,
       c.id_parent,
       c.level_depth,
       l.name
   FROM {$prefix}category c
   JOIN {$prefix}category_lang l ON l.id_category = c.id_category AND l.id_lang = {$langCz}
   WHERE active = 1 AND level_depth > 0
   ORDER BY level_depth, id_category
");

$categories = array();
while ($row = MySQL_Fetch_Assoc($res))
{
   if ($row['level_depth'] == 1)
   {
   $categories[$row['id_category']] = $row['name'];
   }
   else
   {
   $categories[$row['id_category']] = $categories[$row['id_parent']] . " > " . $row['name'];
   }
}

echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
echo "\n";

$res = MySQL_Query("
       SELECT
               p.id_product,
               p.quantity,
               p.price,
               p.reduction_price,
               p.reduction_percent,
               p.reduction_from,
               p.reduction_to,
               pl.name,
               pl.description_short,
               pl.link_rewrite,
               i.id_image,
       cp.id_category,
       m.name AS manufacturer
       FROM {$prefix}product p
       JOIN {$prefix}product_lang pl USING(id_product)
       JOIN {$prefix}image i USING(id_product)
   JOIN {$prefix}category_product cp USING(id_product)
   JOIN {$prefix}category c USING(id_category)
   JOIN {$prefix}manufacturer m USING(id_manufacturer)
       WHERE p.active = 1
       AND i.cover = 1
       AND cp.id_category > 1
       AND c.level_depth > 1
       ORDER BY p.id_product", $db);

$currentDate = date('Y-m-d');

while ($row = MySQL_Fetch_Assoc($res))
{
   $desc = strip_tags(html_entity_decode($row['description_short'], ENT_COMPAT, 'utf-8'));
   $reduction = 0;

   if ($result['reduction_from'] == $result['reduction_to']
           || ($result['reduction_from'] <= $currentDate
                   && $currentDate <= $result['reduction_to']))
   {
       if ($row['reduction_price'] && $row['reduction_price'] > 0)
       {
           if ($row['reduction_price'] >= $row['price'])
           {
               $reduction = $row['price'];
           }
           else
           {
               $reduction = $row['reduction_price'];
           }
       }
       elseif ($row['reduction_percent'] && $row['reduction_percent'] > 0)
       {
           if ($row['reduction_percent'] >= 100)
           {
               $reduction = $row['price'];
           }
           else
           {
               $reduction = $row['price'] * $row['reduction_percent'] / 100;
           }
       }
   }

   echo "\n";
   echo "\t" . $row['id_product'] . "\n";
   echo "\t" . $categories[$row['id_category']] . "\n";
   echo "\t" . $row['manufacturer'] . "\n";
   echo "\t" . $row['name'] . "\n";
   echo "\t" . mb_substr($desc, 0, 512, 'utf-8') . "\n";
   echo "\t" . round($row['price']*1.19-$reduction) . "\n";
   echo "\t" . $shopUrl . "/img/p/" .$row['id_product'] .
           "-" . $row['id_image'] . "-large.jpg\n";
   echo "\t" . $shopUrl . "/" . $row['id_product'] .
           "-" . $row['link_rewrite'] . ".html\n";
   echo "\n";
}

echo "\n";

?>

Link to comment
Share on other sites

  • 2 months later...
  • 2 weeks later...
  • 1 month later...

Ahoj,

chtěl jsem Vás poprosit o radu. Pokouším se rozchodit XML feed pro heureka.cz - z heureky mi bylo známeno, že můj xml soubor není v pořádku. Je použit soubor viz níže...
Po zadání adresy so vyhledavače mám výpis na obrazovce pouze:
"Tento XML soubor nemá připojeny žádné informace o vzhledu prvků. Strom XML dokumentu je zobrazen níže.

"

To je správně? Kde může nastat chyba?

Předem moc děkuji za ochotu a radu.


Ahoj...

1) Vytvořit si soubor .php a vložit to něj následující:

<?php
$shopUrl = 'http://www.presta.bazarhudebnin.cz';      // adresa shopu včetně http://
include(dirname(__FILE__).'/config/config.inc.php'); // cesta ke config souboru
include(dirname(__FILE__).'/init.php');
error_reporting(0);
$p=Product::getProducts(3, 0, 0, 'id_product', 'desc', false); // ceština je v databázi zapsaná pod číslem 3
$products=Product::getProductsProperties(3, $p); // ceština je v databázi zapsaná pod číslem 3

header("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="utf-8"?>
';
foreach ($products as $row) {
$img=Product::getCover($row['id_product']);
echo '

'.str_replace("&", "&", $row['name']).'
'.str_replace("&", "&",strip_tags($row['description_short'])).'
'.$row['link'].'
'.$shopUrl.'/img/p/'.$row['id_product'].'-'.$img['id_image'].'.jpg
'.($row['price']*1).'
0
';
}
echo '';
?>



2) uložit do rootu složky s Prestou

3) Url feedu bude:

http://www.tvojedomena.cz/nazevtvyhosouboru.php

a to budeš zadávat při registraci feedu na zbozi.cz.


Tipy, triky

Nainstalovat a spustit SEO (nastavit si .htaccess)

Link to comment
Share on other sites

upravit takto:
http://prestashopcesky.cz/jak-odstranit-entity-ve-zdrojovem-kodu/
+ po uprave vsechno zbozi znovu ulozit


ahoj, děkuji za radu, vše jsem udělal dle návodu a ted při přístupu, xml feed běží jak má, ale po úpravě mi nastal problém se vzhledem stránek....nezobrazují se mi žádné popisy modulů, košíku prostě nic....

Co to může zapříčinit?

http://www.servis-pocitace.net/shop
Link to comment
Share on other sites

zkuste vymazat obsah adresare compile (tools-smarty-compile) - vymazat vse krome index.php


to jsem již vyzkoušel - bez výsledku...

úprava pro xml by neměla mít vliv na tento text, který se mi teď nezobrazuje, ne?

Každopádně vám děkuji za radu.
Link to comment
Share on other sites

  • 1 month later...
Ahoj...

1) Vytvořit si soubor .php a vložit to něj následující:

<?php
$shopUrl = 'http://www.presta.bazarhudebnin.cz';      // adresa shopu včetně http://
include(dirname(__FILE__).'/config/config.inc.php'); // cesta ke config souboru
include(dirname(__FILE__).'/init.php');
error_reporting(0);
$p=Product::getProducts(3, 0, 0, 'id_product', 'desc', false); // ceština je v databázi zapsaná pod číslem 3
$products=Product::getProductsProperties(3, $p); // ceština je v databázi zapsaná pod číslem 3

header("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="utf-8"?>
';
foreach ($products as $row) {
$img=Product::getCover($row['id_product']);
echo '

'.str_replace("&", "&", $row['name']).'
'.str_replace("&", "&",strip_tags($row['description_short'])).'
'.$row['link'].'
'.$shopUrl.'/img/p/'.$row['id_product'].'-'.$img['id_image'].'.jpg
'.($row['price']*1).'
0
';
}
echo '';
?>



2) uložit do rootu složky s Prestou

3) Url feedu bude:

http://www.tvojedomena.cz/nazevtvyhosouboru.php

a to budeš zadávat při registraci feedu na zbozi.cz.

Postupovala jsem přesně podle tohoto návodu, ale feed nefunguje :o( IT ze zbozi.cz ho zadal do systému, ale zboží se nezobrazuje, napsal mi: "...prosím kontaktujte svého programátora, aby URL odkazy
opravil, v administraci Zboží.cz, záložka FEED, zpracování." což jsme chtěla udělat, ale nenašla jsem nic, co by se dalo přepsat... poradí někdo? URL feedu je http://www.anbio.cz/feed/azbozi.php

Link to comment
Share on other sites

ano, jenom se musi nahradit tagy temi, ktere maji jyxo, heureka, seznam atd ve specifikacich a pak se ulozi pro kazdy zvlast, t.j. napr. zbozi.php bude mit tagy ktere chce zbozi.cz, atd.

Aha :o( tak to už je na mě příliš programovací, já zvládnu akorát tak něco tupě zkopírovat, přepsat a uložit :o(
Link to comment
Share on other sites

  • 2 weeks later...
xml pro heureku, seznam, jyxo ... je nutne upravit podle poznamek (cestina, cesty k souborum atd).


Stáhla jsem, upravila jsem, nahrála jsem, výsledek pořád stejný, už jsem z toho zoufalá, sama to nezvládám :o( Nejsem IT, no.
Link to comment
Share on other sites

problem bude v cestach k souborum nahore v tom feedu nebo v cisle cestiny. maji byt ulozeny v korenovem adresari, jinak se musi upravit cesty k souborum config a init. priloz sem ty feedy, ktere jsi upravovala,podivam se na ne. staci jeden.

Link to comment
Share on other sites

<?php
$shopUrl = 'http://www.anbio.cz'; /// OPRAVIT
include(dirname(__FILE__).'/config/config.inc.php');/// ZKONTROVAT SPRAVNOST
include(dirname(__FILE__).'/init.php'); /// ZKONTROVAT SPRAVNOST
error_reporting(0);
$p=Product::getProducts(4, 0, 0, 'id_product', 'desc', false);/// ZKONTROVAT SPRAVNOST
$products=Product::getProductsProperties(4, $p);/// ZKONTROVAT SPRAVNOST

header("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="utf-8"?>

ANBIO
www.anbio.cz/';

foreach ($products AS $row){
if ($row['active']){

$kategorie=array();
$category = new Category(intval($row['id_category_default']), intval(3));
while ($category->id <> 1) {
$kategorie[]=$category->hideCategoryPosition($category->name);
$category = new Category(intval($category->id_parent), intval(3));
}

$img=Product::getCover($row['id_product']);
echo '

'.str_replace("&", "&", $row['manufacturer_name']).'
'.str_replace("&", "&", $row['manufacturer_name']).' '.str_replace("&", "and", strip_tags($row['name'])).'
'.str_replace("&", "&", $row['manufacturer_name']).' '.str_replace("&", "and", strip_tags($row['name'])).'
'.str_replace("&", "&", $row['manufacturer_name']).' '.str_replace("&", "and", strip_tags($row['name'])).'.'.str_replace("&", "and", strip_tags($row['description_short'])).'
'.str_replace("&", "and", strip_tags($row['description_short'])).'.'.str_replace("&", "and", strip_tags($row['description'])).'
'.$row['link'].'
'.implode('>',array_reverse($kategorie)).'
http://www.anbio.cz/img/p/'.$row['id_product'].'-'.$img['id_image'].'-home.jpg
'.$row['tax_rate'].'
'.($row['price']*1).'
0
3
new
';

}
}
echo '';
/// DALE OPRAVIT NÁZEV OBCHODU V RADKU
/// OPRAVIT DOMENU V RADKU POD NAZVEM OBCHODU
/// DALE OPRAVIT DOMENU+CESTU K ADRESARI V RADKU
/// OPRAVIT - doruceni (dny)
?>

Link to comment
Share on other sites