具有产品ID和选项的Opencart Feed

时间:2014-10-16 08:54:21

标签: php opencart feed

非常感谢任何帮助!

我想创建一个新的Feed,它会导出产品ID和产品选项desctiptions。

示例:

<feed>
    <product>
        <product_id>001</product_id>
        <options>
            <option>option1</option>
            <option>option2</option>
            <option>option3</option>
        </options>
    </product>
</feed>

我的代码是:

<?php
class ControllerFeedOptions extends Controller {
   public function index() {
       $output  = '<?xml version="1.0" encoding="UTF-8"?>';
       $output .= '<feed xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

       $this->load->model('catalog/product');

       $products = $this->model_catalog_product->getProducts();
       $options = $this->model_catalog_product->getProductOptions($product_id);
       foreach ($products as $product) {
         $output .= '<product>';
         $output .= '<product_id>' . $product['product_id'] . '</product_id>';
         $output .= '<options>';
         $output .= '<option>' . $options['name'] . '</option>';
         $output .= '</options>';
         $output .= '</product>';   
       }

       $output .= '</feed>';

       $this->response->addHeader('Content-Type: application/xml');
       $this->response->setOutput($output);

   }

}
?>

但是选项没有显示。很明显,这些选项需要更多的编码。你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

在循环浏览产品时,您还需要通过产品选项进行额外的循环。

    $products = $this->model_catalog_product->getProducts();
    foreach ($products as $product) {
        $output .= '  <product>';
        $output .= '    <product_id>' . $product['product_id'] . '</product_id>';
        $output .= '    <options>';
        $options = $this->model_catalog_product->getProductOptions($product['product_id']);
        foreach ($options as $option) {
            $output .= '      <option>';
            $output .= '        <name>' . $option['name'] . '</name>';
            $output .= '        <values>';
            foreach ($option['option_value'] as $value) {
                $output .= '          <value>' . $value['name'] . '</value>';
            }
            $output .= '        </values>';
            $output .= '      </option>';
        }
        $output .= '    </options>';
        $output .= '  </product>';   
    }

试试这段代码。

修改:由于一个选项可以包含多个值,而一个产品可以有多个选项,因此您需要更深入地循环。这意味着即使XML Feed结构也需要更深层次。

我更新了上面的代码以返回请求的输出。

BTW:我不知道我们是谁,但如果你(所有)没有PHP或OpenCart开发技能,我只能建议雇用至少一个PHP(并且更好地使用OpenCart知识)显影剂。