Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

zava

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

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

  • Посещение

Все публикации пользователя zava

  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. Огромное спасибо автору за помощь в настройках модуля!!!
  4. Добрый день. купил модуль установил но он не работает режим тестовый после нажатия на кнопку оформить заказ ни чего не происходит кнопка нажата ! Что делать ?
  5. Добрый день купил все настроил не работает! Ошибок нет после выбора редиректит на страницу заявка принята ??? Поддержка подключила и сервер дала https://3dsec.sberbank.ru/payment/rest/
  6. Решение удаляем все что есть /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); }
  7. КАК ДОБАВИТЬ МЕТОДЫ ОПЛАТЫ В 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Деньги перевод на кошелек'; После чего эти два файлы загрузить назад.
  8. Добрый день. Скажите как включить авто заполнение города, таблицы импортировал но вот при выборе региона не находит городов ? что может быть. Спасибо за модуль использую не на одном сайте пока не подводил !!!
  9. Добрый день, поясните как выгружать опции, в ютуб не предлагать там видео 4 летней давности! всего 1 опция и не могу выгрузить SOS!! Глюк за глюком , не пойму то мину суется цена, то 0 количество поседел - за что такие муки))) 1 опция беру цену и количество в первых колонок указаны в товаре или нужно новые создавать ? артикул обязательно ставить ?
  10. Добрый день. Добавил свои поля в форме код с визитки для акции заполняется , отправляется но как вывести в заказе или письме заказа ? Спасибо
  11. Добрый день, скажите можно в код товара (модель) предать свои значения из sku либо с прайса только потом перед номером поставщика? Покупали ваш модуль на сайт корейской косметики.? Еще такой момент есть младшие категории с одинаковыми названием входят в главные категории с разными названиями как правильно прописать а то выгружаются в одну ? например младшая крема в главных категориях для лица, рук, ног и тд? у нас все крема попадают в одну крема все остальные пустые хотя в райсе указали две категории правильно ?
  12. Спасибо за ответ. Скажите еще пожалуйста можно будет прикреплять как то трекер номер в личном кабинете ?
  13. Добрый день, скажите где поменять Я прочитал и принимаю сам текст в корзине меняю в языковом файле simplecheckout.php не меняется, при регистрации в се получилось в файле simpleregister.php. Может кеш ?
  14. Добрый день. Спасибо за ответы. Хочу задать ещё вопрос по настройке ( обновил модуль на последний ) скажите можно при выборе доставки самовывоз что бы поле город ,регион скрывался в адресе оплаты и доставки где это можно настроить если можно ? Спасибо.
  15. Добрый день! Еще раз поблагодарю за прекрасный модуль работает на всех сайтах на 5 балов. Хочу задать вопрос как поменять название блока - Адрес оплаты на свое ? это можно сделать ? Спасибо! Успехов и продаж!
  16. Добрый день. Я прочитал что у вас модуль работает с привязкой на домен , но тут такая ситуация что разрабатываем пока на тестовом на оригинальном пока стоит рабочий сайт. Вопрос можно что бы активировать на тестовом потом там отключить и перенести лицензию на оригинальный в конце разработки ? Спасибо за консультацию. Успехов в работе.
  17. Получил ответ с поддержки за то что бы карты открылись 2200 написали , модуль бесплатно но вот так ребята решили его продавать !
  18. Спасибо! Окно появилось без карты , не знаю буду ждать от них вестей по доработке. Скажите а корзина будет работать на локальном если лицензия на домене?
  19. 2.3 с сипле работает у меня есть копия сайта где работает на вашей версии не знаю что они меняли там но все работает
  20. У меня работает . Только при нажатии выбора отделения не всплывает карта . 2.1.0.1 open cart. Только пришлось регионы переименовать они не соответствуют стоковым если нужны данные напишите в лс по регионам. Включите режим отладки модуле и сможете логи там чуть что не так вообще доставка не выводится или выводится заглушка
×
×
  • Создать...

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

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