PRESTASHOP 1.6以编程方式向产品添加类别

时间:2014-11-06 10:52:53

标签: prestashop categories product programmatically-created

在我的模块中,客户可以将商品添加到商店,它将通过单独的数据库传递。 当管理员检查产品并验证产品时,我将信息更改为prestashop产品。

所以我有这段代码:

$object = new Product();
$object->price = 32;
$object->id_tax_rules_group = 0;
$object->name = array((int)Configuration::get('PS_LANG_DEFAULT') => $creation['title']);
$object->id_manufacturer = 0;
$object->id_supplier = 0;
$object->quantity = 1;
$object->minimal_quantity = 1;
$object->additional_shipping_cost = 0; 
$object->wholesale_price = 0;
$object->ecotax = 0;
$object->out_of_stock = 0;
$object->available_for_order = 1;
$object->show_price = 1;
$object->on_sale = 1;
$object->online_only = 1;
$object->meta_keywords = $creation['title'];
$object->active = 1;
$object->description_short = array((int)(Configuration::get('PS_LANG_DEFAULT')) => $creation['description']);
$object->link_rewrite = array((int)(Configuration::get('PS_LANG_DEFAULT')) => $creation['title']); 

$object->id_category = 2;
$object->id_category_default = 2;
$object->addToCategories(array(2,13));

//SAVE
$object->save()

产品已保存且信息良好但未与任何类别相关联。 当我去我的页面产品,我可以看到所有产品,我看到我的产品和类别是那里但是当我输入产品的详细信息,我去类别列表没有检查。

我试图在代码中看到更多正在发生的事情,我看到了这一点:

if (!in_array($new_id_categ, $current_categories))
    $product_cats[] = array(
    'id_category' => (int)$new_id_categ,
    'id_product' => (int)$this->id,
    'position' => (int)$new_categ_pos[$new_id_categ],
);

经过测试" if"永远是真的,因此产品永远不会被创造出来。 我有检查,这种关联不存在。

我不知道接下来该做什么,或者我是否需要不使用addToCategory,并自己输入数据...

所以请帮助谢谢。

1 个答案:

答案 0 :(得分:1)

方法addToCategories()为已创建的产品分配类别。换句话说,您需要在调用addToCategories()之前调用Product类的save()方法;