Qhiey
-
Публікації
6 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Повідомлення, опубліковані користувачем Qhiey
-
-
Всем двс .
Подскажите пожалуйста , как сделать так , что бы определённые товары после покупки получали статус " Заказ выполнен " , а другие " В обработке "?
Например для цифровых товаров сразу после покупки - " Заказ выполнен "
Для одежды , обуви и пр. - " В обработке " ? -
1 час назад, fanatic сказал:
и в контроллере нужно еще писать функцию, которая будет выбирать статусы
Всё получилось , спасибо за наводку , добавил две функции в контроллер и модель , пошаманил с js и всё получилось )
Только статусы отображаются наоборот , не name статуса а id , но это мелочи , спасибо ещё раз .Взял за основу вид не от " Показывать в категориях " , а от " Производителя " , так полегче было .
1 час назад, chukcha сказал:Спрашивается... ЗАЧЕМ?
У меня статусов over>>>>>>100000 (так надо)
Необходимо было как то сортировать это и сделать более удобным .Если кому надо вот ответ, хотя вряд ли кому пригодиться ))
в файле шаблона
<div class="form-group"> <label class="col-sm-2 control-label" for="input-stock-status"><span data-toggle="tooltip" title="<?php echo $help_stock_status; ?>"><?php echo $entry_stock_status; ?></span></label> <div class="col-sm-10"> <input type="text" name="stock_status" value="<?php echo $stock_status['name']; ?>" placeholder="<?php echo $entry_stock_status; ?>" id="input-stock-status" class="form-control" /> <input type="hidden" name="stock_status_id" value="<?php echo $stock_status_id; ?>" /> </div> </div>
+ добавить код JS вниз файла шаблона
// Stock_status $('input[name=\'stock_status\']').autocomplete({ 'source': function(request, response) { $.ajax({ url: 'index.php?route=catalog/manufacturer/autocomplete_stock&token=<?php echo $token; ?>&filter_name=' + encodeURIComponent(request), dataType: 'json', success: function(json) { json.unshift({ stock_status_id: 0, name: '<?php echo $text_none; ?>' }); response($.map(json, function(item) { return { label: item['name'], value: item['stock_status_id'] } })); } }); }, 'select': function(item) { $('input[name=\'stock_status\']').val(item['label']); $('input[name=\'stock_status_id\']').val(item['value']); } });
Добавить функцию в контроллер :
admin / controller / catalog / manufacturer.php (можно в любой , только изменить надо будет в js )
public function autocomplete_stock() { $json = array(); if (isset($this->request->get['filter_name'])) { $this->load->model('catalog/product'); $filter_data = array( 'filter_name' => $this->request->get['filter_name'], 'start' => 0, 'limit' => 5 ); $results = $this->model_catalog_product->getStockStatus($filter_data); foreach ($results as $result) { $json[] = array( 'stock_status_id' => $result['stock_status_id'], 'name' => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')) ); } }
Добавить функцию в модель :
admin/ model / catalog / product.phppublic function getStockStatus($data = array()) { $sql = "SELECT * FROM " . DB_PREFIX . "stock_status"; if (!empty($data['filter_name'])) { $sql .= " WHERE name LIKE '" . $this->db->escape($data['filter_name']) . "%'"; } $sort_data = array( 'name', 'sort_order' ); if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { $sql .= " ORDER BY " . $data['sort']; } else { $sql .= " ORDER BY name"; } if (isset($data['order']) && ($data['order'] == 'DESC')) { $sql .= " DESC"; } else { $sql .= " ASC"; } if (isset($data['start']) || isset($data['limit'])) { if ($data['start'] < 0) { $data['start'] = 0; } if ($data['limit'] < 1) { $data['limit'] = 20; } $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit']; } $query = $this->db->query($sql); return $query->rows; }
-
Всем двс , подскажите пожалуйста , как изменить вид в админке , в редакторе товара , выбор "статуса отсутсвия на складе " на такой же как " Выбор в каких категориях показывать товар " .
Нашёл код "показывать в категориях" в админке :
Получается как только вводишь первые буквы категории , она остаётся одна и можно её выбрать .
<div class="form-group"> <label class="col-sm-2 control-label" for="input-category"><span data-toggle="tooltip" title="<?php echo $help_category; ?>"><?php echo $entry_category; ?></span></label> <div class="col-sm-10"> <input type="text" name="category" value="" placeholder="<?php echo $entry_category; ?>" id="input-category" class="form-control" /> <div id="product-category" class="well well-sm" style="height: 150px; overflow: auto;"> <?php foreach ($product_categories as $product_category) { ?> <div id="product-category<?php echo $product_category['category_id']; ?>"><i class="fa fa-minus-circle"></i> <?php echo $product_category['name']; ?> <input type="hidden" name="product_category[]" value="<?php echo $product_category['category_id']; ?>" /> </div> <?php } ?> </div> </div> </div>
Статус на складе работает как select , он просто показывает все статусы и можно выбрать один из предложенных .
Вводить текст туда нельзя .
<div class="form-group"> <label class="col-sm-2 control-label" for="input-stock-status"><span data-toggle="tooltip" title="<?php echo $help_stock_status; ?>"><?php echo $entry_stock_status; ?></span></label> <div class="col-sm-10"> <select name="stock_status_id" id="input-stock-status" class="form-control"> <?php foreach ($stock_statuses as $stock_status) { ?> <?php if ($stock_status['stock_status_id'] == $stock_status_id) { ?> <option value="<?php echo $stock_status['stock_status_id']; ?>" selected="selected"><?php echo $stock_status['name']; ?></option> <?php } else { ?> <option value="<?php echo $stock_status['stock_status_id']; ?>"><?php echo $stock_status['name']; ?></option> <?php } ?> <?php } ?> </select> </div> </div>
Поменял код по образцу " выбора категоии " .
<div class="form-group"> <label class="col-sm-2 control-label" for="input-stock-status"><span data-toggle="tooltip" title="<?php echo $help_stock_status; ?>"><?php echo $entry_stock_status; ?></span></label> <div class="col-sm-10"> <input type="text" name="stock_status_id" value="" placeholder="<?php echo $entry_stock_status; ?>" id="input-stock-status" class="form-control" /> <div id="input-stock-status" class="well well-sm" style="height: 150px; overflow: auto;"> <?php foreach ($stock_statuses as $stock_status) { ?> <div id="input-stock-status<?php echo $stock_status['stock_status_id']; ?>"><i class="fa fa-minus-circle"></i> <?php echo $stock_status['name']; ?> <input type="hidden" name="stock_status_id" value="<?php echo $stock_status['stock_status_id']; ?>" /> </div> <?php } ?> </div> </div> </div>
Но у меня ничего не получилось , оно просто показывает так , будто я уже выбрал все статусы на складе и не работает .
Текст он вводит , но статус не предлагает к выбору .
Подскажите пожалуйста , как сделать выбор " статуса отсутсвия на складе " таким же , как выбор " в каких категориях показывать товар " . -
1 час назад, fanatic сказал:
$product_id = $this->request->get['product_id']; $sql = "SELECT ss.name FROM " . DB_PREFIX . "stock_status ss JOIN " . DB_PREFIX . "product p ON(p.stock_status_id = ss.stock_status_id) JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.product_id = '" . (int) $product_id . "' AND ss.language_id = '" . (int) $this->config->get('config_language_id') . "' AND p2s.store_id = '" . (int) $this->config->get('config_store_id') . "'"; $query = $this->db->query($sql); $status_name = $query->row['name']; if ($this->request->post['text'] == $status_name) { $json['error'] = $this->language->get('error_text'); }
Спасибо вам огромнейшее за помощь , работает всё как надо , наконец-то ёмаё ))))
Напишите пожалуйста в личку ваш я.кошель , я хочу вас отблагодарить копеечкой .
-
Всем двс , задача не стандартная , зачем мне это - лучше не спрашивайте ? .
но в общем , чпокаюсь уже с этим недели две , необходимо в контроллере product.php произвести некоторые махинации , в конце есть функция write() , которая отвечает за «написание» отзыва , там есть строчка :
if ((utf8_strlen($this->request->post['text']) < 25) || (utf8_strlen($this->request->post['text']) > 1000)) {
$json['error'] = $this->language->get('error_text');
}
так вот , изменив эту строчку таким образом :
if ($this->request->post['text'] == Статус на складе ){
$json['error'] = $this->language->get('error_text');
}
Получаем , что если клиент введёт текст в отзыв ( Статус на складе ) то появится сообщение об ошибке ,
теперь к самой задаче , подскажите пожалуйста , как захреначить туда переменную , например : $test = $product_info[‘stock_status’];
Что бы проверка текста работала со статусом на складе ?
по типу , что бы вот этот мрак , выглядел примерно так :
$test = $product_info[‘stock_status’];
if ($this->request->post['text'] == $test){
$json['error'] = $this->language->get('error_text');
}
надеюсь понятно написал суть вопроса , и если что , сильно не пинайте ??
Разные статусы заказа
в Opencart 2.x: Загальні питання
Опубліковано:
Понял , спасибо , буду разбираться .