

alex0410
Новачок-
Публікації
40 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Усі публікації користувача alex0410
-
Нет, не так поняли или я не так объяснил. к примеру: есть категория -Главная, в ней есть подкатегории - подкатегория1, подкатегория2 и т.п. в них есть товары - товар1, товар2 и т.п. далее заходим в категорию Главная, выбираем фильтровать по каким то значениям и нам показывает те товары, в которых есть эти значения(атрибуты, опции и т.п.). а нужно, что бы при фильтрации показывало подкатегории тех товаров, в которых есть эти значения. что бы не показывало товары вообще (это я могу сделать через схемы, дизайн и мелкие правки) что бы при фильтрации показывало не товары, а подкатегории, в которых есть эти товары подходящие под фильтрацию. не знаю как объяснить по другому(
-
Здравствуйте. В общем необходимо, что бы при фильтрации товаров на странице категорий, фильтр показывал не товары подходящие под результат, а категории в которых находятся данные товары подходящие по результат. Не знаю, как правильно выразился или нет. В общем может кто то видел похожий модуль. Или может кто то подскажет, как вывести подкатегории в список товаров. Имею ввиду блок с товаром, там - фото товара, цена и т.п. и туда же вывести главную категорию указанную в настройках. А я уже могу убрать все ненужное и оставить только название этой категории и ссылку на нее. Оксторе 3. Заранее спасибо за ответ!
-
Спасибо за помощь. Но не подходит. Вывел по вашему пример. Для двойки делал так $data['parent_link'] = $this->url->link('product/category', '&path='.$parent_category_id); Выводит ссылку. Но нужно название категории. И у меня чпу с товарами и категориями не стоит. Имею ввиду, ссылка товаров домен.ком/товар и там хлебных крошек нет. Только Главная - Товар Но спасибо и за такую помощь!
-
Добрый день. В общем не могу никак понять, как можно вывести название главной категории в подкатегории. Делаю описание в категории, что то вроде - Искали $heading_title... Но есть производители, которые делают разный ассортимент (процессоры, мат платы и оперативки). А хотелось бы что то вроде - искали $glavnaya_cat $heading_title... что бы получилось -искали процессоры AMD... Или искали видеоадаптеры amd... В гугле искал( Может кто подскажет, в какую сторону копать?
-
Смысл был такой - создаем менеджера и он сможет заходить только в тот магазин, который будет указан http://prntscr.com/n5fm6i В итоге сделал проще обошлось правками в system/library user.php Все работает. Зайти могут только в свой магазин под одними и данными. Используем мультисайты с одной базой. Правда через попу, лучше бы через ocmod наверно
-
Добрый день. Делал доп поле для входа в админку. В итоге оно будет скрыто и заполнятся по 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, подскажите, где допустил ошибку или где то еще обрабатывается?
-
Теперь не могу сделать вывод только статей для одного магазина так же, как и заказы( Сделал так - в модели 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']){ ?> Работает, но выводит только одно значение. Я так понимаю, что дело в модели, подскажите, что там не так сделал и почему только одно значение выводит?
-
В общем сложновато все) Подсмотрел в 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(); Но ошибки лезут.
-
Добрый день. Создали два магазина через Управление магазинами. Но сейчас создали заказ и он выводится в админке одного, и другого. Подскажи, как можно сделать, что бы выводились заказы только того магазина, через который заказали. Видел на просторах интернета модуль Менеджеры что ли назывался, но он не подходит по версии. У меня ocstore 2.1 Возможно есть модуль какой то? Буду благодарен за любую помощь.
-
Добрый вечер. Начали перенос сайта с 1.5 на 3. Товары, категории и прочее перенесли. Дизайн скопировали частично. Предыдущий программист пропал. Что осталось доделать: хлебные крошки, мини корзина, при добавлении товара обновляет количество в корзине, но при нажатии на иконку все равно пишет - корзина пуста, при добавлении товара всплывает окно, не закрывается на Х на странице товара (в категориях все нормально), страницу оформления полностью как на нашем опенкарт 1.5. Цена 2500руб. Оплата предпочтительно на яндекс. Пишите сроки и вопросы в личку.
-
Добрый день. Установил модуль продавцов. Но никак не могу разобраться, хочу вывести в категории вместо товаров, продавцов у которых есть товары в данной категории. Но там вообще жуть...) Подскажите пожалуйста, как вывести хотя бы Информацию о продавце. Код которые выводит информацию на странице продукта: <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> Заранее спасибо за потраченное время.
-
Добрый день. Подскажите пожалуйста. Хочу добавить возможность доп отправки письма из админки тут 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()) + '¬ify=' + ($('input[name=\'notify\']').prop('checked') ? 1 : 0) + '¬ify2=' + ($('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 такого не вижу. Подскажи люди добрые)
-
-
- наличие
- индикатор наличия
- (і ще %d)
-
Добрый день. Подскажите, как можно вывести кастомное поле в админке или киньте ссылку на какую нибудь документацию, где хоть как нибудь описано (в контроллер нужно такое то, в модель такое то). Сами поля в базу создаются по кнопке, но не могу их вывести теперь для заполнения. Буду благодарен за любую помощь. Версия ocStore 2.3
-
Хорошо, я вам завтра напишу, как установим ocstore.
-
Хорошо, спасибо. Значит завтра все таки поставим на ocstore. Все равно у нас еще чистый опенкарт и если делать, то уже что б эти ссылки работали) И сколько будет стоить ваше дополнение? Что б ссылки к товарам были как писали выше.
-
в ocstore значит можно такое сделать? Кажется там есть сео про.
-
Опенкарт Version 2.1.0.2 (trs.2.0.3.0) Из сео модулей ничего не ставили вообще, опенкарт чистый.
-
А может вы сделаете ocmod? И на продажу, я бы сразу купил, хоть завтра