Hi,
The ordering of the related products is indeed not handled by the CSV import.
It can be added quite easily I think.
Change the code:
function _insertRelated(&$products,$type='related'){
$values = array();
$totalValid=0;
$insert = 'INSERT IGNORE INTO '.hikashop_table('product_related').' (`product_related_id`,`product_related_type`,`product_id`) VALUES (';
$ids=array();
foreach($products as $product){
if(!isset($product->$type) && empty($product->hikashop_update)){
//copy files from template if any
if(@$product->product_type!='variant' && !empty($this->template->$type)){
foreach($this->template->$type as $id){
$value = array((int)$id,$this->db->Quote($type),$product->product_id);
$values[] = implode(',',$value);
$totalValid++;
if( $totalValid && $totalValid%$this->perBatch == 0){
$this->db->setQuery($insert.implode('),(',$values).')');
$this->db->query();
$totalValid=0;
$values=array();
}
}
}
}elseif(isset($product->$type)&&is_array($product->$type)){
$ids[] = (int)$product->product_id;
foreach($product->$type as $k => $id){
if(!empty($id)){
$id = $this->_getRelated($id);
$product->{$type}[$k] = $id;
$value = array((int)$id,$this->db->Quote($type),$product->product_id);
$values[] = implode(',',$value);
$totalValid++;
}
if( $totalValid && $totalValid%$this->perBatch == 0){
if(!empty($ids)){
$this->db->setQuery('DELETE FROM '.hikashop_table('product_related').' WHERE product_id IN ('.implode(',',$ids).') AND product_related_type='.$this->db->Quote($type));
$this->db->query();
$ids=array();
}
if(!empty($id)){
$this->db->setQuery($insert.implode('),(',$values).')');
$this->db->query();
}
$totalValid=0;
$values=array();
}
}
}
}
if(!empty($ids)){
$this->db->setQuery('DELETE FROM '.hikashop_table('product_related').' WHERE product_id IN ('.implode(',',$ids).') AND product_related_type='.$this->db->Quote($type));
$this->db->query();
}
if(count($values)){
$this->db->setQuery($insert.implode('),(',$values).')');
$this->db->query();
}
}
to:
function _insertRelated(&$products,$type='related'){
$values = array();
$totalValid=0;
$insert = 'INSERT IGNORE INTO '.hikashop_table('product_related').' (`product_related_id`,`product_related_type`,`product_id`,`product_related_ordering`) VALUES (';
$ids=array();
foreach($products as $product){
if(!isset($product->$type) && empty($product->hikashop_update)){
//copy files from template if any
if(@$product->product_type!='variant' && !empty($this->template->$type)){
$i = 0;
foreach($this->template->$type as $id){
$value = array((int)$id,$this->db->Quote($type),$product->product_id,$i);
$values[] = implode(',',$value);
$totalValid++;
if( $totalValid && $totalValid%$this->perBatch == 0){
$this->db->setQuery($insert.implode('),(',$values).')');
$this->db->query();
$totalValid=0;
$values=array();
}
$i++;
}
}
}elseif(isset($product->$type)&&is_array($product->$type)){
$ids[] = (int)$product->product_id;
$i = 0;
foreach($product->$type as $k => $id){
if(!empty($id)){
$id = $this->_getRelated($id);
$product->{$type}[$k] = $id;
$value = array((int)$id,$this->db->Quote($type),$product->product_id,$i);
$values[] = implode(',',$value);
$totalValid++;
}
if( $totalValid && $totalValid%$this->perBatch == 0){
if(!empty($ids)){
$this->db->setQuery('DELETE FROM '.hikashop_table('product_related').' WHERE product_id IN ('.implode(',',$ids).') AND product_related_type='.$this->db->Quote($type));
$this->db->query();
$ids=array();
}
if(!empty($id)){
$this->db->setQuery($insert.implode('),(',$values).')');
$this->db->query();
}
$totalValid=0;
$values=array();
}
$i++;
}
}
}
if(!empty($ids)){
$this->db->setQuery('DELETE FROM '.hikashop_table('product_related').' WHERE product_id IN ('.implode(',',$ids).') AND product_related_type='.$this->db->Quote($type));
$this->db->query();
}
if(count($values)){
$this->db->setQuery($insert.implode('),(',$values).')');
$this->db->query();
}
}
in the file administrator/components/com_hikashop/helpers/import.php and that should allow the import to support it.