Вот такие данные отправляются в Модель при создании товара стандартным контроллером:
Array
(
[product_description] => Array
(
[1] => Array
(
[name] => Название товара
[seo_h1] => HTML-тег H1
[seo_title] => HTML-тег Title
[meta_keyword] =>
[meta_description] =>
[description] =>
Описание html
- asdsa
- afsdf
- asdfs
Вот такие данные отправляются в Модель при создании категории стандартным контроллером:
Array
(
[category_description] => Array
(
[1] => Array
(
[name] => Название категории
[seo_h1] =>
[seo_title] =>
[meta_keyword] =>
[meta_description] =>
[description] =>
)
[2] => Array
(
[name] => Название категории ENG
[seo_h1] =>
[seo_title] =>
[meta_keyword] =>
[meta_description] =>
[description] =>
)
)
[parent_id] => 20
[filter] =>
[category_store] => Array
(
[0] => 0
)
[keyword] => category_url
[image] => data/demo/htc_logo.jpg
[top] => 1
[column] => 1
[sort_order] => 0
[status] => 1
[category_layout] => Array
(
[0] => Array
(
[layout_id] =>
)
)
)
Вот такие данные отправляются в Модель при создании производителя стандартным контроллером:
Array
(
[name] => Название производителя
[manufacturer_store] => Array
(
[0] => 0
)
[keyword] => manuf_url
[image] => data/demo/apple_logo.jpg
[sort_order] => 7
[manufacturer_description] => Array
(
[1] => Array
(
[seo_h1] => Название производителя h1
[seo_title] =>
[meta_keyword] =>
[meta_description] =>
[description] =>
)
[2] => Array
(
[seo_h1] => Название производителя h1 eng
[seo_title] =>
[meta_keyword] =>
[meta_description] =>
[description] =>
)
)
)
Пример кода для создания производителя:
// Допустим ранее мы уже получили массив с названиями производителей, подключили модель и перевели бабушки через дорогу.
foreach($manufacturers as $v){
if(!strlen($v)){continue;} // Ну а вдруг..
$ta = array(); // ta это типа tempArray
$ta['name'] = $v;
$ta['image'] = "";
$ta['keyword'] = "";
$ta['sort_order'] = $v;
$ta['manufacturer_store'] = array(0);
$description = array(
'seo_h1' => $v,
'seo_title' => "",
'meta_keyword' => "",
'meta_description' => "",
'description' => "");
$ta['manufacturer_description'] = array('1' => $description); //Если у нас языков больше чем 1, то надо будет еще для них добавить
$this->model_catalog_manufacturer->addManufacturer($ta);
}
Пример кода для создания товара:
// Допустим ранее мы уже получили массив со всеми данными товара, подключили модель и повесили во дворе скворечник.
foreach ($tovar_raw_data as $k=>$row) {
if(!strlen($row['name'])){
continue;
}
$ta = array();
$product_description = array(
'name' => $row['name'],
'seo_h1' => '',
'seo_title' => '',
'meta_keyword' => '',
'meta_description' => '',
'description' => $row['description_text'],
'tag' => ''
);
$ta['product_description'] = Array(1 => $product_description);
$ta['model'] = $row['art'];
$ta['sku'] = '';
$ta['upc'] = $row['id'];
$ta['ean'] = "";
$ta['jan'] = "";
$ta['isbn'] = '';
$ta['mpn'] = '';
$ta['stock_status_id'] = 5;
$ta['location'] = '';
$ta['price'] = 0;
$ta['date_available'] = date("Y-m-d");
$ta['tax_class_id'] = '';
$ta['quantity'] = $row['ostatki'];
$ta['minimum'] = 1;
$ta['subtract'] = 1;
$ta['shipping'] = 1;
$ta['keyword'] = '';
if(strlen($row['image']) > 5){
$ta['image'] = $this->uploadImageCTGO($row['image']); // Этот метод описан в резделе "Полезные функции (методы)"
}else{
$ta['image'] = "";
}
$ta['length'] = '';
$ta['width'] = '';
$ta['height'] = '';
$ta['length_class_id'] = 1;
$ta['weight'] = '1';
$ta['weight_class_id'] = 1;
$ta['status'] = 1;
$ta['sort_order'] = 1;
$ta['manufacturer_id'] = $this->getManufacturerIdByName($row['tm']); // Этот метод описан в резделе "Полезные функции (методы)"
$ta['main_category_id'] = $this->getCateroryIdByName($row['vid']); // Этот метод описан в резделе "Полезные функции (методы)"
$ta['product_store'] = array(0);
$ta['related'] = '';
$ta['option'] = '';
$ta['points'] = '';
$ta['product_reward'] = array(1=>array('points'=>0));
$ta['product_layout'] = array(1=>array('layout_id'=>0));
$this->model_catalog_product->addProduct($ta);
//break;
}
Полезные функции (методы), которые встречаются в примерах:
Перевод через Яндекс.Переводчик API. Ксати, вот еще Пример перевода с помощью Yandex Translate API.
public $translated = array(); // К счастью Яндекс ограничивает бесплатный доступ, поэтому оптимизируем код чтобы не делать лишних запросов
public function yTranslate($string){
$cache_key = md5($string);
if(array_key_exists($cache_key, $this->translated)){
return $this->translated[$cache_key];
}
$yKey = "--ВАШ КЛЮЧ API--";
$YT_link = "https://translate.yandex.net/api/v1.5/tr.json/translate?key=".$yKey."&text=%s&lang=ru-en";
$ytranslate = json_decode(file_get_contents(sprintf($YT_link, $string)), true);
if($ytranslate['code'] == 200){
$this->translated[$cache_key] = $ytranslate['text'][0];
return $ytranslate['text'][0];
}else{
return $string;
}
}
Получить ID производителя по его имени
public function getManufacturerIdByName($name){
$result = $this->db->query("SELECT manufacturer_id FROM oc_manufacturer WHERE name = '".trim($name)."' LIMIT 1");
if($result->num_rows){
$manufacturer_id = $result->row['manufacturer_id'];
}else{
$manufacturer_id = 0;
}
return $manufacturer_id;
}
Получить ID категории по ее имени
public function getCateroryIdByName($name){
$result = $this->db->query("SELECT category_id FROM oc_category_description WHERE name = '".trim($name)."' ORDER BY language_id LIMIT 1");
if($result->num_rows){
$category_id = $result->row['category_id'];
}else{
$category_id = 0;
}
return $category_id;
}
Загрузка картинок
public function uploadImageCTGO($image_addr){
$servdir = $_SERVER['DOCUMENT_ROOT'];
$hashName = md5($image_addr);
$pathinfo = pathinfo($image_addr);
$dir = "/image/data/parce_img/";
if(!empty($pathinfo['extension'])){
$new_filename = $dir.$hashName.".".$pathinfo['extension'];
if(!file_exists($servdir.$new_filename)){
if(!file_exists($servdir.$dir)){
mkdir($servdir.$dir, 0755);
}
try{
$content = file_get_contents($image_addr);
}catch(Exception $e){
$content = false;
}
if($content){
$fp = fopen($servdir.$new_filename, "w");
fwrite($fp, $content);
fclose($fp);
return substr($new_filename, strlen("/image/"));
}
}else{
return substr($new_filename, strlen("/image/"));
}
}
}
Транслитизация URL
public function rus2translit($string) {
$converter = array(
'а' => 'a', 'б' => 'b', 'в' => 'v',
'г' => 'g', 'д' => 'd', 'е' => 'e',
'ё' => 'e', 'ж' => 'zh', 'з' => 'z',
'и' => 'i', 'й' => 'y', 'к' => 'k',
'л' => 'l', 'м' => 'm', 'н' => 'n',
'о' => 'o', 'п' => 'p', 'р' => 'r',
'с' => 's', 'т' => 't', 'у' => 'u',
'ф' => 'f', 'х' => 'h', 'ц' => 'c',
'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch',
'ь' => '\'', 'ы' => 'y', 'ъ' => '\'',
'э' => 'e', 'ю' => 'yu', 'я' => 'ya',
'А' => 'A', 'Б' => 'B', 'В' => 'V',
'Г' => 'G', 'Д' => 'D', 'Е' => 'E',
'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z',
'И' => 'I', 'Й' => 'Y', 'К' => 'K',
'Л' => 'L', 'М' => 'M', 'Н' => 'N',
'О' => 'O', 'П' => 'P', 'Р' => 'R',
'С' => 'S', 'Т' => 'T', 'У' => 'U',
'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C',
'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch',
'Ь' => '\'', 'Ы' => 'Y', 'Ъ' => '\'',
'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya',
);
return strtr($string, $converter);
}
public function str2url($str) {
$str = $this->rus2translit($str);
$str = strtolower($str);
$str = preg_replace('~[^-a-z0-9_]+~u', '-', $str);
$str = trim($str, "-");
return $str;
}
Приемы при разборе файлов:
// Пример загрузки файла
$servdir = $_SERVER['DOCUMENT_ROOT'];
$fileFROMxml = "/image/StarKids.xml";
$fileFROMcsv = "/image/tovar.csv";
$dataFROMxml_raw = json_decode(json_encode(simplexml_load_string(file_get_contents($servdir.$fileFROMxml))), true); // XML в массив
$dataFROMcsv_raw = explode("|||||",file_get_contents($servdir.$fileFROMcsv)); // CSV в массив
Вот такие данные отправляются в Модель (помимо id опции) при обновлении опции стандартным контроллером:
Array
(
[option_description] => Array
(
[1] => Array
(
[name] => Размер
)
)
[type] => select
[sort_order] => 0
[option_value] => Array
(
[0] => Array
(
[option_value_id] => 81
[option_value_description] => Array
(
[1] => Array
(
[name] => 7
)
)
[image] => no_image.jpg
[sort_order] => 7
)
[1] => Array
(
[option_value_id] => 74
[option_value_description] => Array
(
[1] => Array
(
[name] => 11
)
)
[image] => no_image.jpg
[sort_order] => 15
)
[2] => Array
(
[option_value_id] => 73
[option_value_description] => Array
(
[1] => Array
(
[name] => 10.5
)
)
[image] => no_image.jpg
[sort_order] => 14
)
)
)
Создать опцию
// Формируем массив
$option_data = array(
"option_description" => array(
1 => array("name" => "Размер")
),
"type" => "select",
"sort_order" => 1,
"option_value" => array(),
);
// Получаем данные каким-то образом
$query = "SELECT DISTINCT size FROM catalog_1c_codes ORDER BY size";
$opt_data = $this->db->query($query);
foreach($opt_data->rows as $row){
$option_data['option_value'][] = array(
"option_value_description" => array(
1 => array(
"name" => $row['size']
),
3 => array(
"name" => $row['size']
)
),
"image" => "no_image.jpg",
"sort_order" => 0
);
}
// Подключаем модель и используем ее по назначению
$this->load->model('catalog/option');
$OPTION_ID = 14;
$this->model_catalog_option->editOption($OPTION_ID, $option_data);
Вот такие данные отправляются в Модель ($this->model_sale_customer->addCustomer($this->request->post);) при создании покупателя стандартным контроллером (admin/index.php?route=sale/customer/insert):
Array
(
[firstname] => Имя, отчество
[lastname] => Фамиллия
[email] => email@mail.ru
[telephone] => телефон
[fax] => Факс
[password] => пароль
[confirm] => пароль
[newsletter] => 0
[customer_group_id] => 1
[status] => 1
[address] => Array
(
[1] => Array
(
[address_id] =>
[firstname] => Имя
[lastname] => Фамиллия
[company] => Компания
[company_id] => Регномер компании
[tax_id] => инн
[address_1] => Адрес
[address_2] => Адрес (продолжение):
[city] => Город
[postcode] => Индекс
[country_id] => 10000 //Страна (Россия)
[zone_id] => 1028 //Регион
[default] => 1
)
)
)
/*------------*/
if(isset($data['ctgo'])){
$this->db->query("UPDATE oc_customer SET ip = '".$this->db->escape($data['ip'])."', date_added = '".$this->db->escape($data['date_added'])."' WHERE customer_id = '".$customer_id."'");
return $customer_id;
}
Структура таблицы oc_order_option
- order_option_id — АвтоИнкремент
- order_id — ID Заказа (для связи с таблицей
oc_order) - order_product_id — ID продукта (для связи с таблицей
oc_order_product) - product_option_id — для связи с таблицей
oc_product_option_valueпо столбцуproduct_option_id - product_option_value_id — для связи с таблицей
oc_product_option_valueпо столбцуproduct_option_value_id - name — Название опции
- value — Значение опции
- type — Тип опции
Комментарии (0)
Не писать ответ