esistema1 Posted April 1, 2021 Report Share Posted April 1, 2021 Всем доброго дня. В админке есть функция "Создать новый заказ", при этом открывается окно где предлагается ввести названия или артикул товара. У меня у товаров есть варианты (42,44,46...) у каждого варианта соответственно свой id, как сделать чтобы товар добавлялся при вводе id варианта товара? Насколько я понял за эту форму отвечает simpla/ajax/add_order_product.php Вот его код <?php require_once('../../api/Simpla.php'); $simpla = new Simpla(); $limit = 100; if(!$simpla->managers->access('orders')) return false; $keyword = $simpla->request->get('query', 'string'); $keywords = explode(' ', $keyword); $keyword_sql = ''; foreach($keywords as $keyword) { $kw = $simpla->db->escape(trim($keyword)); $keyword_sql .= $simpla->db->placehold("AND (p.name LIKE '%$kw%' OR p.meta_keywords LIKE '%$kw%' OR p.id in (SELECT product_id FROM __variants WHERE sku LIKE '%$kw%'))"); } $simpla->db->query('SELECT p.id, p.name, i.filename as image FROM __products p LEFT JOIN __images i ON i.product_id=p.id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1) LEFT JOIN __variants pv ON pv.product_id=p.id AND (pv.stock IS NULL OR pv.stock>0) WHERE 1 '.$keyword_sql.' AND pv.id GROUP BY p.id ORDER BY p.name LIMIT ?', $limit); foreach($simpla->db->results() as $product) $products[$product->id] = $product; $variants = array(); if(!empty($products)) { $simpla->db->query('SELECT v.id, v.name, v.sku, v.price, IFNULL(v.stock, ?) as stock, (v.stock IS NULL) as infinity, v.product_id FROM __variants v WHERE v.product_id in(?@) AND (v.stock IS NULL OR v.stock>0) AND v.price>0 ORDER BY v.position', $simpla->settings->max_order_amount, array_keys($products)); $variants = $simpla->db->results(); } foreach($variants as $variant) if(isset($products[$variant->product_id])) $products[$variant->product_id]->variants[] = $variant; $suggestions = array(); foreach($products as $product) { if(!empty($product->variants)) { $suggestion = new stdClass; if(!empty($product->image)) $product->image = $simpla->design->resize_modifier($product->image, 35, 35); $suggestion->value = $product->name; $suggestion->data = $product; $suggestions[] = $suggestion; } } $res = new stdClass; $res->query = $keyword; $res->suggestions = $suggestions; header("Content-type: application/json; charset=UTF-8"); header("Cache-Control: must-revalidate"); header("Pragma: no-cache"); header("Expires: -1"); print json_encode($res); Подскажите пожалуйста что в нем надо исправить, чтобы заработало добавление товара по v.id? Quote Link to post Share on other sites
phukortsin Posted April 1, 2021 Report Share Posted April 1, 2021 $keyword_sql .= $simpla->db->placehold("AND (p.id='$kw' OR p.name LIKE '%$kw%' OR p.meta_keywords LIKE '%$kw%' OR p.id in (SELECT product_id FROM __variants WHERE sku LIKE '%$kw%'))"); Quote Link to post Share on other sites
esistema1 Posted April 1, 2021 Author Report Share Posted April 1, 2021 Не работает, вы добавили p.id, по этому столбцу форма ищет и без этой записи. Мне нужен поиск по varian id, если добавить просто v.id, то все равно не ищет. Quote Link to post Share on other sites
phukortsin Posted April 1, 2021 Report Share Posted April 1, 2021 $keyword_sql .= $simpla->db->placehold("AND (p.name LIKE '%$kw%' OR p.meta_keywords LIKE '%$kw%' OR p.id in (SELECT product_id FROM __variants WHERE id='$kw' OR sku LIKE '%$kw%' ))"); Quote Link to post Share on other sites
esistema1 Posted April 1, 2021 Author Report Share Posted April 1, 2021 (edited) ищет, находит товар, но добавляет первый вариант, а не тот которому соответствует variant id. Как сделать чтобы добавлялся вариант который соответствует varian id? Edited April 1, 2021 by esistema1 Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.