非常感谢任何帮助!
我想创建一个新的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);
}
}
?>
但是选项没有显示。很明显,这些选项需要更多的编码。你能帮帮我吗?
答案 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知识)显影剂。