Я в ручную фигачил атрибуты и так же делал когда-то опции
Делал файлик CSV и потом согласно этого файлика проставлял нужные атрибуты, нужным товарам. Так же можно и опции фигачить.
У меня там два инсерта - так как два языка.
if($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) {
if(is_uploaded_file($this->request->files['price']['tmp_name'])) {
if (is_file($this->request->files['price']['tmp_name'])){
$csv = file( $this->request->files['price']['tmp_name'] );
$ok2 = 0;
$errCount2 = 0;
foreach ( $csv as $prod2 ) {
$str = explode(';',$prod2);
$prod2ID = trim($str[0]);
$quant2 = trim($str[1]);
if($prod2ID !== null){
$isset = $this->db->query( "SELECT product_id FROM " . DB_PREFIX . "product WHERE model = '$prod2ID'" );
if ( ! empty( $isset ) && $isset > 0 ) {
$updateProd2 = $this->db->query( "INSERT INTO oc_product_attribute (product_id,attribute_id, language_id, text) VALUES (".$isset->row['product_id'].",16,1,'$quant2') ON DUPLICATE KEY UPDATE text = text;" );
$updateProd3 = $this->db->query( "INSERT INTO oc_product_attribute (product_id,attribute_id, language_id, text) VALUES (".$isset->row['product_id'].",16,4,'$quant2') ON DUPLICATE KEY UPDATE text = text;" );
if ( ! empty( $updateProd2 ) ) {
$ok2 ++;
} else {
$errCount2 ++;
}
} else {
$errCount2 ++;
}
}
}
$this->session->data['success'] = "Обновлено товаров: $ok2<br/>Нет: $errCount2";
}else{
echo 'not file';
}
}
$this->redirect($this->url->link('module/csvimport', 'token=' . $this->session->data['token'], 'SSL'));
}
Может вам поможет или натолкнет на мысль.