По идеи он должен брать ID таваров и ID категории и выгружать товары только той категории которая выбрана
Пример:
protected function getProductAttributes( &$languages, $min_id, $max_id, $exportByCategory ) {
$sql = "SELECT da.product_id, ag.attribute_group_id, pa.attribute_id, pa.language_id, pa.text ";
$sql .= "FROM `".DB_PREFIX."product_attribute` pa ";
$sql .= "INNER JOIN `".DB_PREFIX."product_to_category` da ON pa.product_id=da.product_id ";
$sql .= "INNER JOIN `".DB_PREFIX."attribute` a ON a.attribute_id=pa.attribute_id ";
$sql .= "INNER JOIN `".DB_PREFIX."attribute_group` ag ON ag.attribute_group_id=a.attribute_group_id ";
if (isset($min_id) && isset($max_id)) {
$sql .= "WHERE product_id BETWEEN $min_id AND $max_id ";
}
$sql .= "ORDER BY da.product_id ASC, ag.attribute_group_id ASC, pa.attribute_id ASC";
$query = $this->db->query( $sql );
$texts = array();
foreach ($query->rows as $row) {
$product_id = $row['product_id'];
$attribute_group_id = $row['attribute_group_id'];
$attribute_id = $row['attribute_id'];
$language_id = $row['language_id'];
$text = $row['text'];
$texts[$product_id][$attribute_group_id][$attribute_id][$language_id] = $text;
}
$product_attributes = array();
foreach ($texts as $product_id=>$level1) {
foreach ($level1 as $attribute_group_id=>$level2) {
foreach ($level2 as $attribute_id=>$text) {
$product_attribute = array();
$product_attribute['product_id'] = $product_id;
$product_attribute['attribute_group_id'] = $attribute_group_id;
$product_attribute['attribute_id'] = $attribute_id;
$product_attribute['text'] = array();
foreach ($languages as $language) {
$language_id = $language['language_id'];
$code = $language['code'];
if (isset($text[$language_id])) {
$product_attribute['text'][$code] = $text[$language_id];
} else {
$product_attribute['text'][$code] = '';
}
}
$product_attributes[] = $product_attribute;
}
}
}
return $product_attributes;
}
protected function populateProductAttributesWorksheet( &$worksheet, &$languages, $default_language_id, &$box_format, &$text_format, $min_id=null, $max_id=null, $exportByCategory ) {
// Set the column widths
$j = 0;
$worksheet->getColumnDimensionByColumn($j++)->setWidth(strlen('product_id')+1);
$worksheet->getColumnDimensionByColumn($j++)->setWidth(max(strlen('categories'),12)+1);
if ($this->config->get( 'export_import_settings_use_attribute_group_id' )) {
$worksheet->getColumnDimensionByColumn($j++)->setWidth(strlen('attribute_group_id')+1);
} else {
$worksheet->getColumnDimensionByColumn($j++)->setWidth(max(strlen('attribute_group'),30)+1);
}
if ($this->config->get( 'export_import_settings_use_attribute_id' )) {
$worksheet->getColumnDimensionByColumn($j++)->setWidth(strlen('attribute_id')+1);
} else {
$worksheet->getColumnDimensionByColumn($j++)->setWidth(max(strlen('attribute'),30)+1);
}
foreach ($languages as $language) {
$worksheet->getColumnDimensionByColumn($j++)->setWidth(max(strlen('text')+4,30)+1);
}
// The heading row and column styles
$styles = array();
$data = array();
$i = 1;
$j = 0;
$data[$j++] = 'product_id';
if ($this->config->get( 'export_import_settings_use_attribute_group_id' )) {
$data[$j++] = 'attribute_group_id';
} else {
$styles[$j] = &$text_format;
$data[$j++] = 'attribute_group';
}
if ($this->config->get( 'export_import_settings_use_attribute_id' )) {
$data[$j++] = 'attribute_id';
} else {
$styles[$j] = &$text_format;
$data[$j++] = 'attribute';
}
foreach ($languages as $language) {
$styles[$j] = &$text_format;
$data[$j++] = 'text('.$language['code'].')';
}
$worksheet->getRowDimension($i)->setRowHeight(30);
$this->setCellRow( $worksheet, $i, $data, $box_format );
// The actual product attributes data
if (!$this->config->get( 'export_import_settings_use_attribute_group_id' )) {
$attribute_group_names = $this->getAttributeGroupNames( $default_language_id );
}
if (!$this->config->get( 'export_import_settings_use_attribute_id' )) {
$attribute_names = $this->getAttributeNames( $default_language_id );
}
$i += 1;
$j = 0;
$product_attributes = $this->getProductAttributes( $languages, $min_id, $max_id );
foreach ($product_attributes as $row) {
$worksheet->getRowDimension($i)->setRowHeight(13);
$data = array();
$data[$j++] = $row['product_id'];
if ($this->config->get( 'export_import_settings_use_attribute_group_id' )) {
$data[$j++] = $row['attribute_group_id'];
} else {
$data[$j++] = html_entity_decode($attribute_group_names[$row['attribute_group_id']],ENT_QUOTES,'UTF-8');
}
if ($this->config->get( 'export_import_settings_use_attribute_id' )) {
$data[$j++] = $row['attribute_id'];
} else {
$data[$j++] = html_entity_decode($attribute_names[$row['attribute_id']],ENT_QUOTES,'UTF-8');
}
foreach ($languages as $language) {
$data[$j++] = html_entity_decode($row['text'][$language['code']],ENT_QUOTES,'UTF-8');
}
$this->setCellRow( $worksheet, $i, $data, $this->null_array, $styles );
$i += 1;
$j = 0;
}
}