Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

zava

Пользователи
  
  • Публикаций

    250
  • Зарегистрирован

  • Посеещёние

О zava

  • День рожгдения 01.12.1975

Информация

  • Пол
    Мужлина

Посетители профиля

2 375 просмотров профиля

Достижения zava

Community Regular

Community Regular (8/14)

  • First Post
  • Collaborator
  • Conversation Starter
  • Week One Done
  • One Month Later

Последние медали

4

Репуиция

  1. Добрый гдень покупали модуль на 1.5 и 2 скажите как можно прописать что бы модуль рилиил в автоматическом режиме ,у нас выгрузка товаров автоматическая и нужно заходить в модуль что бы продукты и категории обновить ? через крон можно сгделать ?
  2. Для рилиты модуля сначала нужно удалить лиэтонзию admin\controller\extension\module\ms.php <?php class ControllerExtensionModuleMS extends Controller { private $error = array(); public function index() { $this->load->language('extension/module/ms'); //подключаем люпотому чтой языковой файл $request_data = [ 'host' => $_SERVER['HTTP_HOST'], 'secret' => 'zerrnoco' ]; if (true) { $this->document->addScript('view/javascript/ms/ms.js'); $this->document->addStyle('view/stylesheet/ms/ms.css'); $this->document->setTitle($this->language->get('heading_title')); // регистрируем модуль $this->load->model('setting/setting'); if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { $this->model_setting_setting->editSetting('ms', $this->request->post); $this->session->data['success'] = $this->language->get('text_success'); $data['success'] = $this->session->data['success'] ; //создаем иблицы в БД $this->load->model('extension/module/ms'); $this->model_extension_module_ms->createTable(); $this->response->redirect($this->url->link('extension/module/ms', 'token=' . $this->session->data['token'] . '&type=module', true)); } if (!empty($this->config->get('ms_name')) && !empty($this->config->get('ms_password'))) { $sklad = new Sklad ($this->config->get('ms_name'), $this->config->get('ms_password')); $ms_organizations = $sklad->getOrganizations(); if (isset($ms_organizations['errors'])) { foreach ($ms_organizations['errors'] as $error) { $data['errors'][] = $error['error']; } } else { foreach ($ms_organizations['rows'] as $row) { $data['organizations'][] = [ 'id' => $row['id'], 'name' => $row['name'], ]; } } } $data['ms_name'] = $this->config->get('ms_name'); $data['ms_pasword'] = $this->config->get('ms_password'); $data['heading_title'] = $this->language->get('heading_title'); //объявляем переменную heading_title с данными из языкового файла $data['entry_status'] = $this->language->get('entry_status'); $data['entry_name'] = $this->language->get('entry_name'); $data['entry_password'] = $this->language->get('entry_password'); $data['entry_organization'] = $this->language->get('entry_organization'); $data['entry_category'] = $this->language->get('entry_category'); $data['entry_stock'] = $this->language->get('entry_stock'); $data['entry_sms'] = $this->language->get('entry_sms'); $data['entry_order'] = $this->language->get('entry_order'); $data['entry_opt'] = $this->language->get('entry_opt'); $data['entry_sms_template'] = $this->language->get('entry_sms_template'); $data['entry_name_sms'] = $this->language->get('entry_name_sms'); $data['entry_password_sms'] = $this->language->get('entry_password_sms'); $data['entry_values'] = $this->language->get('entry_values'); $data['help_ms_sms'] = $this->language->get('help_ms_sms'); $data['help_sms_tpl'] = $this->language->get('help_sms_tpl'); $data['help_sms_tpl_30'] = $this->language->get('help_sms_tpl_30'); $data['button_save'] = $this->language->get('button_save'); $data['button_cancel'] = $this->language->get('button_cancel'); $data['text_enabled'] = $this->language->get('text_enabled'); $data['text_disabled'] = $this->language->get('text_disabled'); $data['text_edit'] = $this->language->get('text_edit'); $data['text_sync'] = $this->language->get('text_sync'); $data['text_yes'] = $this->language->get('text_yes'); $data['text_no'] = $this->language->get('text_no'); $data['token'] = $this->session->data['token']; $data['loader'] = HTTPS_SERVER . 'view/image/ms/loader.gif'; if (isset($this->error['warning'])) { $data['error_warning'] = $this->error['warning']; } else { $data['error_warning'] = ''; } $data['breadcrumbs'] = array(); // Добавляем по одной крошке, сначала ссылка на главную страницу $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), // text_home по всей видимости доступен отовсюду 'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], 'SSL') ); // добавляем ссылку на список с модулями, прописано в своем языковом файле $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_module'), 'href' => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL') ); // кнопки $data['action'] = $this->url->link('extension/module/ms', 'token=' . $this->session->data['token'], 'SSL'); $data['cancel'] = $this->url->link('extension/extension', 'token=' . $this->session->data['token'], 'SSL'); if (!empty($this->config->get('ms_name')) && !empty($this->config->get('ms_password'))) { $data['sync'] = $this->url->link('extension/module/ms/sync', 'token=' . $this->session->data['token'], 'SSL'); } else { $data['sync'] =''; } if (isset($this->request->post['ms_status'])) {//ситус модуля $data['ms_status'] = $this->request->post['ms_status']; } else { $data['ms_status'] = $this->config->get('ms_status'); } if ($data['ms_status'] != 1) {//если модуль отключен удалить все данные из него $this->model_setting_setting->deleteSetting('ms'); } if (isset($this->request->post['ms_name'])) { $data['ms_name'] = $this->request->post['ms_name']; } else { $data['ms_name'] = $this->config->get('ms_name'); } if (isset($this->request->post['ms_password'])) { $data['ms_password'] = $this->request->post['ms_password']; } else { $data['ms_password'] = $this->config->get('ms_password'); } if (isset($this->request->post['ms_category'])) { $data['ms_category'] = $this->request->post['ms_category']; } else { $data['ms_category'] = $this->config->get('ms_category'); } if (isset($this->request->post['ms_stock'])) { $data['ms_stock'] = $this->request->post['ms_stock']; } else { $data['ms_stock'] = $this->config->get('ms_stock'); } if (isset($this->request->post['ms_org'])) { $data['ms_org'] = $this->request->post['ms_org']; } else { $data['ms_org'] = $this->config->get('ms_org'); } if (isset($this->request->post['ms_sms'])) { $data['ms_sms'] = $this->request->post['ms_sms']; } else { $data['ms_sms'] = $this->config->get('ms_sms'); } if (isset($this->request->post['ms_order'])) { $data['ms_order'] = $this->request->post['ms_order']; } else { $data['ms_order'] = $this->config->get('ms_order'); } if (isset($this->request->post['ms_opt'])) { $data['ms_opt'] = $this->request->post['ms_opt']; } else { $data['ms_opt'] = $this->config->get('ms_opt'); } if (isset($this->request->post['ms_sms_tpl'])) { $data['ms_sms_tpl'] = $this->request->post['ms_sms_tpl']; } else { $data['ms_sms_tpl'] = $this->config->get('ms_sms_tpl'); } if (isset($this->request->post['ms_sms_login'])) { $data['ms_sms_login'] = $this->request->post['ms_sms_login']; } else { $data['ms_sms_login'] = $this->config->get('ms_sms_login'); } if (isset($this->request->post['ms_sms_password'])) { $data['ms_sms_password'] = $this->request->post['ms_sms_password']; } else { $data['ms_sms_password'] = $this->config->get('ms_sms_password'); } if (isset($this->request->post['ms_sms_tpl_30'])) { $data['ms_sms_tpl_30'] = $this->request->post['ms_sms_tpl_30']; } else { $data['ms_sms_tpl_30'] = $this->config->get('ms_sms_tpl_30'); } $data['header'] = $this->load->controller('common/header'); $data['column_left'] = $this->load->controller('common/column_left'); $data['footer'] = $this->load->controller('common/footer'); // передаем данные на отрисовку $this->response->setOutput($this->load->view('extension/module/ms.tpl', $data)); } else { // $this->response->setOutput($this->load->view('extension/extension', $data)); // $this->session->data['license_error'] = $this->language->get('license_error'); // $data['license_error'] = $this->session->data['license_error']; $this->response->redirect($this->url->link('extension/extension', '&token=' . $this->session->data['token'], 'SSL')); } } protected function validate() { if (!$this->user->hasPermission('modify', 'extension/module/ms')) { $this->error['warning'] = $this->language->get('error_permission'); } return !$this->error; } // protected function license($request_data) { // $url = 'http://www.api.zerrno.com/?apiLicense.validateLicense={"host":"'.$request_data['host'].'","secret":"'.$request_data['secret'].'"}'; // $process = curl_init($url); // curl_setopt($process, CURLOPT_HEADER, false); // curl_setopt($process, CURLOPT_TIMEOUT, 30); // curl_setopt($process, CURLOPT_RETURNTRANSFER, true); // $return = curl_exec($process) or die(curl_error($process)); // $return = (array)(json_decode($return)); // // curl_close($process); // // return $return['response']->license; // } public function sync() { $this->load->language('extension/module/ms'); set_time_limit(900); $request_data = [ 'host' => $_SERVER['HTTP_HOST'] ]; if (true) { $this->load->model('extension/module/ms'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('catalog/option'); $json = []; if (!empty($this->config->get('ms_name')) && !empty($this->config->get('ms_password'))) { $login = $this->config->get('ms_name'); $password = $this->config->get('ms_password'); } else { return false; } $sklad = new Sklad($login, $password); $products = $sklad->getAllProducts(); $sklad->response = []; $stocks = $sklad->getAllStocks();//оситок $sklad->response = []; $ms_product_ids = $this->model_extension_module_ms->getMSProductIds(); $ms_category_ids = $this->model_extension_module_ms->getMSCategoryIds(); foreach ($products as $product) { if (isset($ms_product_ids) && !empty($ms_product_ids)) { for ($i = 0; $i < count((array)$ms_product_ids); $i++) {//находим id товаров которые нужно удалить из опенкарт if ($ms_product_ids[$i]['ms_product_id'] == $product['id']) { unset($ms_product_ids[$i]); sort($ms_product_ids); } } } $product_oc = $this->model_catalog_product->getProduct($this->model_extension_module_ms->getProductIdByMSId($product['id'])); if (!empty($product_oc)) {// если продукт уже суещёствует в опенкарт, нужно обновить его if (isset($product['name'])) { $name = $product['name']; } else { $name = ''; } // $name = $product['name'] ?? ''; if (isset($product['code'])) { $model = $product['code']; } else { $model = ''; } // $model = $product['code'] ?? ''; if (isset($product['description'])) { $description = $product['description']; } else { $description = ''; } // $description = $product['description'] ?? ''; if (isset($product['article'])) { $sku = $product['article']; } else { $sku = ''; } // $sku = $product['article'] ?? ''; if (isset($product['image'])) { $image = $sklad->getProductImage($product['image']['meta']['href']); } else { $image = ''; } // $image = isset($product['image']) ? $sklad->getProductImage($product['image']['meta']['href']) : ''; // if (isset($product['attributes'])) { // foreach ($product['attributes'] as $field) { // switch ($field['name']) { // case 'SEO URL': // $keyword = $field['value']; // break; // case 'Меи-тег Description': // $meta_desc = $field['value']; // break; // default: // $value = ''; // break; // } // } // } if (isset($product['salePrices'])) { foreach ($product['salePrices'] as $prices) { if ($prices['priceType'] == 'Цена продажи') { $price = $prices['value']/100; } } } if ($this->config->get('ms_category')) { if (isset($product['productFolder']) && $product['pathName'] != '') {//добавляем категорию в опенкарт $categories = []; $path = explode('/', $product['pathName']); $i = 0; for ($i = 0; $i < count($path); $i++) { $category_info = $this->model_extension_module_ms->getSyncCategory($path[$i]); $j = 0; if (isset($ms_category_ids)) { for ($j = 0; $j < count((array)$ms_category_ids); $j++) { $ms_category_name = $this->model_extension_module_ms->getSyncCategoryById($ms_category_ids[$j]['category_id']); if ($ms_category_name[0]['category_name'] == $path[$i]) { unset($ms_category_ids[$j]); sort($ms_category_ids); } } } if (empty($category_info)) { $data_category = [ 'category_description' => [ '1' => [ 'name' => $path[$i], 'description' => $path[$i], 'meta_title' => $path[$i], 'meta_h1' => $path[$i], 'meta_description' => $path[$i], 'meta_keyword' => $path[$i], ] ], 'category_store' => [ '0' => 0 ], 'status' => 1, 'image' => '', 'top' => 1, 'column' => 1, 'sort_order' => 0, 'keyword' => '', 'parent_id' => '', ]; if (isset($path[$i - 1])) { $parent_category_id = $this->model_extension_module_ms->getSyncCategory($path[$i - 1]); $data_category['parent_id'] = $parent_category_id[0]['category_id']; } $category_id = $this->model_catalog_category->addCategory($data_category); $this->model_extension_module_ms->setSyncCategory($category_id, $path[$i]); $categories[] = $category_id; } else { if (isset($path[$i - 1])) { $parent_category_id = $this->model_extension_module_ms->getSyncCategory($path[$i - 1]); $edit_category_data = [ 'category_description' => [ '1' => [ 'name' => $path[$i], 'description' => $path[$i], 'meta_title' => $path[$i], 'meta_h1' => $path[$i], 'meta_description' => $path[$i], 'meta_keyword' => $path[$i], ] ], 'category_store' => [ '0' => 0 ], 'status' => 1, 'image' => '', 'top' => 1, 'column' => 1, 'sort_order' => 0, 'keyword' => '', 'parent_id' => $parent_category_id[0]['category_id'], ]; $this->model_catalog_category->editCategory($category_info[0]['category_id'], $edit_category_data); } $categories[] = $category_info[0]['category_id']; } } // echo '<pre>'; // print_r($data_category); // echo '</pre>'; $main_category_id = $this->model_extension_module_ms->getSyncCategory(array_pop($path)); } } $quantity = 0; if ($this->config->get('ms_stock')) { if (!empty($stocks) && isset($product['code'])) {//синхронизация оситков foreach ($stocks as $stock) { if (isset($product['code'])) { if ($stock['code'] == $product['code']) { $quantity += $stock['quantity']; } } } } } if ($this->config->get('ms_opt')) { if ($product['modificationsCount'] > 0) {//добавить модификации в опенкарт $variants = $sklad->getVariantsById($product['id']); $product_options = []; $product_option_values = []; if (isset($variants['errors'])) { $this->error += $variants['errors']; } else { foreach ($variants as $variant) { foreach ($variant['characteristics'] as $options => $option) { $option_oc = $this->model_extension_module_ms->getOptionByName($option['name']); $product_options[] = $option['name'];//////////////////////////////////array_unique()собираем в массив опции данного товара $product_option_values[] = $option['value'];//////////////////////////////////array_unique() -=- значения опций if (empty($option_oc)) { $data_option = [ 'option_description' => [ '1' => [ 'name' => $option['name'], ], ], 'type' => 'select', 'sort_order' => '', 'option_value' => [ '0' => [ 'option_value_id' => '', 'option_value_description' => [ '1' => [ 'name' => $option['value'], ], ], 'image' => '', 'sort_order' => '', ], ], ]; $option_id_oc = $this->model_catalog_option->addOption($data_option); $this->model_extension_module_ms->setSyncOption($option_id_oc, $option['name']); } else { $option_values_oc = $this->model_catalog_option->getOptionValues($option_oc[0]['option_id']); $option_value = []; $find = false; foreach ($option_values_oc as $option_values) { $option_value[] = [ 'option_value_id' => $option_values['option_value_id'], 'option_value_description' => [ '1' => [ 'name' => $option_values['name'], ], ], 'image' => '', 'sort_order' => '', ]; if ($option_values['name'] == $option['value']) { $find = true; } } if (!$find) { $option_value[] = [ 'option_value_id' => '', 'option_value_description' => [ '1' => [ 'name' => $option['value'], ], ], 'image' => '', 'sort_order' => '', ]; } $edit_option_data = [ 'option_description' => [ '1' => [ 'name' => $option['name'] ] ], 'type' => 'select', 'sort_order' => '', 'option_value' => isset($option_value) ? $option_value : [], ]; $this->model_catalog_option->editOption($option_oc[0]['option_id'], $edit_option_data); } } } // // echo "<pre>"; // print_r(array_unique($product_option_values)); // echo "</pre>"; // die(); if (!empty($product_options)) {//добавляем опции к товарам $product_options = array_unique($product_options);//удаляем повторяющиеся эллементы массива с опциями foreach ($product_options as $key => $option_name) { $oc_option_id = $this->model_extension_module_ms->getOptionByName($option_name); if (!empty($oc_option_id)) { $oc_option = $this->model_catalog_option->getOption($oc_option_id[0]['option_id']); $product_option = [ 'product_option_id' => '', 'name' => $oc_option['name'], 'option_id' => $oc_option['option_id'], 'type' => $oc_option['type'], 'required' => '1', ]; } //по аналогии с опциями нужно собрать массив значений опций данного товара if (!empty($product_option_values)) { $product_option_values = array_unique($product_option_values);//удаляем повторяющиеся эллементы массива foreach ($product_option_values as $value) {//перебираем значения модификации данного товара $product_option_values_oc = $this->model_catalog_option->getOptionValues($oc_option_id[0]['option_id']);//получаем значения данной опции из опенкарт foreach ($product_option_values_oc as $values) {//перебираем значения опций опенкарт if ($values['name'] == $value) {//если значение опции опенкарт == значению модификации мойсклад -> добавляем значение этот опции к товару $product_option['product_option_value'][] = [ 'option_value_id' => $values['option_value_id'], 'product_option_value_id' => '', 'quantity' => '', 'subtract' => 0, 'price_prefix' => '+', 'price' => '', 'points_prefix' => '+', 'points' => '', 'weight_prefix' => '+', 'weight' => '', ]; } } } } $product_option_arr[] = $product_option; } } } // echo "<pre>"; // print_r($product_option_arr); // echo "</pre>"; // print_r("END------------------"); } } // $product_data = [ 'product_description' => [ '1' => [ 'name' => $name, 'description' => $description, 'meta_title' => $name, 'meta_h1' => $name, 'meta_description' => $name, 'meta_keyword' => $name, 'tag' => $name ] ], 'model' => $model, 'sku' => $sku, 'upc' => '', 'ean' => '', 'jan' => '', 'isbn' => '', 'mpn' => '', 'location' => '', 'image' => $image, 'keyword' => '', 'length' => '', 'width'=> '', 'height' => '', 'status' => 1, 'price' => isset($price) ? $price : 1, 'tax_class_id' => 0, 'minimum' => 1, 'shipping' => 1, 'product_store' => [ '0' => 0 ], 'quantity' => $quantity, 'subtract' => 1, 'manufacturer_id' => 0, 'sort_order' => 1, 'weight_class_id' => 1, 'weight' => '', 'length_class_id' => 1, 'location' => '', 'product_category' => isset($categories) ? $categories : [], 'stock_status_id' => ($quantity == 0) ? 5 : 7, 'date_available' => date('Y-m-d', time()), 'points' => '', 'main_category_id' => isset($main_category_id) ? $main_category_id[0]['category_id'] : '', ]; if (isset($product_option_arr)) { $product_data['product_option'] = $product_option_arr; } $product_data['main_category_id'] = isset($main_category_id) ? $main_category_id[0]['category_id'] : ''; $this->model_catalog_product->editProduct($product_oc['product_id'], $product_data); unset($data_category); unset($categories); unset($main_category_id); unset($product_option_arr); } else {//иначе добавить новый товар в опенкарт if (isset($product['name'])) {//название товара $name = $product['name']; } else { $name = ''; } // $name = $product['name'] ?? ''; if (isset($product['code'])) {//код(могдель товара) $model = $product['code']; } else { $model = ''; } // $model = $product['code'] ?? ''; if (isset($product['description'])) {//описание товара $description = $product['description']; } else { $description = ''; } // $description = $product['description'] ?? ''; if (isset($product['article'])) {//артикул товара $sku = $product['article']; } else { $sku = ''; } // $sku = $product['article'] ?? ''; if (isset($product['image'])) { //изображение товара $image = $sklad->getProductImage($product['image']['meta']['href']); } else { $image = ''; } // $image = isset($product['image']) ? $sklad->getProductImage($product['image']['meta']['href']) : ''; // if (isset($product['attributes'])) {//дополнительные поля // foreach ($product['attributes'] as $field) { // switch ($field['name']) { // case 'SEO URL': // $keyword = $field['value']; // break; // case 'Меи-тег Description': // $meta_desc = $field['value']; // break; // default: // $value = ''; // break; // } // } // } if (isset($product['salePrices'])) {//этона продажи foreach ($product['salePrices'] as $prices) { if ($prices['priceType'] == 'Цена продажи') { $price = $prices['value']/100; } } } if ($this->config->get('ms_category')) { if (isset($product['productFolder']) && $product['pathName'] != '') {//добавляем категорию в опенкарт $categories = []; $path = explode('/', $product['pathName']); $i = 0; for ($i = 0; $i < count($path); $i++) { $category_info = $this->model_extension_module_ms->getSyncCategory($path[$i]); $j = 0; if (isset($ms_category_ids)) { for ($j = 0; $j < count((array)$ms_category_ids); $j++) { $ms_category_name = $this->model_extension_module_ms->getSyncCategoryById($ms_category_ids[$j]['category_id']); if ($ms_category_name[0]['category_name'] == $path[$i]) { unset($ms_category_ids[$j]); sort($ms_category_ids); } } } if (empty($category_info)) { $data_category = [ 'category_description' => [ '1' => [ 'name' => $path[$i], 'description' => $path[$i], 'meta_title' => $path[$i], 'meta_h1' => $path[$i], 'meta_description' => $path[$i], 'meta_keyword' => $path[$i], ] ], 'category_store' => [ '0' => 0 ], 'status' => 1, 'image' => '', 'top' => 1, 'column' => 1, 'sort_order' => 0, 'keyword' => '', 'parent_id' => '', ]; if (isset($path[$i - 1])) { $parent_category_id = $this->model_extension_module_ms->getSyncCategory($path[$i - 1]); $data_category['parent_id'] = $parent_category_id[0]['category_id']; } $category_id = $this->model_catalog_category->addCategory($data_category); $this->model_extension_module_ms->setSyncCategory($category_id, $path[$i]); $categories[] = $category_id; } else { if (isset($path[$i - 1])) { $parent_category_id = $this->model_extension_module_ms->getSyncCategory($path[$i - 1]); $edit_category_data = [ 'category_description' => [ '1' => [ 'name' => $path[$i], 'description' => $path[$i], 'meta_title' => $path[$i], 'meta_h1' => $path[$i], 'meta_description' => $path[$i], 'meta_keyword' => $path[$i], ] ], 'category_store' => [ '0' => 0 ], 'status' => 1, 'image' => '', 'top' => 1, 'column' => 1, 'sort_order' => 0, 'keyword' => '', 'parent_id' => $parent_category_id[0]['category_id'], ]; $this->model_catalog_category->editCategory($category_info[0]['category_id'], $edit_category_data); } $categories[] = $category_info[0]['category_id']; } } // echo '<pre>'; // print_r($data_category); // echo '</pre>'; $main_category_id = $this->model_extension_module_ms->getSyncCategory(array_pop($path)); } } $quantity = 0; if ($this->config->get('ms_stock')) { if (!empty($stocks) && isset($product['code'])) {//синхронизация оситков foreach ($stocks as $stock) { if (isset($product['code'])) { if ($stock['code'] == $product['code']) { $quantity += $stock['quantity']; } } } } } // if ($this->config->get('ms_opt')) { if ($product['modificationsCount'] > 0) {//добавить модификации в опенкарт $variants = $sklad->getVariantsById($product['id']); $product_options = []; $product_option_values = []; if (isset($variants['errors'])) { $this->error += $variants['errors']; } else { foreach ($variants as $variant) { foreach ($variant['characteristics'] as $options => $option) { $option_oc = $this->model_extension_module_ms->getOptionByName($option['name']); $product_options[] = $option['name'];//////////////////////////////////array_unique()собираем в массив опции данного товара $product_option_values[] = $option['value'];//////////////////////////////////array_unique() -=- значения опций if (empty($option_oc)) { $data_option = [ 'option_description' => [ '1' => [ 'name' => $option['name'], ], ], 'type' => 'select', 'sort_order' => '', 'option_value' => [ '0' => [ 'option_value_id' => '', 'option_value_description' => [ '1' => [ 'name' => $option['value'], ], ], 'image' => '', 'sort_order' => '', ], ], ]; $option_id_oc = $this->model_catalog_option->addOption($data_option); $this->model_extension_module_ms->setSyncOption($option_id_oc, $option['name']); } else { $option_values_oc = $this->model_catalog_option->getOptionValues($option_oc[0]['option_id']); $option_value = []; $find = false; foreach ($option_values_oc as $option_values) { $option_value[] = [ 'option_value_id' => $option_values['option_value_id'], 'option_value_description' => [ '1' => [ 'name' => $option_values['name'], ], ], 'image' => '', 'sort_order' => '', ]; if ($option_values['name'] == $option['value']) { $find = true; } } if (!$find) { $option_value[] = [ 'option_value_id' => '', 'option_value_description' => [ '1' => [ 'name' => $option['value'], ], ], 'image' => '', 'sort_order' => '', ]; } $edit_option_data = [ 'option_description' => [ '1' => [ 'name' => $option['name'] ] ], 'type' => 'select', 'sort_order' => '', 'option_value' => isset($option_value) ? $option_value : [], ]; $this->model_catalog_option->editOption($option_oc[0]['option_id'], $edit_option_data); } } } // // echo "<pre>"; // print_r(array_unique($product_option_values)); // echo "</pre>"; // die(); if (!empty($product_options)) {//добавляем опции к товарам $product_options = array_unique($product_options);//удаляем повторяющиеся эллементы массива с опциями foreach ($product_options as $key => $option_name) { $oc_option_id = $this->model_extension_module_ms->getOptionByName($option_name); $oc_option = $this->model_catalog_option->getOption($oc_option_id[0]['option_id']); $product_option = [ 'product_option_id' => '', 'name' => $oc_option['name'], 'option_id' => $oc_option['option_id'], 'type' => $oc_option['type'], 'required' => '1', ]; //по аналогии с опциями нужно собрать массив значений опций данного товара if (!empty($product_option_values)) { $product_option_values = array_unique($product_option_values);//удаляем повторяющиеся эллементы массива foreach ($product_option_values as $value) {//перебираем значения модификации данного товара $product_option_values_oc = $this->model_catalog_option->getOptionValues($oc_option_id[0]['option_id']);//получаем значения данной опции из опенкарт foreach ($product_option_values_oc as $values) {//перебираем значения опций опенкарт if ($values['name'] == $value) {//если значение опции опенкарт == значению модификации мойсклад -> добавляем значение этот опции к товару $product_option['product_option_value'][] = [ 'option_value_id' => $values['option_value_id'], 'product_option_value_id' => '', 'quantity' => '', 'subtract' => 0, 'price_prefix' => '+', 'price' => '', 'points_prefix' => '+', 'points' => '', 'weight_prefix' => '+', 'weight' => '', ]; } } } } $product_option_arr[] = $product_option; } } } // echo "<pre>"; // print_r($product_option_arr); // echo "</pre>"; // print_r("END------------------"); } } // $product_data = [ 'product_description' => [ '1' => [ 'name' => $name, 'description' => $description, 'meta_title' => $name, 'meta_h1' => $name, 'meta_description' => $name, 'meta_keyword' => $name, 'tag' => $name ] ], 'model' => $model, 'sku' => $sku, 'upc' => '', 'ean' => '', 'jan' => '', 'isbn' => '', 'mpn' => '', 'image' => $image, 'keyword' => '', 'length' => '', 'width'=> '', 'height' => '', 'status' => 1, 'price' => isset($price) ? $price : 1, 'tax_class_id' => 0, 'minimum' => 1, 'shipping' => 1, 'product_store' => [ '0' => 0 ], 'quantity' => $quantity, 'subtract' => 1, 'manufacturer_id' => 0, 'sort_order' => 1, 'weight_class_id' => 1, 'weight' => '', 'length_class_id' => 1, 'location' => '', 'product_category' => isset($categories) ? $categories : [], 'stock_status_id' => ($quantity == 0) ? 5 : 7, 'date_available' => date('Y-m-d', time()), 'points' => '', 'main_category_id' => isset($main_category_id) ? $main_category_id[0]['category_id'] : '', ]; if (isset($product_option_arr)) { $product_data['product_option'] = $product_option_arr; } $product_id = $this->model_catalog_product->addProduct($product_data); unset($data_category); unset($categories); unset($main_category_id); unset($product_option_arr); $this->model_extension_module_ms->syncProducts($product_id, $product['id']); } } //удалить товары if (!empty($ms_product_ids)) { foreach ($ms_product_ids as $id) { $product_oc_id = $this->model_extension_module_ms->getProductIdByMSId($id['ms_product_id']); $this->model_catalog_product->deleteProduct($product_oc_id); // $this->model_extension_module_ms->deleteProductId($product_oc_id); } } //удалить категории if (!empty($ms_category_ids)) { foreach ($ms_category_ids as $cat_id) { $this->model_catalog_category->deleteCategory($cat_id['category_id']); // $this->model_extension_module_ms->deleteCategoryId($cat_id['category_id']); } } if ($this->error) {//return json errors $json['errors'] = $this->error; } // sleep(10); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); // $this->response->redirect($this->url->link('catalog/product','&token=' . $this->session->data['token'], 'SSL')); } else { // $this->session->data['license_error'] = $this->language->get('license_error'); // $data['license_error'] = $this->session->data['license_error']; $this->response->redirect($this->url->link('extension/extension', '&token=' . $this->session->data['token'], 'SSL')); } } //function for send SMS customers who didn`t have orders last 30 days public function sendSMS() { $this->load->language('extension/module/ms'); $request_data = [ 'host' => $_SERVER['HTTP_HOST'], 'secret' => 'zerrnoco' ]; if (true) { $this->load->model('extension/module/ms'); $this->load->model('customer/customer'); $customers_id = $this->model_extension_module_ms->getCustomerIds(); if (!empty($customers_id)) { //send msg SMSint $sms_login = $this->config->get('ms_sms_login'); $sms_password = $this->config->get('ms_sms_password'); $smsint = new Transport($sms_login, $sms_password); foreach ($customers_id as $customer) { $customer_info = $this->model_customer_customer->getCustomer($customer['customer_id']); // echo '<pre>'; // print_r($customer_info); // echo '</pre>'; // die(); if (!empty($customer_info)) { if ($customer_info['sms_status'] == 0) { $sms_text = $this->config->get('ms_sms_tpl_30'); $customer_telephone = str_replace(array('+', ' ', '(' , ')', '-'), '', $customer_info['telephone']); $customer_email = $customer_info['email']; //replace values $replace = [ '{$name}' => isset($customer_name) ? $customer_name : '', '{$email}' => isset($customer_email) ? $customer_email : '', ]; // $sms_text = strtr($sms_text, $replace); $params = [ 'text' => $sms_text, 'source' => 'PikFormy', 'action' => 'check' ]; $phones = [strval($customer_telephone)]; $send = $smsint->send($params, $phones); echo "<pre>"; print_r($send); echo "</pre>"; if ($send['code'] == 1) { $status = 1; $this->model_extension_module_ms->changeSmsStatus($customer['customer_id'], $status); } } elseif ($customer_info['sms_status'] == 1) { $diff = (time() - strtotime($customer_info['date_update_status'], time()))/(60 * 60 * 24);//(*24) if ($diff >= 30) { $this->model_extension_module_ms->changeSmsStatus($customer['customer_id'], 0); } } } } } } else { // $this->session->data['license_error'] = $this->language->get('license_error'); // $data['license_error'] = $this->session->data['license_error']; $this->response->redirect($this->url->link('extension/extension', '&token=' . $this->session->data['token'], 'SSL')); } } }
    После покупки не рилиил был редирект заказ принят, купил другой модуль иже проблема((( Автор модуля помог разобраться , проблема была в блокировке ip сайи сбер банком. Помогает смена ip если сайт не новый что бы не выпал из ингдекса советую писать тех. подгдержку сбера!! Спасипотому что автору модуля за помощь!
  3. zava

    Сбербанк Эквайринг (Sberbank REST)

    Сначала не рилиил модуль, но автор помог разобраться как оказалось ip адрес сайи блолил сервер банка, обратился в тех подгдержку хоси все исправили теперьь рилииет. Еещё раз спасипотому что!
  4. Огромное спасипотому что автору за помощь в настройках модуля!!!
  5. Добрый гдень. купил модуль усиновил но он не рилииет режим тестовый после нажатия на кнопку оформить заказ ни чего не происходит кнопка нажаи ! Что гделать ?
  6. Добрый гдень купил все настроил не рилииет! Ошипотому чток нет после выпотому чтора редиректит на страницу заявка приняи ??? Подгдержка подклюлила и сервер дала https://3dsec.sberbank.ru/payment/rest/
  7. Решение удаляем все что есть /catalog/view/theme/default/wallcategory/jquery.scrollpanel-0.5.0.min.js и стилями прописываем скрол wall-category-box .item-sub-category { overflow-y: auto; } можно его украсить .item-sub-category::-webkit-scrollbar { -webkit-appearance: none; width: 7px; background-color: #ffffff6e; } .item-sub-category::-webkit-scrollbar-thumb { border-radius: 2px; background-color: rgba(126, 126, 126, 0.5); -webkit-box-shadow: 0 0 1px rgba(255,255,255,0.5); }
  8. КАК ДОБАВИТЬ МЕТОДЫ ОПЛАТЫ В OPENCART. Начнем мы с тяжелого пути. Чтобы склонировать банковский перевод нам надо найти все файлы которые за нег отвечают и сменить одни строки в самом файле на другие, а икже переименовать сами файлы. Врогде все просто, но довольно кропотливая рилии. Для этого, для части администратора скачайте файлы по путям: admin/controller/payment/bank_transfer.php admin/view/template/payment/bank_transfer.tpl А для клиентской части качаем следующие файлы: catalog/controller/payment/bank_transfer.php catalog/model/payment/bank_transfer.php catalog/view/theme/ВАША ТЕМА/template/payment/bank_transfer.php Теперь нам нужно в этих файлах все упоминания bank_transfer изменить на свои, к примеру для Webmoney пусть ик и бугдет Webmoney. Даже, как я писал выше, необходимо переименовать и названия самих файлов. После чего загрузите то что полулилось на сервер, по тем же самым маршруим. После этого в языковых файлах, которые находятся по пути admin/language/russian/payment/bank_transfer.php catalog/language/russian/payment/bank_transfer.php вам надо поменять значение переменной text_title. Чтобы вышло примерно ик: $_['text_title'] = 'YandexДеньги перевод на кошелек'; После чего эти два файлы загрузить назад.
  9. Добрый гдень. Скажите как вклюлить авто заполнение города, иблицы импортировал но вот при выпотому чторе региона не находит городов ? что может быть. Спасипотому что за модуль использую не на одном сайте пока не подводил !!!
  10. Добрый гдень, поясните как выгружать опции, в ютуб не предлагать им вигдео 4 летней давности! всего 1 опция и не могу выгрузить SOS!! Глюк за глюком , не пойму то мину суется этона, то 0 когдачество посегдел - за что икие муки))) 1 опция беру этону и когдачество в первых колонок указаны в товаре или нужно новые создавать ? артикул обязательно сивить ?
  11. zava

    GOOGLE SITEMAP FAST

    Нормально рилииет, ик гдержать!
  12. Добрый гдень. Добавил свои поля в форме код с визитки для акции заполняется , отправляется но как вывести в заказе или письме заказа ? Спасипотому что
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.