Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将带有webservice的产品从和xml文件添加到prestashop中_Php_Xml_Prestashop - Fatal编程技术网

Php 如何将带有webservice的产品从和xml文件添加到prestashop中

Php 如何将带有webservice的产品从和xml文件添加到prestashop中,php,xml,prestashop,Php,Xml,Prestashop,我有一个由股票管理软件生成的xml文件,我想把它插入Pretashop数据库。有谁能帮我处理这个xml文件吗 <?xml version="1.0" encoding="UTF-8"?> <Document> <Products> <Reference>1101TEST</Reference> <Valid_internet_product>1</Valid_internet_product> <Produ

我有一个由股票管理软件生成的xml文件,我想把它插入Pretashop数据库。有谁能帮我处理这个xml文件吗

<?xml version="1.0" encoding="UTF-8"?>
<Document>
<Products>
<Reference>1101TEST</Reference>
<Valid_internet_product>1</Valid_internet_product>
<Products_name>universal</Products_name>
<Price>69.95</Price>
<Active_product>1</Active_product>
<SupplierNo>08</SupplierNo>
<Weight>5</Weight>
<Description>Koncentreret universalmiddel med salmiak</Description>
<Short_Description>Koncentreret universalmiddel med salmiak</Short_Description>
<MinOrderQty>1</MinOrderQty>
<Categories>
<Category>
<CategoryID>63</CategoryID>
<CategoryName>Bins\Universal</CategoryName>
<Active_category>1</Active_category>
<Changed>0</Changed>
</Category>
</Categories>
<Tax_Class_ID>1</Tax_Class_ID>
<Discount>
<Discount_percentage>percentage</Discount_percentage>
<discountprice_ex_vat>0</discountprice_ex_vat>
<Discountprice_include_vat>0</Discountprice_include_vat>
<Pct_ReductionPercent>0</Pct_ReductionPercent>
</Discount>
</Products>
</Document>

1101测试
1.
普遍的
69.95
1.
08
5.
萨尔米亚克医学中心大学
萨尔米亚克医学中心大学
1.
63
箱子\通用
1.
0
1.
百分比
0
0
0

使用PrestaShop,您可以使用以下选项之一轻松导入数据:

  • 通过在后台使用“CSV导入”功能(假设您还有一个.CSV导出而不是此XML文件)
  • 通过使用PrestaShop Web服务(需要自定义开发)
  • 通过使用现有类(需要自定义开发)
  • 下面是一个处理XML字符串的快速代码片段。 它将创建或更新所有产品,并考虑其价格、可用性、名称、说明、重量等

    请注意:

    • 此代码不适用于组合(颜色、尺寸等)
    • 此代码不会为您创建类别,而是将所有产品添加到“主”类别中
    这只是一个帮助您的示例;)

    reference=$product\u xml->reference;
    $product->price=(浮动)$product\u xml->price;
    $product->active=(int)$product\u xml->active\u product;
    $product->weight=(浮动)$product\u xml->weight;
    $product->最小数量=(int)$product\u xml->最小数量;
    $product->id\类别\默认值=2;
    $product->name[1]=utf8\U编码($product\U xml->Products\U name);
    $product->description[1]=utf8\U编码($product\U xml->description);
    $product->description\u short[1]=utf8\u编码($product\u xml->short\u description);
    $product->link\u rewrite[1]=工具::link\u rewrite($product\u xml->Products\u name);
    如果(!isset($product->date|add)|为空($product->date|add))
    $product->date_add=date('Y-m-d H:i:s');
    $product->date_upd=日期('Y-m-d H:i:s');
    $id\u产品$product->updateCategories(数组(2)):$product->addToCategories(数组(2));
    $product->save();
    回显'Product'.$Product->name[1].'($id_Product?'updated':'created')。
    ; } }
    亲爱的Bruno,循环抛出如下错误:“致命错误:未捕获异常‘PrestaShopException’,消息为‘Property Product->link_rewrite为空”。有线索吗?
    <?php
    
    include(dirname(__FILE__).'/config/config.inc.php');
    include(dirname(__FILE__).'/init.php');
    
    $xml_string = <<<XML
    <?xml version="1.0" encoding="UTF-8"?>
    <Document>
    <Products>
    <Reference>1101TEST</Reference>
    <Valid_internet_product>1</Valid_internet_product>
    <Products_name>universal</Products_name>
    <Price>69.95</Price>
    <Active_product>1</Active_product>
    <SupplierNo>08</SupplierNo>
    <Weight>5</Weight>
    <Description>Koncentreret universalmiddel med salmiak</Description>
    <Short_Description>Koncentreret universalmiddel med salmiak</Short_Description>
    <MinOrderQty>1</MinOrderQty>
    <Categories>
    <Category>
    <CategoryID>63</CategoryID>
    <CategoryName>Bins\Universal</CategoryName>
    <Active_category>1</Active_category>
    <Changed>0</Changed>
    </Category>
    </Categories>
    <Tax_Class_ID>1</Tax_Class_ID>
    <Discount>
    <Discount_percentage>percentage</Discount_percentage>
    <discountprice_ex_vat>0</discountprice_ex_vat>
    <Discountprice_include_vat>0</Discountprice_include_vat>
    <Pct_ReductionPercent>0</Pct_ReductionPercent>
    </Discount>
    </Products>
    </Document>
    XML;
    
    $xml = simplexml_load_string($xml_string);
    foreach ($xml->Products as $product_xml)
    {
        if ($product_xml->Valid_internet_product == 1)
        {
            /* Update an existing product or Create a new one */
            $id_product = (int)Db::getInstance()->getValue('SELECT id_product FROM '._DB_PREFIX_.'product WHERE reference = \''.pSQL($product_xml->Reference).'\'');
            $product = $id_product ? new Product((int)$id_product, true) : new Product();
            $product->reference = $product_xml->Reference;
            $product->price = (float)$product_xml->Price;
            $product->active = (int)$product_xml->Active_product;
            $product->weight = (float)$product_xml->Weight;
            $product->minimal_quantity = (int)$product_xml->MinOrderQty;
            $product->id_category_default = 2;
            $product->name[1] = utf8_encode($product_xml->Products_name);
            $product->description[1] = utf8_encode($product_xml->Description);
            $product->description_short[1] = utf8_encode($product_xml->Short_Description);
            $product->link_rewrite[1] = Tools::link_rewrite($product_xml->Products_name);
            if (!isset($product->date_add) || empty($product->date_add))
                $product->date_add = date('Y-m-d H:i:s');
            $product->date_upd = date('Y-m-d H:i:s');
            $id_product ? $product->updateCategories(array(2)) : $product->addToCategories(array(2));
            $product->save();
    
            echo 'Product <b>'.$product->name[1].'</b> '.($id_product ? 'updated' : 'created').'<br />';
        }
    }