Вот такие данные отправляются в Модель при создании товара стандартным контроллером:
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)
Не писать ответ