Jump to content

cendaprnda

Members
  • Posts

    36
  • Joined

  • Last visited

Posts posted by cendaprnda

  1. Ahoj všem,

    chtěl bych podpořit nějakým mrzkým penízem zbozi.cz, ale ne zas nějak moc :). Chtěl bych proto změnit svůj feed pro zbozi.cz tak, aby všechny produkty byly TOLLFREE 1 a pouze pár aby bylo zpoplatněno. Celkme to funguje, nicméně feed mi vždy vyhodí chybu na uplně stejném místě

    Chrome hlásí
    error on line 1140 at column 17: xmlParseEntityRef: no name

    Mozila pak
    Chyba parsování XML: Dokument není dobře zformátován
    Adresa: http://www.i-hrackarstvi.cz/zbozi_test.php
    Číslo řádku 1140, sloupec 17: Blok & Blok 5 family
    -----------------------^

    Tato chyba se pak zobrazuje i když vymažu přidané echo, které jsem do scriptu přidal :(. Jediné kdy opět script začne fungovat je přehrání scriptem stávajícím. K editaci používám PSPAD.

    Má někdo nápad proč to blbne ? Případně jak řešíte položku TOLLFREE na zbozi.cz vy ?

    Script originál


    <?php
    
    $shopUrl = 'www.xxxx.cz';
    $noShowCategory = "7,8,9,69,70,71,72,73,74,75,76,77,78,79";
    $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'");
    $prefix = "ps_";
    header("Content-Type: text/xml");
    echo '<?xml version="1.0" encoding="utf-8"?>';
    ?>
    <?php
    echo "\n\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
           FROM {$prefix}product p
           JOIN {$prefix}product_lang pl USING(id_product)
           JOIN {$prefix}image i USING(id_product)
           WHERE i.cover = 1 AND NOT (SELECT COUNT(*)
                   FROM {$prefix}category_product cp
                   WHERE cp.id_product = p.id_product
                           AND cp.id_category IN($noShowCategory))
           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'));
    
       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" . mb_substr($row['name'], 0, 64, 'utf-8') ."\n"; 
       echo "\t" . mb_substr($desc, 0, 512, 'utf-8') . "\n";
       echo "\thttp://" . $shopUrl . "/" . $row['id_product'] .
               "-" . $row['link_rewrite'] . ".html\n";
       echo "\tnew\n";
       echo "\t" . ($row['quantity'] > 0 ? "0" : "73") . "\n";
       echo "\thttp://" . $shopUrl . "/img/p/" .$row['id_product'] .
               "-" . $row['id_image'] . "-large.jpg\n";
       echo "\t" . round($row['price']-$reduction/1.20) . "\n";
       echo "\n";
    }
    
    echo "\n";
    
    ?>
    



    upraveny

    jen přidán řádek

    echo "\t" . ($row['quantity'] = 0 ? "1" : "0") . "\n";
    
    



    Vygeneruje se cca 1000 položek a pak vyhodí chybu. Protože v php umím prdlajs, tak sem chtěl využít, toho, že dodavatele mám u všeho zboží jako 0 a pomocí id_supplier (namísto quantity) bych si jen definoval zda se má zobrazovat nebo ne. Podporovat chci třeba jen 10 ks zboží.

    Budu rád za každou radu, nebo nápad jak jinak vyřešit v xml parametr TOLFREE


    Zdeněk

  2. Zdravím všechny,

    chtěl bych malinko učesat řezení zboží v kategoriích. Jedná se mi hlavně o přehlednost. Nyní mám například produkty autíček v kategorii Modely aut, motorek, letadel - Kovové. Chtěl bych ale aby tyto produkty byly současně i v podkategorii Auta - Auta, autobusy, traktory kovové. Samozřejmě lze to řešit ručně ale 400 produktu je celkem hokna :(. Nemluvě o tom, že bych chtěl postupně učesat cca 8000 produktů.

    Jednou z možností je provést přidání řádků do ps_category_product, tam mě ale mate jedna věc.

    Jsou zde 3 sloupečky - id category (to je mi jasné), id_product (tasky jasné) a position (pravděpodobně pozice v dané kategorii).

    A ted k dotazu, je možné abych pomocí příkazu mysql insert přidal jednoduše další řádek s ID_category, id_produktu, position (libovolné) ? Jde mi hlavně o to, že position by bylo vždy stejné číslo nebo by mohlo být i jiné, ale nemohu zaručit, že již stejné číslo se stejnou position v dané kategorii neexistuje ?

    Díky všem za rady případně nápady jak jednoduše přiřadit další kategorii k velkému množství produktů


    Zdeněk

    http://www.i-hrackarstvi.cz

  3. Díky Janovi, který pro mě naspal upravený feed to již funguje.Hlavní problém byl pravděpodobně v tom že potřebuju exportovat cca 6000 položek a pokud se použil ten druhý kratší script, výsledek byl nulový protože došlo k zahlcení paměti. Víc by o tom asi napsal přímo on sám, tímto mu chcu ještě jednou poděkovat když tvrdošíjně odmítal veškeré hmotné statky. Pokud bude souhlasit přidám sem jeho upravený feed

    Zdeněk

  4. Bohužel ani středník a vymazání zbytečných echo nepomohlo :(. Pravděpodobně to budu řešit investicí do xml exportéru, on není problém to nastavit v Cronu, osobně se mě tohle řešení i líbí, nicméně každý den kdy člověk nevysí na heuréce jsou zákazníci kteří prostě nejsou :(

  5. Ahoj všem předem bych chtěl říct, že jsem poctivě prošel všechno co se tu o zbozi.cz napsalao a vyzkoušel různé verze feedu. V závěru jsem našel jeden, který mi skutečně funguje, zde je výpis

    <?php
    
    $shopUrl = 'www.i-hrackarstvi.cz';
    $noShowCategory = "7,8,9,69,70,71,72,73,74,75,76,77,78,79";
    $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'");
    $prefix = "ps_";
    header("Content-Type: text/xml");
    echo '<?xml version="1.0" encoding="utf-8"?>';
    ?>
    <?php
    echo "\n\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
           FROM {$prefix}product p
           JOIN {$prefix}product_lang pl USING(id_product)
           JOIN {$prefix}image i USING(id_product)
           WHERE i.cover = 1 AND NOT (SELECT COUNT(*)
                   FROM {$prefix}category_product cp
                   WHERE cp.id_product = p.id_product
                           AND cp.id_category IN($noShowCategory))
           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'));
    
       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" . mb_substr($row['name'], 0, 64, 'utf-8') ."\n"; 
       echo "\t" . mb_substr($desc, 0, 512, 'utf-8') . "\n";
       echo "\thttp://" . $shopUrl . "/" . $row['id_product'] .
               "-" . $row['link_rewrite'] . ".html\n";
       echo "\tnew\n";
       echo "\t" . ($row['quantity'] > 0 ? "0" : "73") . "\n";
       echo "\thttp://" . $shopUrl . "/img/p/" .$row['id_product'] .
               "-" . $row['id_image'] . "-large.jpg\n";
       echo "\t" . round($row['price']-$reduction/1.20) . "\n";
       echo "\n";
    }
    
    echo "\n";
    
    ?>
    



    Chtěl jsem samozřejmě t samé i pro Heuréku, a hledal feedy, ale ani jeden z nich mi nefunguje a to samé bohužel i feedy které jsou pro ostatní porovnávače cen. Za boha netuším kde je problém. Vždy se mi zobrazí pouze prázdná obrazovka, nic víc nic mí. Zkoušel jsem zjistit kde je problém a pomocí eacha a "zalomítkování" příkazů jsem došel k tomu že problém vzniká na řádku (češtinu mám jako 4tý jazyk)

    $p=Product::getProducts(4, 0, 0, 'id_product', 'desc', false); // ceština je v databázi zapsaná pod číslem 3



    pokud tento příkaz "zalomítkuju a dám za něj echo tak se echo provede, pokud ho nechám aktivní tak se echo neprovede a obrazovka je bílá. Nenašel by se někdo kdo by mě řekl kde je chyba. Díky moc. Tady ještě celý kód který mě osobně končí bílou obrazovkou a nic nevypíše

    <?php
    
    
    echo '<?xml version="1.0" encoding="utf-8"?>;
    
    $shopUrl = 'http://i-hrackarstvi.cz';      // adresa shopu včetně http://
    include(dirname(__FILE__).'/config/config.inc.php'); // cesta ke config souboru
    include(dirname(__FILE__).'/init.php');
    echo '<?xml version="1.0" encoding="utf-8"?>;
    error_reporting(0);
    $p=Product::getProducts(4, 0, 0, 'id_product', 'desc', false); // ceština je v databázi zapsaná pod číslem 3
    $products=Product::getProductsProperties(4, $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 '';
    */
    
    ?>
    



    Používám hosting onebit.cz a jedu na Prestashopu 1.3.2 (www.i-hrackarstvi.cz)

    Díky všem za rady

  6. Nesetkal jste se někdo s tím že by mu po kliknutí na výrobce u vypsanýého zboží uplně chyběli obrázky (nedohazuje to neexistující apod. Prostě je vůbec nezobrazí.

    Tenhle problém se objevuje navíc pouze v Internet exploreru 8. Chrome a mozilla je v pořádku a zobrazuje to co má

    Pokud někoho něco napadá budu rád za jakoukoli radu

    Jedu na presta 1.3.2.

  7. Potvrzuji funkčnost změny v tools.php i na 1.3.2.3

    Já vůl jsem se k prestě dostal poprvé cca před 14 dny a to už byla na světe 1.3.2. tak vždycky trnu hrůzou jestli to či ono pojede. Zatím jsem ale nenarazil na nic co by se nepovedlo díky rozsáhlé diskuzi zprovoznit.

    BTW - tady sem zagumoval a zbytečně se u tohodle zasekl na víc jak hodinu proto, že jsem spoléhal naivně že v poznámkovém bloku není problém editovat PHP a ono bohužel je :(. První výsledek byl znefunkčnění celé presty včetně administrace a podruhé hláška o nemožnosti vytvoření PDF. Opravdu vřele všem doporučuji používat PSPad Editor

  8. Ahoj,


    Díky za tip

    ono nejde ani tak opřesnost jako hlavně o to, že takto rozsegmentované dostávám podklady od dodavatele = prostě by to byla práce navíc, nicméně nakonec z toho vypadlo že i takto rozsekané to bude mít 150 položek a to díky rychlému scrolování není tak hrozné naopak se mě to celkem líbí.

    Zdeněk

  9. Mám dotaz zda je možné jinak než záashem do databáze jednoduše vytvořit v bloku Výrobci podkategorie - něco jsme našel na zahraničních forech, ale nic konkrétního.

    Jedná se mi o to, že zboží dostávám již rozdělené a je tam např. jako výrobce uveden

    Lego a podkategorie Lego City
    Pokud bych to neřešil podkategoriema tak budu mít těch výrobců 400. Druhá možnost je vytvořit si převodní tabulku a výrobce v csv podle toho upravit, ale přece jen si říkám že by bylo příjemnější tohle nemuset obsolvovat.

    Díky všem za podněty - často stačí jen nakopnout správným směrem a výsledek se dostav

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More