带有产品id和选项的Opencart Feed


Opencart Feed with product id and options

如有任何帮助,我们将不胜感激!

我想创建一个新的提要,它将导出产品id和产品的选项描述。

示例:

<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);
   }
}
?>

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

在循环产品时,还需要对产品选项进行额外的循环。

    $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提要结构也需要更深入。

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

BTW:我不知道我们是谁,但如果你们(所有人)既没有PHP也没有OpenCart开发技能,我只能建议至少雇佣一名PHP开发人员(更了解OpenCart知识)。