如有任何帮助,我们将不胜感激!
我想创建一个新的提要,它将导出产品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知识)。