Jump to content

alex0410

Новичок
  • Content Count

    33
  • Joined

  • Last visited

Community Reputation

0 Обычный

About alex0410

  • Rank
    Пользователь
  • Birthday 10/04/1988

Информация

  • Пол
    Мужчина
  • Город:
    Казахстан. Костанай

Recent Profile Visitors

764 profile views
  1. Смысл был такой - создаем менеджера и он сможет заходить только в тот магазин, который будет указан http://prntscr.com/n5fm6i В итоге сделал проще обошлось правками в system/library user.php Все работает. Зайти могут только в свой магазин под одними и данными. Используем мультисайты с одной базой. Правда через попу, лучше бы через ocmod наверно
  2. Добрый день. Делал доп поле для входа в админку. В итоге оно будет скрыто и заполнятся по store_id. Делал так в admin/controller/common if (isset($this->request->post['store_id'])) { $data['store_id'] = $this->request->post['store_id']; } else { $data['store_id'] = ''; } if (isset($this->request->post['username'])) { $data['username'] = $this->request->post['username']; } else { $data['username'] = ''; } if (isset($this->request->post['password'])) { $data['password'] = $this->request->post['password']; } else { $data['password'] = ''; } в login.tpl добавил после <form> <div class="form-group"> <label for="input-store_id">Магазин</label> <div class="input-group"><span class="input-group-addon"><i class="fa fa-user"></i></span> <input type="text" name="store_id" value="<?php echo $store_id; ?>" placeholder="Магазин" id="input-store_id" class="form-control" /> </div> </div> в system/library user.php изменил, стало так public function login($username, $password, $store_id) { $user_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user WHERE store_id = '" . $this->db->escape($store_id) . "' AND username = '" . $this->db->escape($username) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1'"); И в итоге выходит Warning: Missing argument 3 for User::login(), called in и Undefined variable: store_id in На сколько я понял не передается $store_id, подскажите, где допустил ошибку или где то еще обрабатывается?
  3. Теперь не могу сделать вывод только статей для одного магазина так же, как и заказы( Сделал так - в модели public function getIid() { $sql = "SELECT information_id, store_id FROM " . DB_PREFIX . "information_to_store WHERE store_id = 0"; $query = $this->db->query($sql); return $query->rows; } в контроллере $this->load->model('catalog/information'); $results = $this->model_catalog_information->getIid(); foreach ($results as $result) { $data['iid'] = array( 'inf_id' => $result['information_id'] ); } в шаблоне вывод <?php if($iid['inf_id'] == $information['information_id']){ ?> Работает, но выводит только одно значение. Я так понимаю, что дело в модели, подскажите, что там не так сделал и почему только одно значение выводит?
  4. Решил проблему, добавил новую функцию public function getSid() { $query = $this->db->query("SELECT store_id FROM " . DB_PREFIX . "store"); return $query->row['store_id']; } На сколько правильно не знаю. Можно закрывать)
  5. В общем сложновато все) Подсмотрел в order_form.tpl Там есть $store_id. эту текущего магазина как я понял. <?php foreach ($stores as $store) { ?> <?php if ($store['store_id'] == $store_id) { ?> <option value="<?php echo $store['href']; ?>" selected="selected"><?php echo $store['name']; ?></option> <?php } else { ?> <option value="<?php echo $store['href']; ?>"><?php echo $store['name']; ?></option> <?php } ?> <?php } ?> На страницу всех заказов добавил переменную, что бы получать у каждого заказа store_id. Выводит, работает. Но теперь не могу вывести store_id магазина, в котором мы находимся. В общем хочу добавить после <?php if ($orders) { ?> <?php foreach ($orders as $order) { ?> сравнение, если $order['order_id'] = $store_id, то дальше выводим. Подскажите, как получить этот айди? На что ума хватило это $this->load->model('setting/store'); $data['store_id'] = $this->model_setting_store->getStore(); Но ошибки лезут.
  6. Добрый день. Создали два магазина через Управление магазинами. Но сейчас создали заказ и он выводится в админке одного, и другого. Подскажи, как можно сделать, что бы выводились заказы только того магазина, через который заказали. Видел на просторах интернета модуль Менеджеры что ли назывался, но он не подходит по версии. У меня ocstore 2.1 Возможно есть модуль какой то? Буду благодарен за любую помощь.
  7. Не нужно это исправлять. Картинки не залились везде, плюс не ставили картинку по умолчанию, если нет фото. Пункты только те, что написал выше. Лишних доработок не будет.
  8. ссылка на опенкарт 3 https://bit.ly/2FsZR5g ссылка на опенкарт 1.5 с которого переносим https://bit.ly/2T1sWbr
  9. Добрый вечер. Начали перенос сайта с 1.5 на 3. Товары, категории и прочее перенесли. Дизайн скопировали частично. Предыдущий программист пропал. Что осталось доделать: хлебные крошки, мини корзина, при добавлении товара обновляет количество в корзине, но при нажатии на иконку все равно пишет - корзина пуста, при добавлении товара всплывает окно, не закрывается на Х на странице товара (в категориях все нормально), страницу оформления полностью как на нашем опенкарт 1.5. Цена 2500руб. Оплата предпочтительно на яндекс. Пишите сроки и вопросы в личку.
  10. Добрый день. Установил модуль продавцов. Но никак не могу разобраться, хочу вывести в категории вместо товаров, продавцов у которых есть товары в данной категории. Но там вообще жуть...) Подскажите пожалуйста, как вывести хотя бы Информацию о продавце. Код которые выводит информацию на странице продукта: <operation> <search position="after"><![CDATA[ if ($product_info) { ]]></search> <add><![CDATA[ $this->document->addScript('catalog/view/javascript/dialog-sellercontact.js'); $this->document->addStyle('catalog/view/theme/' . $this->config->get('config_template') . '/stylesheet/multiseller.css'); $data = array_merge($data, $this->load->language('multiseller/multiseller')); $this->load->model('localisation/country'); $this->load->model('localisation/zone'); $this->load->model('tool/image'); $seller_id = $this->MsLoader->MsProduct->getSellerId($this->request->get['product_id']); $seller = $this->MsLoader->MsSeller->getSeller($seller_id); if (!$seller) { $data['seller'] = NULL; } else { $data['seller'] = array(); if (!empty($seller['ms.avatar'])) { $data['seller']['thumb'] = $this->MsLoader->MsFile->resizeImage($seller['ms.avatar'], $this->config->get('msconf_seller_avatar_product_page_image_width'), $this->config->get('msconf_seller_avatar_product_page_image_height')); } else { $data['seller']['thumb'] = $this->MsLoader->MsFile->resizeImage('ms_no_image.jpg', $this->config->get('msconf_seller_avatar_product_page_image_width'), $this->config->get('msconf_seller_avatar_product_page_image_height')); } $country = $this->model_localisation_country->getCountry($seller['ms.country_id']); if (!empty($country)) { $data['seller']['country'] = $country['name']; } else { $data['seller']['country'] = NULL; } $zone = $this->model_localisation_zone->getZone($seller['ms.zone_id']); if (!empty($zone)) { $data['seller']['zone'] = $zone['name']; } else { $data['seller']['zone'] = NULL; } if (!empty($seller['ms.company'])) { $data['seller']['company'] = $seller['ms.company']; } else { $data['seller']['company'] = NULL; } if (!empty($seller['ms.website'])) { $data['seller']['website'] = $seller['ms.website']; } else { $data['seller']['website'] = NULL; } $data['seller']['nickname'] = $seller['ms.nickname']; $data['seller']['seller_id'] = $seller['seller_id']; $data['seller']['href'] = $this->url->link('seller/catalog-seller/profile', 'seller_id=' . $seller['seller_id']); $data['seller']['total_sales'] = $this->MsLoader->MsSeller->getSalesForSeller($seller['seller_id']); $data['seller']['total_products'] = $this->MsLoader->MsProduct->getTotalProducts(array( 'seller_id' => $seller['seller_id'], 'product_status' => array(MsProduct::STATUS_ACTIVE) )); $data['contactForm'] = $this->MsLoader->MsHelper->renderPmDialog($data); } $data['ms_product_attributes'] = $this->MsLoader->MsAttribute->getProductAttributes($this->request->get['product_id'], array('multilang' => 0, 'attribute_type'=> array(MsAttribute::TYPE_TEXT, MsAttribute::TYPE_TEXTAREA, MsAttribute::TYPE_DATE, MsAttribute::TYPE_DATETIME, MsAttribute::TYPE_TIME), 'mavd.language_id' => 0)); $data['ms_product_attributes'] = array_merge($data['ms_product_attributes'], $this->MsLoader->MsAttribute->getProductAttributes($this->request->get['product_id'], (array()))); ]]></add> </operation> и это в тпл: <?php if (isset($seller) && !empty($seller)) { ?> <hr /> <div class="ms-sellerprofile description"> <h3><?php echo $ms_catalog_product_sellerinfo; ?></h3> <div class="seller-data"> <div class="avatar-box"> <a href="<?php echo $seller['href']; ?>"><img src="<?php echo $seller['thumb']; ?>" /></a> </div> <div class="info-box"> <ul class="list-unstyled"> <li><a class="nickname" style="text-decoration: none" href="<?php echo $seller['href']; ?>"><b><?php echo $seller['nickname']; ?></b></a></li> <?php if ($seller['country']) { ?> <li><?php echo $ms_catalog_seller_profile_country; ?></b> <?php echo $seller['country']; ?></li> <?php } ?> <?php if ($seller['zone']) { ?> <li><?php echo $ms_catalog_seller_profile_zone; ?></b> <?php echo $seller['zone']; ?></li> <?php } ?> <?php if ($seller['company']) { ?> <li><?php echo $ms_catalog_seller_profile_company; ?></b> <?php echo $seller['company']; ?></li> <?php } ?> <?php if ($seller['website']) { ?> <li><?php echo $ms_catalog_seller_profile_website; ?></b> <?php echo $seller['website']; ?></li> <?php } ?> <li><?php echo $ms_catalog_seller_profile_totalsales; ?></b> <?php echo $seller['total_sales']; ?></li> <li><?php echo $ms_catalog_seller_profile_totalproducts; ?></b> <?php echo $seller['total_products']; ?></li> <?php if ($this->config->get('mmess_conf_enable') || $this->config->get('msconf_enable_private_messaging') == 2) { ?> <?php if ((!$this->customer->getId()) || ($this->customer->getId() != $seller['seller_id'])) { ?> <?php echo $contactForm; ?> <div class="contact"> <?php if ($this->customer->getId()) { ?> <div class="button-group"> <button type="button" class="btn btn-default btn-block ms-sellercontact" data-toggle="modal" data-target="#contactDialog"><span><?php echo $ms_catalog_product_contact; ?></span></button> </div> <?php } else { ?> <?php echo sprintf($this->language->get('ms_sellercontact_signin'), $this->url->link('account/login', '', 'SSL'), $seller['nickname']); ?> <?php } ?> </div> <?php } ?> <?php } ?> </ul> </div> </div> <!-- end sellerinfo --> </div> <hr /> <!-- end seller block --> <?php } ?> как это в контроллер категории прикрутить то? и еще в модель продукта код: <operation> <search position="before" index="1" offset="2"><![CDATA[ ddddreturn $query->row['total']; ]]></search> <add><![CDATA[ $sql_disable = "SELECT p.product_id as 'product_id'"; /* Filters */ if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql_disable .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql_disable .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql_disable .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql_disable .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql_disable .= " FROM " . DB_PREFIX . "product p"; } $sql_disable .= " LEFT JOIN `" . DB_PREFIX . "ms_product` mp ON (p.product_id = mp.product_id)"; $sql_disable .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql_disable .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql_disable .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql_disable .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql_disable .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql_disable .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql_disable .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql_disable .= " OR "; } if (!empty($data['filter_tag'])) { $sql_disable .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql_disable .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql_disable .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql_disable .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql_disable .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql_disable .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql_disable .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql_disable .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql_disable .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql_disable .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $this->language->load('multiseller/multiseller'); $sql_disable .= " AND mp.list_until < NOW() AND p.status = 1"; $res_disable = $this->db->query($sql_disable); if ($res_disable->num_rows) { foreach ($res_disable->rows as $product) { $this->MsLoader->MsProduct->changeStatus((int)$product['product_id'], MsProduct::STATUS_DISABLED); $this->MsLoader->MsProduct->disapprove((int)$product['product_id']); $seller_id = $this->MsLoader->MsProduct->getSellerId((int)$product['product_id']); $mail = array( 'recipients' => $this->MsLoader->MsSeller->getSellerEmail($seller_id), 'addressee' => $this->MsLoader->MsSeller->getSellerName($seller_id), 'seller_id' => $seller_id, 'product_id' => (int)$product['product_id'] ); $this->MsLoader->MsMail->sendMail(MsMail::SMT_REMIND_LISTING, $mail); } } ]]></add> </operation> Заранее спасибо за потраченное время.
  11. Добрый день. Подскажите пожалуйста. Хочу добавить возможность доп отправки письма из админки тут http://prntscr.com/iyv8qc Кнопку вывел так : <div class="form-group"> <label class="col-sm-2 control-label">Отправить письмо опрос (Ваше мнение)</label> <div class="col-sm-10"> <input type="checkbox" name="notify2" value="1" /> </div> </div> И изменил в этом же файле js на это: data: 'order_status_id=' + encodeURIComponent($('select[name=\'order_status_id\']').val()) + '&notify=' + ($('input[name=\'notify\']').prop('checked') ? 1 : 0) + '&notify2=' + ($('input[name=\'notify2\']').prop('checked') ? 1 : 0) + '&override=' + ($('input[name=\'override\']').prop('checked') ? 1 : 0) + '&append=' + ($('input[name=\'append\']').prop('checked') ? 1 : 0) + '&comment=' + encodeURIComponent($('textarea[name=\'comment\']').val()), Добавил в admin/model/sale/order.php следующее: $nt=0; if(isset($data['notify2'])) { $nt=(int)$data['notify2']; } if($nt) { $subject='Ваше мнение о работе компании'; $html='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title></title> </head> <body style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #000000;"> <div>Мой текст</div> </body> </html> '; $mail = new Mail(); $mail->protocol = $this->config->get('config_mail_protocol'); $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($order_info['email']); $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8')); $mail->setHtml($html); $mail->setText($text); $mail->send(); unset($subject); unset($html); } Что я упустил? Самое интересное то, что в опенкарт 1.5 работает нормально подобная кнопка. Проблема видимо в том, что там я добавил после public function addOrderHistory. А в опенкарт 2.1 такого не вижу. Подскажи люди добрые)
    Купили, шаблон не дефолтный, помощи в установке нет. Написал в личку, дал доступы, после этого молчание, на сайте онлайн, личку читает, ответа нет. Слился.
  12. Добрый день. Подскажите, как можно вывести кастомное поле в админке или киньте ссылку на какую нибудь документацию, где хоть как нибудь описано (в контроллер нужно такое то, в модель такое то). Сами поля в базу создаются по кнопке, но не могу их вывести теперь для заполнения. Буду благодарен за любую помощь. Версия ocStore 2.3
  13. Хорошо, я вам завтра напишу, как установим ocstore.
  14. Хорошо, спасибо. Значит завтра все таки поставим на ocstore. Все равно у нас еще чистый опенкарт и если делать, то уже что б эти ссылки работали) И сколько будет стоить ваше дополнение? Что б ссылки к товарам были как писали выше.
×

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.