Начало было тут. Задача была другая, Даниил написал вот такой код для экспорта/импорта изображений для каждой комбинации опций.
Можно с помощью модуля сделать так, чтобы можно было экспортировать/импортировать изображения для каждой комбинации опций.
Для экспорта "Комбинации опций" будет добавлено два новых поля:
- Position - позиция комбинации.
- Image - изображение, тот же принцип что и с импортом изображений товаров.
Чтобы это сделать:
1. Создайте новый файл:
/app/addons/my_changes/schemas/exim/product_combinations.post.php
2. Добавляем в этот файл новый код:<?php// Новая настройка “Путь к папке с изображениями”
$schema[‘options’][‘images_path’] = array(
‘title’ => ‘images_directory’,
‘description’ => ‘text_images_directory’,
‘type’ => ‘input’,
‘default_value’ => ‘exim/backup/images/’,
‘notes’ => __(‘text_file_editor_notice’, array(‘[href]’ => fn_url(‘file_editor.manage?active_section=files&selected_path=/’))),
);// Расширение схемы комбинаций, хитрая штука, которую сложно объяснить
$schema[‘export_fields’][‘Combination’][‘return_result’] = true;
// Новое поле “Position”, чтобы задавать порядок комбинаций
$schema[‘export_fields’][‘Position’] = array(
‘db_field’ => ‘position’,
);// Новое поле “Image”, чтобы экспортировать и импортировать изображения.
$schema[‘export_fields’][‘Image’] = array(
‘process_get’ => array(‘fn_my_exim_get_combination_image’, ‘#key’, ‘#row’ , ‘@images_path’, ‘#lang_code’),
‘process_put’ => array(‘fn_my_exim_put_combination_image’, ‘#this’, ‘#row’, ‘@images_path’),
‘linked’ => false, // this field is not linked during import-export
);return $schema;
/*
Функция экспорта изображений
$key - id товара
$row - строка с данными из CSV файла
$image_pat - настройка “Путь к папке с изображениями”
$lang_code - код языка
*/
function fn_my_exim_get_combination_image($key, $row, $image_path , $lang_code) {$image_id = db_get_field( "SELECT a.detailed_id FROM ?:images_links as a " . "LEFT JOIN ?:product_options_inventory as b ON b.combination_hash = a.object_id " . "WHERE b.combination = ?s AND a.object_type = ?s", $row['Combination'], 'product_option'); if (!empty($image_id)) { $path = fn_export_image($image_id, 'detailed', $image_path); return $path; } else { return ''; }
}
/*
Функция Импорта изображений
$image - Название или полный путь к изображению из колонки Images CSV
$row - строка с данными из CSV файла
$image_path - настройка “Путь к папке с изображениями”
*/
function fn_my_exim_put_combination_image($image, $row, $image_path) {$hash = db_get_field("SELECT combination_hash FROM ?:product_options_inventory WHERE combination = ?s AND product_id = ?i", $row['combination'], $row['product_id']); fn_import_images($image_path, '', $image, '0', 'M', $hash, 'product_option');
}
Теперь стоит другая задача.
Приходится врукопашную (не через генерацию комбинаций опций) добавлять некоторое количество комбинаций.
При этом у всех комбинаций порядок = 0. А если комбинаций больше десятка, да еще они в беспорядке расположены, неудобно работать с ними при необходимости корректировки остатков вручную, например.
Вот и вопрос: как доработать эту схему так, чтоб была возможность не только экспортировать порядок комбинаций, а и после правки csv импортировать их на место! А то у меня экспортировать после внесения предложенных Даниилом изменений получается, а вот импортировать — никак. А очень нужно!
:-(