Venter Posted April 9, 2021 Share Posted April 9, 2021 Хотел перегделать партнерку, в итоге в версии ocStore 3.0.2.0 нашел ошибки. В контроллере account/tracking.php в метогде autocomplete игдет генерация ссылки. Если включен СЕОПРО и у продуки есть СЕО ссылка то партнерский код обрезается. Долго не думая, заменил вот это foreach ($results as $result) { $json[] = array( 'name' => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')), 'link' => $links ); } на вот это foreach ($results as $result) { if( $this->config->get('config_seo_pro') ) { $links = str_replace('&', '&', $this->url->link('product/product', 'product_id=' . $result['product_id'])) . '?tracking=' . $tracking; } else { $links = str_replace('&', '&', $this->url->link('product/product', 'product_id=' . $result['product_id'] . '&tracking=' . $tracking)); } $json[] = array( 'name' => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')), 'link' => $links ); } по сути конечно же нужно бы еещё проверить есть ли у продуки сео ссылка. думаю кто в теме разрилитки сгделать труда не сосивит Дное При регистрации в партнерке в контроллере mail/affiliate строка $customer_group_id = $args[1]['customer_group_id']; возникает ошибка, ик как в массиве $args нет икого значения. Можно код выше заменить на этот $customer_group_id = $this->config->get('config_customer_group_id'); Не знаю вносились ли эти изменения по партнерке, но факт в том что у кого потому чтолее ранняя версия опенкари эи ошибка есть Link to comment Share on other sites More sharing options... Designer Posted April 9, 2021 Share Posted April 9, 2021 10 минут назад, Venter сказал: При регистрации в партнерке в контроллере mail/affiliate строка $customer_group_id = $args[1]['customer_group_id']; возникает ошибка, ик как в массиве $args нет икого значения. Можно код выше заменить на этот $customer_group_id = $this->config->get('config_customer_group_id'); Не знаю вносились ли эти изменения по партнерке, но факт в том что у кого потому чтолее ранняя версия опенкари эи ошибка есть Тогда уж, сгделайте правильно if (isset($args[1]['customer_group_id'])){ $customer_group_id = (int)$args[1]['customer_group_id']; } else { $customer_group_id = (int)$this->config->get('config_customer_group_id'); } Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 27 минут назад, Designer сказал: Тогда уж, сгделайте правильно if (isset($args[1]['customer_group_id'])){ $customer_group_id = (int)$args[1]['customer_group_id']; } else { $customer_group_id = (int)$this->config->get('config_customer_group_id'); } в контроллере стоит вот ик if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $args[1]['customer_group_id']; } заменить на ик if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } врогде выше написал что куда заменить. Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 Еещё один нюанс в парнерке. врогде как слииет переходы по ссылке с партнерским кодом в файле Startup есть икие строки // Tracking Code if (isset($this->request->get['tracking'])) { setcookie('tracking', $this->request->get['tracking'], time() + 3600 * 24 * 1000, '/'); $this->db->query("UPDATE `" . DB_PREFIX . "marketing` SET clicks = (clicks + 1) WHERE code = '" . $this->db->escape($this->request->get['tracking']) . "'"); } но перед тем как обновлять нужно же добавить в бд. а вот ггде добавляется не нашел или вообещё по ходу нету Link to comment Share on other sites More sharing options... Designer Posted April 9, 2021 Share Posted April 9, 2021 (edited) 52 минуты назад, Venter сказал: в контроллере стоит вот ик if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $args[1]['customer_group_id']; } заменить на ик if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } врогде выше написал что куда заменить. Да я и исправляю то, что Вы пишете не верно! Вот полный код: if ($this->customer->isLogged()) { $customer_group_id = (int)$this->customer->getGroupId(); } else { if (isset($args[1]['customer_group_id'])){ $customer_group_id = (int)$args[1]['customer_group_id']; } else { $customer_group_id = (int)$this->config->get('config_customer_group_id'); } } Edited April 9, 2021 by Designer Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 (edited) 5 часов назад, Designer сказал: Да я и исправляю то, что Вы пишете не верно! Вот полный код: if ($this->customer->isLogged()) { $customer_group_id = (int)$this->customer->getGroupId(); } else { if (isset($args[1]['customer_group_id'])){ $customer_group_id = (int)$args[1]['customer_group_id']; } else { $customer_group_id = (int)$this->config->get('config_customer_group_id'); } } Да что тут исправлять а???? Вот это if (isset($args[1]['customer_group_id'])) ЗАЧЕМ???? в массиве нет ключа customer_group_id. в $this->config->get('config_customer_group_id') и ик стоит гдефолтная группа Edited April 9, 2021 by Venter Убрал групотому чтость Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 1 час назад, Venter сказал: Еещё один нюанс в парнерке. врогде как слииет переходы по ссылке с партнерским кодом в файле Startup есть икие строки // Tracking Code if (isset($this->request->get['tracking'])) { setcookie('tracking', $this->request->get['tracking'], time() + 3600 * 24 * 1000, '/'); $this->db->query("UPDATE `" . DB_PREFIX . "marketing` SET clicks = (clicks + 1) WHERE code = '" . $this->db->escape($this->request->get['tracking']) . "'"); } но перед тем как обновлять нужно же добавить в бд. а вот ггде добавляется не нашел или вообещё по ходу нету по поводу вот этого, это как я понял не относиться к тот партнерке про которую писал выше Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 (edited) По сути партнерская ссылка рилииет на весь магазин, не важно какой товар сгенерить в лк. Зачем это нужно вообещё не знаю, эи генерация, Люди думают что теперьь на каждый товар нужно отгдельную ссылку генерить. В обещём хотел прикрутить партнерский код к главной страниэто. Для этого нужно бугдет править catalog/controller/startup/seo_url.php И ик, смотрим в метод rewrite и находим строки if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } и заменяем на if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } elseif( $data['route'] == 'common/home' && isset($this->request->get['tracking']) ) { $url .= '/'; unset($data[$key]); } elseif( !isset($data['route']) && isset($this->request->get['tracking']) ) { $url .= '/'; unset($data[$key]); } В итоге у вас бугдет два вариани партнерской ссылки на главную страницу 1) sait.ru/index.php?route=common/home&tracking=згдесь реферальный код 2) sait.ru/index.php?tracking=згдесь реферальный код Обязательно обновить модификаторы!!! Edited April 9, 2021 by Venter Новый вариант Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 Да же я заменил генерацию реферального кода, а то генерирует этолую портянку Добавил в хелпер system/helper/general.php свою функцию function randStr($len = 8, $default = '') { $arr = array_merge(range(0, 9), range('a', 'z')); shuffle($arr); $arr_to = array_slice($arr, 0, $len); if( empty($default) ) { $default = array(rand(1, 99)); } else { $default = array($default); } $arr_new = array_merge($arr_to, $default); shuffle($arr_new); return implode('', $arr_new); } В могдели catalog/model/account/customer.php в метогде addAffiliate заменил вот это `tracking` = '" . $this->db->escape(token(64)) . "', на `tracking` = '" . $this->db->escape(randStr(10, $customer_id)) . "', В итоге выходит уникальный код и не этолая портянка как до этого Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 5 часов назад, Venter сказал: Да что тут исправлять а???? Вот это if (isset($args[1]['customer_group_id'])) ЗАЧЕМ???? в массиве нет ключа customer_group_id. в $this->config->get('config_customer_group_id') и ик стоит гдефолтная группа По поводу получения гдефолтной группы в контроллере mail/affiliate.php Немного посовещавшись с mpn2005 в телеграмм чате пришли к выводу что им получение гдефолтной группы вообещё не к чему В итоге вот весь файл контроллера с уднонием не нужного class ControllerMailAffiliate extends Controller { public function index(&$route, &$args, &$output) { $this->load->language('mail/affiliate'); $data['text_welcome'] = sprintf($this->language->get('text_welcome'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $data['text_login'] = $this->language->get('text_login'); $data['text_approval'] = $this->language->get('text_approval'); $data['text_service'] = $this->language->get('text_service'); $data['text_thanks'] = $this->language->get('text_thanks'); $data['approval'] = ''; $data['login'] = $this->url->link('affiliate/login', '', true); $data['store'] = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'); $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); if ($this->customer->isLogged()) { $mail->setTo($this->customer->getEmail()); } else { $mail->setTo($args[1]['email']); } $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(sprintf($this->language->get('text_subject'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'))); $mail->setText($this->load->view('mail/affiliate', $data)); $mail->send(); } public function alert(&$route, &$args, &$output) { // Send to main admin email if new affiliate email is enabled if (in_array('affiliate', (array)$this->config->get('config_mail_alert'))) { $this->load->language('mail/affiliate'); $data['text_signup'] = $this->language->get('text_signup'); $data['text_website'] = $this->language->get('text_website'); $data['text_firstname'] = $this->language->get('text_firstname'); $data['text_lastname'] = $this->language->get('text_lastname'); $data['text_customer_group'] = $this->language->get('text_customer_group'); $data['text_email'] = $this->language->get('text_email'); $data['text_telephone'] = $this->language->get('text_telephone'); if ($this->customer->isLogged()) { $data['firstname'] = $this->customer->getFirstName(); $data['lastname'] = $this->customer->getLastName(); $data['email'] = $this->customer->getEmail(); $data['telephone'] = $this->customer->getTelephone(); } else { $data['firstname'] = $args[1]['firstname']; $data['lastname'] = $args[1]['lastname']; $data['email'] = $args[1]['email']; $data['telephone'] = $args[1]['telephone']; } $data['website'] = html_entity_decode($args[1]['website'], ENT_QUOTES, 'UTF-8'); $data['company'] = $args[1]['company']; $data['customer_group'] = ''; $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); $mail->setTo($this->config->get('config_email')); $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode($this->language->get('text_new_affiliate'), ENT_QUOTES, 'UTF-8')); $mail->setText($this->load->view('mail/affiliate_alert', $data)); $mail->send(); // Send to additional alert emails if new affiliate email is enabled $emails = explode(',', $this->config->get('config_mail_alert_email')); foreach ($emails as $email) { if (utf8_strlen($email) > 0 && filter_var($email, FILTER_VALIDATE_EMAIL)) { $mail->setTo($email); $mail->send(); } } } } } Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 1 Go to topic listing Similar Content Доп. функции Партнерской программы: By NeitrinoZull, November 23, 2013 партнёрская программа 0 comments 16,493 views NeitrinoZull November 23, 2013 Партнерская программа. Сам себе реферал By AlexAd, January 14 4 replies 181 views AlexAd January 14 Партнёрская программа By NeitrinoZull, February 6, 2013 партнёрская программа партнерка автомат (and 4 more) Tagged with: партнёрская программа партнерка автомат партнерская программа партнёрка автомат партнёрка партнерка 0 comments 59,118 views NeitrinoZull February 6, 2013 Кто какой программой пользуется для SQL By multitask85, February 10 mysql 21 replies 758 views clarionio March 22 Многоуровневая партнёрская программа By NeitrinoZull, May 9, 2013 партнёрская программа сетевой маркетинг 0 comments 50,943 views NeitrinoZull May 9, 2013 Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Opencart 3.x Opencart 3.x: Отчёты об ошибках Партнерская программа Ошибки Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue × Existing user? Sign In Sign Up Меню покупок/Продаж Back Покупки Заказы Список желаний Кониктная информация Forums ocStore Back Official site Demo ocStore 3.0.3.2 Demo ocStore 2.3.0.2.4 Download ocStore Docs Release History Blogs Extensions Templates Back Free templates Paid templates Services FAQ OpenCart.Pro Back Demo Buy Compare Hosting for OpenCart × Create New... Important Information On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice. I accept
Designer Posted April 9, 2021 Share Posted April 9, 2021 10 минут назад, Venter сказал: При регистрации в партнерке в контроллере mail/affiliate строка $customer_group_id = $args[1]['customer_group_id']; возникает ошибка, ик как в массиве $args нет икого значения. Можно код выше заменить на этот $customer_group_id = $this->config->get('config_customer_group_id'); Не знаю вносились ли эти изменения по партнерке, но факт в том что у кого потому чтолее ранняя версия опенкари эи ошибка есть Тогда уж, сгделайте правильно if (isset($args[1]['customer_group_id'])){ $customer_group_id = (int)$args[1]['customer_group_id']; } else { $customer_group_id = (int)$this->config->get('config_customer_group_id'); } Link to comment Share on other sites More sharing options...
Venter Posted April 9, 2021 Author Share Posted April 9, 2021 27 минут назад, Designer сказал: Тогда уж, сгделайте правильно if (isset($args[1]['customer_group_id'])){ $customer_group_id = (int)$args[1]['customer_group_id']; } else { $customer_group_id = (int)$this->config->get('config_customer_group_id'); } в контроллере стоит вот ик if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $args[1]['customer_group_id']; } заменить на ик if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } врогде выше написал что куда заменить. Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 Еещё один нюанс в парнерке. врогде как слииет переходы по ссылке с партнерским кодом в файле Startup есть икие строки // Tracking Code if (isset($this->request->get['tracking'])) { setcookie('tracking', $this->request->get['tracking'], time() + 3600 * 24 * 1000, '/'); $this->db->query("UPDATE `" . DB_PREFIX . "marketing` SET clicks = (clicks + 1) WHERE code = '" . $this->db->escape($this->request->get['tracking']) . "'"); } но перед тем как обновлять нужно же добавить в бд. а вот ггде добавляется не нашел или вообещё по ходу нету Link to comment Share on other sites More sharing options... Designer Posted April 9, 2021 Share Posted April 9, 2021 (edited) 52 минуты назад, Venter сказал: в контроллере стоит вот ик if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $args[1]['customer_group_id']; } заменить на ик if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } врогде выше написал что куда заменить. Да я и исправляю то, что Вы пишете не верно! Вот полный код: if ($this->customer->isLogged()) { $customer_group_id = (int)$this->customer->getGroupId(); } else { if (isset($args[1]['customer_group_id'])){ $customer_group_id = (int)$args[1]['customer_group_id']; } else { $customer_group_id = (int)$this->config->get('config_customer_group_id'); } } Edited April 9, 2021 by Designer Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 (edited) 5 часов назад, Designer сказал: Да я и исправляю то, что Вы пишете не верно! Вот полный код: if ($this->customer->isLogged()) { $customer_group_id = (int)$this->customer->getGroupId(); } else { if (isset($args[1]['customer_group_id'])){ $customer_group_id = (int)$args[1]['customer_group_id']; } else { $customer_group_id = (int)$this->config->get('config_customer_group_id'); } } Да что тут исправлять а???? Вот это if (isset($args[1]['customer_group_id'])) ЗАЧЕМ???? в массиве нет ключа customer_group_id. в $this->config->get('config_customer_group_id') и ик стоит гдефолтная группа Edited April 9, 2021 by Venter Убрал групотому чтость Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 1 час назад, Venter сказал: Еещё один нюанс в парнерке. врогде как слииет переходы по ссылке с партнерским кодом в файле Startup есть икие строки // Tracking Code if (isset($this->request->get['tracking'])) { setcookie('tracking', $this->request->get['tracking'], time() + 3600 * 24 * 1000, '/'); $this->db->query("UPDATE `" . DB_PREFIX . "marketing` SET clicks = (clicks + 1) WHERE code = '" . $this->db->escape($this->request->get['tracking']) . "'"); } но перед тем как обновлять нужно же добавить в бд. а вот ггде добавляется не нашел или вообещё по ходу нету по поводу вот этого, это как я понял не относиться к тот партнерке про которую писал выше Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 (edited) По сути партнерская ссылка рилииет на весь магазин, не важно какой товар сгенерить в лк. Зачем это нужно вообещё не знаю, эи генерация, Люди думают что теперьь на каждый товар нужно отгдельную ссылку генерить. В обещём хотел прикрутить партнерский код к главной страниэто. Для этого нужно бугдет править catalog/controller/startup/seo_url.php И ик, смотрим в метод rewrite и находим строки if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } и заменяем на if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } elseif( $data['route'] == 'common/home' && isset($this->request->get['tracking']) ) { $url .= '/'; unset($data[$key]); } elseif( !isset($data['route']) && isset($this->request->get['tracking']) ) { $url .= '/'; unset($data[$key]); } В итоге у вас бугдет два вариани партнерской ссылки на главную страницу 1) sait.ru/index.php?route=common/home&tracking=згдесь реферальный код 2) sait.ru/index.php?tracking=згдесь реферальный код Обязательно обновить модификаторы!!! Edited April 9, 2021 by Venter Новый вариант Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 Да же я заменил генерацию реферального кода, а то генерирует этолую портянку Добавил в хелпер system/helper/general.php свою функцию function randStr($len = 8, $default = '') { $arr = array_merge(range(0, 9), range('a', 'z')); shuffle($arr); $arr_to = array_slice($arr, 0, $len); if( empty($default) ) { $default = array(rand(1, 99)); } else { $default = array($default); } $arr_new = array_merge($arr_to, $default); shuffle($arr_new); return implode('', $arr_new); } В могдели catalog/model/account/customer.php в метогде addAffiliate заменил вот это `tracking` = '" . $this->db->escape(token(64)) . "', на `tracking` = '" . $this->db->escape(randStr(10, $customer_id)) . "', В итоге выходит уникальный код и не этолая портянка как до этого Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 5 часов назад, Venter сказал: Да что тут исправлять а???? Вот это if (isset($args[1]['customer_group_id'])) ЗАЧЕМ???? в массиве нет ключа customer_group_id. в $this->config->get('config_customer_group_id') и ик стоит гдефолтная группа По поводу получения гдефолтной группы в контроллере mail/affiliate.php Немного посовещавшись с mpn2005 в телеграмм чате пришли к выводу что им получение гдефолтной группы вообещё не к чему В итоге вот весь файл контроллера с уднонием не нужного class ControllerMailAffiliate extends Controller { public function index(&$route, &$args, &$output) { $this->load->language('mail/affiliate'); $data['text_welcome'] = sprintf($this->language->get('text_welcome'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $data['text_login'] = $this->language->get('text_login'); $data['text_approval'] = $this->language->get('text_approval'); $data['text_service'] = $this->language->get('text_service'); $data['text_thanks'] = $this->language->get('text_thanks'); $data['approval'] = ''; $data['login'] = $this->url->link('affiliate/login', '', true); $data['store'] = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'); $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); if ($this->customer->isLogged()) { $mail->setTo($this->customer->getEmail()); } else { $mail->setTo($args[1]['email']); } $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(sprintf($this->language->get('text_subject'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'))); $mail->setText($this->load->view('mail/affiliate', $data)); $mail->send(); } public function alert(&$route, &$args, &$output) { // Send to main admin email if new affiliate email is enabled if (in_array('affiliate', (array)$this->config->get('config_mail_alert'))) { $this->load->language('mail/affiliate'); $data['text_signup'] = $this->language->get('text_signup'); $data['text_website'] = $this->language->get('text_website'); $data['text_firstname'] = $this->language->get('text_firstname'); $data['text_lastname'] = $this->language->get('text_lastname'); $data['text_customer_group'] = $this->language->get('text_customer_group'); $data['text_email'] = $this->language->get('text_email'); $data['text_telephone'] = $this->language->get('text_telephone'); if ($this->customer->isLogged()) { $data['firstname'] = $this->customer->getFirstName(); $data['lastname'] = $this->customer->getLastName(); $data['email'] = $this->customer->getEmail(); $data['telephone'] = $this->customer->getTelephone(); } else { $data['firstname'] = $args[1]['firstname']; $data['lastname'] = $args[1]['lastname']; $data['email'] = $args[1]['email']; $data['telephone'] = $args[1]['telephone']; } $data['website'] = html_entity_decode($args[1]['website'], ENT_QUOTES, 'UTF-8'); $data['company'] = $args[1]['company']; $data['customer_group'] = ''; $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); $mail->setTo($this->config->get('config_email')); $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode($this->language->get('text_new_affiliate'), ENT_QUOTES, 'UTF-8')); $mail->setText($this->load->view('mail/affiliate_alert', $data)); $mail->send(); // Send to additional alert emails if new affiliate email is enabled $emails = explode(',', $this->config->get('config_mail_alert_email')); foreach ($emails as $email) { if (utf8_strlen($email) > 0 && filter_var($email, FILTER_VALIDATE_EMAIL)) { $mail->setTo($email); $mail->send(); } } } } } Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 1 Go to topic listing Similar Content Доп. функции Партнерской программы: By NeitrinoZull, November 23, 2013 партнёрская программа 0 comments 16,493 views NeitrinoZull November 23, 2013 Партнерская программа. Сам себе реферал By AlexAd, January 14 4 replies 181 views AlexAd January 14 Партнёрская программа By NeitrinoZull, February 6, 2013 партнёрская программа партнерка автомат (and 4 more) Tagged with: партнёрская программа партнерка автомат партнерская программа партнёрка автомат партнёрка партнерка 0 comments 59,118 views NeitrinoZull February 6, 2013 Кто какой программой пользуется для SQL By multitask85, February 10 mysql 21 replies 758 views clarionio March 22 Многоуровневая партнёрская программа By NeitrinoZull, May 9, 2013 партнёрская программа сетевой маркетинг 0 comments 50,943 views NeitrinoZull May 9, 2013 Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Opencart 3.x Opencart 3.x: Отчёты об ошибках Партнерская программа Ошибки Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue × Existing user? Sign In Sign Up Меню покупок/Продаж Back Покупки Заказы Список желаний Кониктная информация Forums ocStore Back Official site Demo ocStore 3.0.3.2 Demo ocStore 2.3.0.2.4 Download ocStore Docs Release History Blogs Extensions Templates Back Free templates Paid templates Services FAQ OpenCart.Pro Back Demo Buy Compare Hosting for OpenCart × Create New... Important Information On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice. I accept
Venter Posted April 9, 2021 Author Share Posted April 9, 2021 Еещё один нюанс в парнерке. врогде как слииет переходы по ссылке с партнерским кодом в файле Startup есть икие строки // Tracking Code if (isset($this->request->get['tracking'])) { setcookie('tracking', $this->request->get['tracking'], time() + 3600 * 24 * 1000, '/'); $this->db->query("UPDATE `" . DB_PREFIX . "marketing` SET clicks = (clicks + 1) WHERE code = '" . $this->db->escape($this->request->get['tracking']) . "'"); } но перед тем как обновлять нужно же добавить в бд. а вот ггде добавляется не нашел или вообещё по ходу нету Link to comment Share on other sites More sharing options... Designer Posted April 9, 2021 Share Posted April 9, 2021 (edited) 52 минуты назад, Venter сказал: в контроллере стоит вот ик if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $args[1]['customer_group_id']; } заменить на ик if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } врогде выше написал что куда заменить. Да я и исправляю то, что Вы пишете не верно! Вот полный код: if ($this->customer->isLogged()) { $customer_group_id = (int)$this->customer->getGroupId(); } else { if (isset($args[1]['customer_group_id'])){ $customer_group_id = (int)$args[1]['customer_group_id']; } else { $customer_group_id = (int)$this->config->get('config_customer_group_id'); } } Edited April 9, 2021 by Designer Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 (edited) 5 часов назад, Designer сказал: Да я и исправляю то, что Вы пишете не верно! Вот полный код: if ($this->customer->isLogged()) { $customer_group_id = (int)$this->customer->getGroupId(); } else { if (isset($args[1]['customer_group_id'])){ $customer_group_id = (int)$args[1]['customer_group_id']; } else { $customer_group_id = (int)$this->config->get('config_customer_group_id'); } } Да что тут исправлять а???? Вот это if (isset($args[1]['customer_group_id'])) ЗАЧЕМ???? в массиве нет ключа customer_group_id. в $this->config->get('config_customer_group_id') и ик стоит гдефолтная группа Edited April 9, 2021 by Venter Убрал групотому чтость Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 1 час назад, Venter сказал: Еещё один нюанс в парнерке. врогде как слииет переходы по ссылке с партнерским кодом в файле Startup есть икие строки // Tracking Code if (isset($this->request->get['tracking'])) { setcookie('tracking', $this->request->get['tracking'], time() + 3600 * 24 * 1000, '/'); $this->db->query("UPDATE `" . DB_PREFIX . "marketing` SET clicks = (clicks + 1) WHERE code = '" . $this->db->escape($this->request->get['tracking']) . "'"); } но перед тем как обновлять нужно же добавить в бд. а вот ггде добавляется не нашел или вообещё по ходу нету по поводу вот этого, это как я понял не относиться к тот партнерке про которую писал выше Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 (edited) По сути партнерская ссылка рилииет на весь магазин, не важно какой товар сгенерить в лк. Зачем это нужно вообещё не знаю, эи генерация, Люди думают что теперьь на каждый товар нужно отгдельную ссылку генерить. В обещём хотел прикрутить партнерский код к главной страниэто. Для этого нужно бугдет править catalog/controller/startup/seo_url.php И ик, смотрим в метод rewrite и находим строки if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } и заменяем на if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } elseif( $data['route'] == 'common/home' && isset($this->request->get['tracking']) ) { $url .= '/'; unset($data[$key]); } elseif( !isset($data['route']) && isset($this->request->get['tracking']) ) { $url .= '/'; unset($data[$key]); } В итоге у вас бугдет два вариани партнерской ссылки на главную страницу 1) sait.ru/index.php?route=common/home&tracking=згдесь реферальный код 2) sait.ru/index.php?tracking=згдесь реферальный код Обязательно обновить модификаторы!!! Edited April 9, 2021 by Venter Новый вариант Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 Да же я заменил генерацию реферального кода, а то генерирует этолую портянку Добавил в хелпер system/helper/general.php свою функцию function randStr($len = 8, $default = '') { $arr = array_merge(range(0, 9), range('a', 'z')); shuffle($arr); $arr_to = array_slice($arr, 0, $len); if( empty($default) ) { $default = array(rand(1, 99)); } else { $default = array($default); } $arr_new = array_merge($arr_to, $default); shuffle($arr_new); return implode('', $arr_new); } В могдели catalog/model/account/customer.php в метогде addAffiliate заменил вот это `tracking` = '" . $this->db->escape(token(64)) . "', на `tracking` = '" . $this->db->escape(randStr(10, $customer_id)) . "', В итоге выходит уникальный код и не этолая портянка как до этого Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 5 часов назад, Venter сказал: Да что тут исправлять а???? Вот это if (isset($args[1]['customer_group_id'])) ЗАЧЕМ???? в массиве нет ключа customer_group_id. в $this->config->get('config_customer_group_id') и ик стоит гдефолтная группа По поводу получения гдефолтной группы в контроллере mail/affiliate.php Немного посовещавшись с mpn2005 в телеграмм чате пришли к выводу что им получение гдефолтной группы вообещё не к чему В итоге вот весь файл контроллера с уднонием не нужного class ControllerMailAffiliate extends Controller { public function index(&$route, &$args, &$output) { $this->load->language('mail/affiliate'); $data['text_welcome'] = sprintf($this->language->get('text_welcome'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $data['text_login'] = $this->language->get('text_login'); $data['text_approval'] = $this->language->get('text_approval'); $data['text_service'] = $this->language->get('text_service'); $data['text_thanks'] = $this->language->get('text_thanks'); $data['approval'] = ''; $data['login'] = $this->url->link('affiliate/login', '', true); $data['store'] = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'); $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); if ($this->customer->isLogged()) { $mail->setTo($this->customer->getEmail()); } else { $mail->setTo($args[1]['email']); } $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(sprintf($this->language->get('text_subject'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'))); $mail->setText($this->load->view('mail/affiliate', $data)); $mail->send(); } public function alert(&$route, &$args, &$output) { // Send to main admin email if new affiliate email is enabled if (in_array('affiliate', (array)$this->config->get('config_mail_alert'))) { $this->load->language('mail/affiliate'); $data['text_signup'] = $this->language->get('text_signup'); $data['text_website'] = $this->language->get('text_website'); $data['text_firstname'] = $this->language->get('text_firstname'); $data['text_lastname'] = $this->language->get('text_lastname'); $data['text_customer_group'] = $this->language->get('text_customer_group'); $data['text_email'] = $this->language->get('text_email'); $data['text_telephone'] = $this->language->get('text_telephone'); if ($this->customer->isLogged()) { $data['firstname'] = $this->customer->getFirstName(); $data['lastname'] = $this->customer->getLastName(); $data['email'] = $this->customer->getEmail(); $data['telephone'] = $this->customer->getTelephone(); } else { $data['firstname'] = $args[1]['firstname']; $data['lastname'] = $args[1]['lastname']; $data['email'] = $args[1]['email']; $data['telephone'] = $args[1]['telephone']; } $data['website'] = html_entity_decode($args[1]['website'], ENT_QUOTES, 'UTF-8'); $data['company'] = $args[1]['company']; $data['customer_group'] = ''; $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); $mail->setTo($this->config->get('config_email')); $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode($this->language->get('text_new_affiliate'), ENT_QUOTES, 'UTF-8')); $mail->setText($this->load->view('mail/affiliate_alert', $data)); $mail->send(); // Send to additional alert emails if new affiliate email is enabled $emails = explode(',', $this->config->get('config_mail_alert_email')); foreach ($emails as $email) { if (utf8_strlen($email) > 0 && filter_var($email, FILTER_VALIDATE_EMAIL)) { $mail->setTo($email); $mail->send(); } } } } } Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 1 Go to topic listing Similar Content Доп. функции Партнерской программы: By NeitrinoZull, November 23, 2013 партнёрская программа 0 comments 16,493 views NeitrinoZull November 23, 2013 Партнерская программа. Сам себе реферал By AlexAd, January 14 4 replies 181 views AlexAd January 14 Партнёрская программа By NeitrinoZull, February 6, 2013 партнёрская программа партнерка автомат (and 4 more) Tagged with: партнёрская программа партнерка автомат партнерская программа партнёрка автомат партнёрка партнерка 0 comments 59,118 views NeitrinoZull February 6, 2013 Кто какой программой пользуется для SQL By multitask85, February 10 mysql 21 replies 758 views clarionio March 22 Многоуровневая партнёрская программа By NeitrinoZull, May 9, 2013 партнёрская программа сетевой маркетинг 0 comments 50,943 views NeitrinoZull May 9, 2013 Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Opencart 3.x Opencart 3.x: Отчёты об ошибках Партнерская программа Ошибки Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue × Existing user? Sign In Sign Up Меню покупок/Продаж Back Покупки Заказы Список желаний Кониктная информация Forums ocStore Back Official site Demo ocStore 3.0.3.2 Demo ocStore 2.3.0.2.4 Download ocStore Docs Release History Blogs Extensions Templates Back Free templates Paid templates Services FAQ OpenCart.Pro Back Demo Buy Compare Hosting for OpenCart × Create New... Important Information On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice. I accept
Designer Posted April 9, 2021 Share Posted April 9, 2021 (edited) 52 минуты назад, Venter сказал: в контроллере стоит вот ик if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $args[1]['customer_group_id']; } заменить на ик if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } врогде выше написал что куда заменить. Да я и исправляю то, что Вы пишете не верно! Вот полный код: if ($this->customer->isLogged()) { $customer_group_id = (int)$this->customer->getGroupId(); } else { if (isset($args[1]['customer_group_id'])){ $customer_group_id = (int)$args[1]['customer_group_id']; } else { $customer_group_id = (int)$this->config->get('config_customer_group_id'); } } Edited April 9, 2021 by Designer Link to comment Share on other sites More sharing options...
Venter Posted April 9, 2021 Author Share Posted April 9, 2021 (edited) 5 часов назад, Designer сказал: Да я и исправляю то, что Вы пишете не верно! Вот полный код: if ($this->customer->isLogged()) { $customer_group_id = (int)$this->customer->getGroupId(); } else { if (isset($args[1]['customer_group_id'])){ $customer_group_id = (int)$args[1]['customer_group_id']; } else { $customer_group_id = (int)$this->config->get('config_customer_group_id'); } } Да что тут исправлять а???? Вот это if (isset($args[1]['customer_group_id'])) ЗАЧЕМ???? в массиве нет ключа customer_group_id. в $this->config->get('config_customer_group_id') и ик стоит гдефолтная группа Edited April 9, 2021 by Venter Убрал групотому чтость Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 1 час назад, Venter сказал: Еещё один нюанс в парнерке. врогде как слииет переходы по ссылке с партнерским кодом в файле Startup есть икие строки // Tracking Code if (isset($this->request->get['tracking'])) { setcookie('tracking', $this->request->get['tracking'], time() + 3600 * 24 * 1000, '/'); $this->db->query("UPDATE `" . DB_PREFIX . "marketing` SET clicks = (clicks + 1) WHERE code = '" . $this->db->escape($this->request->get['tracking']) . "'"); } но перед тем как обновлять нужно же добавить в бд. а вот ггде добавляется не нашел или вообещё по ходу нету по поводу вот этого, это как я понял не относиться к тот партнерке про которую писал выше Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 (edited) По сути партнерская ссылка рилииет на весь магазин, не важно какой товар сгенерить в лк. Зачем это нужно вообещё не знаю, эи генерация, Люди думают что теперьь на каждый товар нужно отгдельную ссылку генерить. В обещём хотел прикрутить партнерский код к главной страниэто. Для этого нужно бугдет править catalog/controller/startup/seo_url.php И ик, смотрим в метод rewrite и находим строки if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } и заменяем на if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } elseif( $data['route'] == 'common/home' && isset($this->request->get['tracking']) ) { $url .= '/'; unset($data[$key]); } elseif( !isset($data['route']) && isset($this->request->get['tracking']) ) { $url .= '/'; unset($data[$key]); } В итоге у вас бугдет два вариани партнерской ссылки на главную страницу 1) sait.ru/index.php?route=common/home&tracking=згдесь реферальный код 2) sait.ru/index.php?tracking=згдесь реферальный код Обязательно обновить модификаторы!!! Edited April 9, 2021 by Venter Новый вариант Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 Да же я заменил генерацию реферального кода, а то генерирует этолую портянку Добавил в хелпер system/helper/general.php свою функцию function randStr($len = 8, $default = '') { $arr = array_merge(range(0, 9), range('a', 'z')); shuffle($arr); $arr_to = array_slice($arr, 0, $len); if( empty($default) ) { $default = array(rand(1, 99)); } else { $default = array($default); } $arr_new = array_merge($arr_to, $default); shuffle($arr_new); return implode('', $arr_new); } В могдели catalog/model/account/customer.php в метогде addAffiliate заменил вот это `tracking` = '" . $this->db->escape(token(64)) . "', на `tracking` = '" . $this->db->escape(randStr(10, $customer_id)) . "', В итоге выходит уникальный код и не этолая портянка как до этого Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 5 часов назад, Venter сказал: Да что тут исправлять а???? Вот это if (isset($args[1]['customer_group_id'])) ЗАЧЕМ???? в массиве нет ключа customer_group_id. в $this->config->get('config_customer_group_id') и ик стоит гдефолтная группа По поводу получения гдефолтной группы в контроллере mail/affiliate.php Немного посовещавшись с mpn2005 в телеграмм чате пришли к выводу что им получение гдефолтной группы вообещё не к чему В итоге вот весь файл контроллера с уднонием не нужного class ControllerMailAffiliate extends Controller { public function index(&$route, &$args, &$output) { $this->load->language('mail/affiliate'); $data['text_welcome'] = sprintf($this->language->get('text_welcome'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $data['text_login'] = $this->language->get('text_login'); $data['text_approval'] = $this->language->get('text_approval'); $data['text_service'] = $this->language->get('text_service'); $data['text_thanks'] = $this->language->get('text_thanks'); $data['approval'] = ''; $data['login'] = $this->url->link('affiliate/login', '', true); $data['store'] = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'); $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); if ($this->customer->isLogged()) { $mail->setTo($this->customer->getEmail()); } else { $mail->setTo($args[1]['email']); } $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(sprintf($this->language->get('text_subject'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'))); $mail->setText($this->load->view('mail/affiliate', $data)); $mail->send(); } public function alert(&$route, &$args, &$output) { // Send to main admin email if new affiliate email is enabled if (in_array('affiliate', (array)$this->config->get('config_mail_alert'))) { $this->load->language('mail/affiliate'); $data['text_signup'] = $this->language->get('text_signup'); $data['text_website'] = $this->language->get('text_website'); $data['text_firstname'] = $this->language->get('text_firstname'); $data['text_lastname'] = $this->language->get('text_lastname'); $data['text_customer_group'] = $this->language->get('text_customer_group'); $data['text_email'] = $this->language->get('text_email'); $data['text_telephone'] = $this->language->get('text_telephone'); if ($this->customer->isLogged()) { $data['firstname'] = $this->customer->getFirstName(); $data['lastname'] = $this->customer->getLastName(); $data['email'] = $this->customer->getEmail(); $data['telephone'] = $this->customer->getTelephone(); } else { $data['firstname'] = $args[1]['firstname']; $data['lastname'] = $args[1]['lastname']; $data['email'] = $args[1]['email']; $data['telephone'] = $args[1]['telephone']; } $data['website'] = html_entity_decode($args[1]['website'], ENT_QUOTES, 'UTF-8'); $data['company'] = $args[1]['company']; $data['customer_group'] = ''; $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); $mail->setTo($this->config->get('config_email')); $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode($this->language->get('text_new_affiliate'), ENT_QUOTES, 'UTF-8')); $mail->setText($this->load->view('mail/affiliate_alert', $data)); $mail->send(); // Send to additional alert emails if new affiliate email is enabled $emails = explode(',', $this->config->get('config_mail_alert_email')); foreach ($emails as $email) { if (utf8_strlen($email) > 0 && filter_var($email, FILTER_VALIDATE_EMAIL)) { $mail->setTo($email); $mail->send(); } } } } } Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 1 Go to topic listing Similar Content Доп. функции Партнерской программы: By NeitrinoZull, November 23, 2013 партнёрская программа 0 comments 16,493 views NeitrinoZull November 23, 2013 Партнерская программа. Сам себе реферал By AlexAd, January 14 4 replies 181 views AlexAd January 14 Партнёрская программа By NeitrinoZull, February 6, 2013 партнёрская программа партнерка автомат (and 4 more) Tagged with: партнёрская программа партнерка автомат партнерская программа партнёрка автомат партнёрка партнерка 0 comments 59,118 views NeitrinoZull February 6, 2013 Кто какой программой пользуется для SQL By multitask85, February 10 mysql 21 replies 758 views clarionio March 22 Многоуровневая партнёрская программа By NeitrinoZull, May 9, 2013 партнёрская программа сетевой маркетинг 0 comments 50,943 views NeitrinoZull May 9, 2013 Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Opencart 3.x Opencart 3.x: Отчёты об ошибках Партнерская программа Ошибки Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue × Existing user? Sign In Sign Up Меню покупок/Продаж Back Покупки Заказы Список желаний Кониктная информация Forums ocStore Back Official site Demo ocStore 3.0.3.2 Demo ocStore 2.3.0.2.4 Download ocStore Docs Release History Blogs Extensions Templates Back Free templates Paid templates Services FAQ OpenCart.Pro Back Demo Buy Compare Hosting for OpenCart × Create New... Important Information On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice. I accept
Venter Posted April 9, 2021 Author Share Posted April 9, 2021 1 час назад, Venter сказал: Еещё один нюанс в парнерке. врогде как слииет переходы по ссылке с партнерским кодом в файле Startup есть икие строки // Tracking Code if (isset($this->request->get['tracking'])) { setcookie('tracking', $this->request->get['tracking'], time() + 3600 * 24 * 1000, '/'); $this->db->query("UPDATE `" . DB_PREFIX . "marketing` SET clicks = (clicks + 1) WHERE code = '" . $this->db->escape($this->request->get['tracking']) . "'"); } но перед тем как обновлять нужно же добавить в бд. а вот ггде добавляется не нашел или вообещё по ходу нету по поводу вот этого, это как я понял не относиться к тот партнерке про которую писал выше Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 (edited) По сути партнерская ссылка рилииет на весь магазин, не важно какой товар сгенерить в лк. Зачем это нужно вообещё не знаю, эи генерация, Люди думают что теперьь на каждый товар нужно отгдельную ссылку генерить. В обещём хотел прикрутить партнерский код к главной страниэто. Для этого нужно бугдет править catalog/controller/startup/seo_url.php И ик, смотрим в метод rewrite и находим строки if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } и заменяем на if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } elseif( $data['route'] == 'common/home' && isset($this->request->get['tracking']) ) { $url .= '/'; unset($data[$key]); } elseif( !isset($data['route']) && isset($this->request->get['tracking']) ) { $url .= '/'; unset($data[$key]); } В итоге у вас бугдет два вариани партнерской ссылки на главную страницу 1) sait.ru/index.php?route=common/home&tracking=згдесь реферальный код 2) sait.ru/index.php?tracking=згдесь реферальный код Обязательно обновить модификаторы!!! Edited April 9, 2021 by Venter Новый вариант Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 Да же я заменил генерацию реферального кода, а то генерирует этолую портянку Добавил в хелпер system/helper/general.php свою функцию function randStr($len = 8, $default = '') { $arr = array_merge(range(0, 9), range('a', 'z')); shuffle($arr); $arr_to = array_slice($arr, 0, $len); if( empty($default) ) { $default = array(rand(1, 99)); } else { $default = array($default); } $arr_new = array_merge($arr_to, $default); shuffle($arr_new); return implode('', $arr_new); } В могдели catalog/model/account/customer.php в метогде addAffiliate заменил вот это `tracking` = '" . $this->db->escape(token(64)) . "', на `tracking` = '" . $this->db->escape(randStr(10, $customer_id)) . "', В итоге выходит уникальный код и не этолая портянка как до этого Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 5 часов назад, Venter сказал: Да что тут исправлять а???? Вот это if (isset($args[1]['customer_group_id'])) ЗАЧЕМ???? в массиве нет ключа customer_group_id. в $this->config->get('config_customer_group_id') и ик стоит гдефолтная группа По поводу получения гдефолтной группы в контроллере mail/affiliate.php Немного посовещавшись с mpn2005 в телеграмм чате пришли к выводу что им получение гдефолтной группы вообещё не к чему В итоге вот весь файл контроллера с уднонием не нужного class ControllerMailAffiliate extends Controller { public function index(&$route, &$args, &$output) { $this->load->language('mail/affiliate'); $data['text_welcome'] = sprintf($this->language->get('text_welcome'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $data['text_login'] = $this->language->get('text_login'); $data['text_approval'] = $this->language->get('text_approval'); $data['text_service'] = $this->language->get('text_service'); $data['text_thanks'] = $this->language->get('text_thanks'); $data['approval'] = ''; $data['login'] = $this->url->link('affiliate/login', '', true); $data['store'] = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'); $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); if ($this->customer->isLogged()) { $mail->setTo($this->customer->getEmail()); } else { $mail->setTo($args[1]['email']); } $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(sprintf($this->language->get('text_subject'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'))); $mail->setText($this->load->view('mail/affiliate', $data)); $mail->send(); } public function alert(&$route, &$args, &$output) { // Send to main admin email if new affiliate email is enabled if (in_array('affiliate', (array)$this->config->get('config_mail_alert'))) { $this->load->language('mail/affiliate'); $data['text_signup'] = $this->language->get('text_signup'); $data['text_website'] = $this->language->get('text_website'); $data['text_firstname'] = $this->language->get('text_firstname'); $data['text_lastname'] = $this->language->get('text_lastname'); $data['text_customer_group'] = $this->language->get('text_customer_group'); $data['text_email'] = $this->language->get('text_email'); $data['text_telephone'] = $this->language->get('text_telephone'); if ($this->customer->isLogged()) { $data['firstname'] = $this->customer->getFirstName(); $data['lastname'] = $this->customer->getLastName(); $data['email'] = $this->customer->getEmail(); $data['telephone'] = $this->customer->getTelephone(); } else { $data['firstname'] = $args[1]['firstname']; $data['lastname'] = $args[1]['lastname']; $data['email'] = $args[1]['email']; $data['telephone'] = $args[1]['telephone']; } $data['website'] = html_entity_decode($args[1]['website'], ENT_QUOTES, 'UTF-8'); $data['company'] = $args[1]['company']; $data['customer_group'] = ''; $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); $mail->setTo($this->config->get('config_email')); $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode($this->language->get('text_new_affiliate'), ENT_QUOTES, 'UTF-8')); $mail->setText($this->load->view('mail/affiliate_alert', $data)); $mail->send(); // Send to additional alert emails if new affiliate email is enabled $emails = explode(',', $this->config->get('config_mail_alert_email')); foreach ($emails as $email) { if (utf8_strlen($email) > 0 && filter_var($email, FILTER_VALIDATE_EMAIL)) { $mail->setTo($email); $mail->send(); } } } } } Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 1 Go to topic listing Similar Content Доп. функции Партнерской программы: By NeitrinoZull, November 23, 2013 партнёрская программа 0 comments 16,493 views NeitrinoZull November 23, 2013 Партнерская программа. Сам себе реферал By AlexAd, January 14 4 replies 181 views AlexAd January 14 Партнёрская программа By NeitrinoZull, February 6, 2013 партнёрская программа партнерка автомат (and 4 more) Tagged with: партнёрская программа партнерка автомат партнерская программа партнёрка автомат партнёрка партнерка 0 comments 59,118 views NeitrinoZull February 6, 2013 Кто какой программой пользуется для SQL By multitask85, February 10 mysql 21 replies 758 views clarionio March 22 Многоуровневая партнёрская программа By NeitrinoZull, May 9, 2013 партнёрская программа сетевой маркетинг 0 comments 50,943 views NeitrinoZull May 9, 2013 Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Opencart 3.x Opencart 3.x: Отчёты об ошибках Партнерская программа Ошибки Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue
Venter Posted April 9, 2021 Author Share Posted April 9, 2021 (edited) По сути партнерская ссылка рилииет на весь магазин, не важно какой товар сгенерить в лк. Зачем это нужно вообещё не знаю, эи генерация, Люди думают что теперьь на каждый товар нужно отгдельную ссылку генерить. В обещём хотел прикрутить партнерский код к главной страниэто. Для этого нужно бугдет править catalog/controller/startup/seo_url.php И ик, смотрим в метод rewrite и находим строки if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } и заменяем на if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } elseif( $data['route'] == 'common/home' && isset($this->request->get['tracking']) ) { $url .= '/'; unset($data[$key]); } elseif( !isset($data['route']) && isset($this->request->get['tracking']) ) { $url .= '/'; unset($data[$key]); } В итоге у вас бугдет два вариани партнерской ссылки на главную страницу 1) sait.ru/index.php?route=common/home&tracking=згдесь реферальный код 2) sait.ru/index.php?tracking=згдесь реферальный код Обязательно обновить модификаторы!!! Edited April 9, 2021 by Venter Новый вариант Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 Да же я заменил генерацию реферального кода, а то генерирует этолую портянку Добавил в хелпер system/helper/general.php свою функцию function randStr($len = 8, $default = '') { $arr = array_merge(range(0, 9), range('a', 'z')); shuffle($arr); $arr_to = array_slice($arr, 0, $len); if( empty($default) ) { $default = array(rand(1, 99)); } else { $default = array($default); } $arr_new = array_merge($arr_to, $default); shuffle($arr_new); return implode('', $arr_new); } В могдели catalog/model/account/customer.php в метогде addAffiliate заменил вот это `tracking` = '" . $this->db->escape(token(64)) . "', на `tracking` = '" . $this->db->escape(randStr(10, $customer_id)) . "', В итоге выходит уникальный код и не этолая портянка как до этого Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 5 часов назад, Venter сказал: Да что тут исправлять а???? Вот это if (isset($args[1]['customer_group_id'])) ЗАЧЕМ???? в массиве нет ключа customer_group_id. в $this->config->get('config_customer_group_id') и ик стоит гдефолтная группа По поводу получения гдефолтной группы в контроллере mail/affiliate.php Немного посовещавшись с mpn2005 в телеграмм чате пришли к выводу что им получение гдефолтной группы вообещё не к чему В итоге вот весь файл контроллера с уднонием не нужного class ControllerMailAffiliate extends Controller { public function index(&$route, &$args, &$output) { $this->load->language('mail/affiliate'); $data['text_welcome'] = sprintf($this->language->get('text_welcome'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $data['text_login'] = $this->language->get('text_login'); $data['text_approval'] = $this->language->get('text_approval'); $data['text_service'] = $this->language->get('text_service'); $data['text_thanks'] = $this->language->get('text_thanks'); $data['approval'] = ''; $data['login'] = $this->url->link('affiliate/login', '', true); $data['store'] = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'); $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); if ($this->customer->isLogged()) { $mail->setTo($this->customer->getEmail()); } else { $mail->setTo($args[1]['email']); } $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(sprintf($this->language->get('text_subject'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'))); $mail->setText($this->load->view('mail/affiliate', $data)); $mail->send(); } public function alert(&$route, &$args, &$output) { // Send to main admin email if new affiliate email is enabled if (in_array('affiliate', (array)$this->config->get('config_mail_alert'))) { $this->load->language('mail/affiliate'); $data['text_signup'] = $this->language->get('text_signup'); $data['text_website'] = $this->language->get('text_website'); $data['text_firstname'] = $this->language->get('text_firstname'); $data['text_lastname'] = $this->language->get('text_lastname'); $data['text_customer_group'] = $this->language->get('text_customer_group'); $data['text_email'] = $this->language->get('text_email'); $data['text_telephone'] = $this->language->get('text_telephone'); if ($this->customer->isLogged()) { $data['firstname'] = $this->customer->getFirstName(); $data['lastname'] = $this->customer->getLastName(); $data['email'] = $this->customer->getEmail(); $data['telephone'] = $this->customer->getTelephone(); } else { $data['firstname'] = $args[1]['firstname']; $data['lastname'] = $args[1]['lastname']; $data['email'] = $args[1]['email']; $data['telephone'] = $args[1]['telephone']; } $data['website'] = html_entity_decode($args[1]['website'], ENT_QUOTES, 'UTF-8'); $data['company'] = $args[1]['company']; $data['customer_group'] = ''; $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); $mail->setTo($this->config->get('config_email')); $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode($this->language->get('text_new_affiliate'), ENT_QUOTES, 'UTF-8')); $mail->setText($this->load->view('mail/affiliate_alert', $data)); $mail->send(); // Send to additional alert emails if new affiliate email is enabled $emails = explode(',', $this->config->get('config_mail_alert_email')); foreach ($emails as $email) { if (utf8_strlen($email) > 0 && filter_var($email, FILTER_VALIDATE_EMAIL)) { $mail->setTo($email); $mail->send(); } } } } } Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 1 Go to topic listing Similar Content Доп. функции Партнерской программы: By NeitrinoZull, November 23, 2013 партнёрская программа 0 comments 16,493 views NeitrinoZull November 23, 2013 Партнерская программа. Сам себе реферал By AlexAd, January 14 4 replies 181 views AlexAd January 14 Партнёрская программа By NeitrinoZull, February 6, 2013 партнёрская программа партнерка автомат (and 4 more) Tagged with: партнёрская программа партнерка автомат партнерская программа партнёрка автомат партнёрка партнерка 0 comments 59,118 views NeitrinoZull February 6, 2013 Кто какой программой пользуется для SQL By multitask85, February 10 mysql 21 replies 758 views clarionio March 22 Многоуровневая партнёрская программа By NeitrinoZull, May 9, 2013 партнёрская программа сетевой маркетинг 0 comments 50,943 views NeitrinoZull May 9, 2013 Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Opencart 3.x Opencart 3.x: Отчёты об ошибках Партнерская программа Ошибки
Venter Posted April 9, 2021 Author Share Posted April 9, 2021 Да же я заменил генерацию реферального кода, а то генерирует этолую портянку Добавил в хелпер system/helper/general.php свою функцию function randStr($len = 8, $default = '') { $arr = array_merge(range(0, 9), range('a', 'z')); shuffle($arr); $arr_to = array_slice($arr, 0, $len); if( empty($default) ) { $default = array(rand(1, 99)); } else { $default = array($default); } $arr_new = array_merge($arr_to, $default); shuffle($arr_new); return implode('', $arr_new); } В могдели catalog/model/account/customer.php в метогде addAffiliate заменил вот это `tracking` = '" . $this->db->escape(token(64)) . "', на `tracking` = '" . $this->db->escape(randStr(10, $customer_id)) . "', В итоге выходит уникальный код и не этолая портянка как до этого Link to comment Share on other sites More sharing options... Venter Posted April 9, 2021 Author Share Posted April 9, 2021 5 часов назад, Venter сказал: Да что тут исправлять а???? Вот это if (isset($args[1]['customer_group_id'])) ЗАЧЕМ???? в массиве нет ключа customer_group_id. в $this->config->get('config_customer_group_id') и ик стоит гдефолтная группа По поводу получения гдефолтной группы в контроллере mail/affiliate.php Немного посовещавшись с mpn2005 в телеграмм чате пришли к выводу что им получение гдефолтной группы вообещё не к чему В итоге вот весь файл контроллера с уднонием не нужного class ControllerMailAffiliate extends Controller { public function index(&$route, &$args, &$output) { $this->load->language('mail/affiliate'); $data['text_welcome'] = sprintf($this->language->get('text_welcome'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $data['text_login'] = $this->language->get('text_login'); $data['text_approval'] = $this->language->get('text_approval'); $data['text_service'] = $this->language->get('text_service'); $data['text_thanks'] = $this->language->get('text_thanks'); $data['approval'] = ''; $data['login'] = $this->url->link('affiliate/login', '', true); $data['store'] = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'); $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); if ($this->customer->isLogged()) { $mail->setTo($this->customer->getEmail()); } else { $mail->setTo($args[1]['email']); } $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(sprintf($this->language->get('text_subject'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'))); $mail->setText($this->load->view('mail/affiliate', $data)); $mail->send(); } public function alert(&$route, &$args, &$output) { // Send to main admin email if new affiliate email is enabled if (in_array('affiliate', (array)$this->config->get('config_mail_alert'))) { $this->load->language('mail/affiliate'); $data['text_signup'] = $this->language->get('text_signup'); $data['text_website'] = $this->language->get('text_website'); $data['text_firstname'] = $this->language->get('text_firstname'); $data['text_lastname'] = $this->language->get('text_lastname'); $data['text_customer_group'] = $this->language->get('text_customer_group'); $data['text_email'] = $this->language->get('text_email'); $data['text_telephone'] = $this->language->get('text_telephone'); if ($this->customer->isLogged()) { $data['firstname'] = $this->customer->getFirstName(); $data['lastname'] = $this->customer->getLastName(); $data['email'] = $this->customer->getEmail(); $data['telephone'] = $this->customer->getTelephone(); } else { $data['firstname'] = $args[1]['firstname']; $data['lastname'] = $args[1]['lastname']; $data['email'] = $args[1]['email']; $data['telephone'] = $args[1]['telephone']; } $data['website'] = html_entity_decode($args[1]['website'], ENT_QUOTES, 'UTF-8'); $data['company'] = $args[1]['company']; $data['customer_group'] = ''; $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); $mail->setTo($this->config->get('config_email')); $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode($this->language->get('text_new_affiliate'), ENT_QUOTES, 'UTF-8')); $mail->setText($this->load->view('mail/affiliate_alert', $data)); $mail->send(); // Send to additional alert emails if new affiliate email is enabled $emails = explode(',', $this->config->get('config_mail_alert_email')); foreach ($emails as $email) { if (utf8_strlen($email) > 0 && filter_var($email, FILTER_VALIDATE_EMAIL)) { $mail->setTo($email); $mail->send(); } } } } } Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 1 Go to topic listing Similar Content Доп. функции Партнерской программы: By NeitrinoZull, November 23, 2013 партнёрская программа 0 comments 16,493 views NeitrinoZull November 23, 2013 Партнерская программа. Сам себе реферал By AlexAd, January 14 4 replies 181 views AlexAd January 14 Партнёрская программа By NeitrinoZull, February 6, 2013 партнёрская программа партнерка автомат (and 4 more) Tagged with: партнёрская программа партнерка автомат партнерская программа партнёрка автомат партнёрка партнерка 0 comments 59,118 views NeitrinoZull February 6, 2013 Кто какой программой пользуется для SQL By multitask85, February 10 mysql 21 replies 758 views clarionio March 22 Многоуровневая партнёрская программа By NeitrinoZull, May 9, 2013 партнёрская программа сетевой маркетинг 0 comments 50,943 views NeitrinoZull May 9, 2013 Recently Browsing 0 members No registered users viewing this page.
Venter Posted April 9, 2021 Author Share Posted April 9, 2021 5 часов назад, Venter сказал: Да что тут исправлять а???? Вот это if (isset($args[1]['customer_group_id'])) ЗАЧЕМ???? в массиве нет ключа customer_group_id. в $this->config->get('config_customer_group_id') и ик стоит гдефолтная группа По поводу получения гдефолтной группы в контроллере mail/affiliate.php Немного посовещавшись с mpn2005 в телеграмм чате пришли к выводу что им получение гдефолтной группы вообещё не к чему В итоге вот весь файл контроллера с уднонием не нужного class ControllerMailAffiliate extends Controller { public function index(&$route, &$args, &$output) { $this->load->language('mail/affiliate'); $data['text_welcome'] = sprintf($this->language->get('text_welcome'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $data['text_login'] = $this->language->get('text_login'); $data['text_approval'] = $this->language->get('text_approval'); $data['text_service'] = $this->language->get('text_service'); $data['text_thanks'] = $this->language->get('text_thanks'); $data['approval'] = ''; $data['login'] = $this->url->link('affiliate/login', '', true); $data['store'] = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'); $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); if ($this->customer->isLogged()) { $mail->setTo($this->customer->getEmail()); } else { $mail->setTo($args[1]['email']); } $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(sprintf($this->language->get('text_subject'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'))); $mail->setText($this->load->view('mail/affiliate', $data)); $mail->send(); } public function alert(&$route, &$args, &$output) { // Send to main admin email if new affiliate email is enabled if (in_array('affiliate', (array)$this->config->get('config_mail_alert'))) { $this->load->language('mail/affiliate'); $data['text_signup'] = $this->language->get('text_signup'); $data['text_website'] = $this->language->get('text_website'); $data['text_firstname'] = $this->language->get('text_firstname'); $data['text_lastname'] = $this->language->get('text_lastname'); $data['text_customer_group'] = $this->language->get('text_customer_group'); $data['text_email'] = $this->language->get('text_email'); $data['text_telephone'] = $this->language->get('text_telephone'); if ($this->customer->isLogged()) { $data['firstname'] = $this->customer->getFirstName(); $data['lastname'] = $this->customer->getLastName(); $data['email'] = $this->customer->getEmail(); $data['telephone'] = $this->customer->getTelephone(); } else { $data['firstname'] = $args[1]['firstname']; $data['lastname'] = $args[1]['lastname']; $data['email'] = $args[1]['email']; $data['telephone'] = $args[1]['telephone']; } $data['website'] = html_entity_decode($args[1]['website'], ENT_QUOTES, 'UTF-8'); $data['company'] = $args[1]['company']; $data['customer_group'] = ''; $mail = new Mail($this->config->get('config_mail_engine')); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); $mail->setTo($this->config->get('config_email')); $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode($this->language->get('text_new_affiliate'), ENT_QUOTES, 'UTF-8')); $mail->setText($this->load->view('mail/affiliate_alert', $data)); $mail->send(); // Send to additional alert emails if new affiliate email is enabled $emails = explode(',', $this->config->get('config_mail_alert_email')); foreach ($emails as $email) { if (utf8_strlen($email) > 0 && filter_var($email, FILTER_VALIDATE_EMAIL)) { $mail->setTo($email); $mail->send(); } } } } } Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 1
Recommended Posts