Android Опубликовано 19 марта, 2012 Жалоба Поделиться Опубликовано 19 марта, 2012 Необходимо вывести в клиентскую часть артикулы товаров и включить в поиск возможность искать по артикулу. Как реализовать?Есть ли готовые решения данной задачи? Вознаграждение обсуждается.Simpla 2.0.2 Цитата Ссылка на сообщение Поделиться на другие сайты
andrewftl Опубликовано 19 марта, 2012 Жалоба Поделиться Опубликовано 19 марта, 2012 Очень нужно тоже! версия 2.1 Цитата Ссылка на сообщение Поделиться на другие сайты
alinamolchanova Опубликовано 19 марта, 2012 Жалоба Поделиться Опубликовано 19 марта, 2012 постучитесь 314235331 помогу) Цитата Ссылка на сообщение Поделиться на другие сайты
beagler Опубликовано 19 марта, 2012 Жалоба Поделиться Опубликовано 19 марта, 2012 Поиск - в api/Products.php после $keywords = explode(' ', $filter['keyword']); пишем $keywords_table = ', s_variants v ';$keywords_field = ', v.sku '; вместо $keyword_filter .= $this->db->placehold('AND (p.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR p.meta_keywords LIKE "%'.mysql_real_escape_string(trim($keyword)).'%") '); пишем $keyword_filter .= $this->db->placehold(' AND p.id=v.product_id AND (v.sku LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR p.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR p.meta_keywords LIKE "%'.mysql_real_escape_string(trim($keyword)).'%") '); дальше в запросе после LEFT JOIN __brands b ON p.brand_id = b.id пишем $keywords_table теперь live поиск - открываем ajax/search_products.php и меняем запрос на $simpla->db->query('SELECT p.id, p.name, i.filename as image FROM __products pLEFT JOIN __images i ON i.product_id=p.id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1), __variantsWHERE p.id=__variants.product_id AND (p.name LIKE "%'.mysql_real_escape_string($keyword).'%" OR __variants.sku LIKE "%'.mysql_real_escape_string($keyword).'%") AND visible=1 ORDER BY p.name LIMIT ?', $limit); проверял, работает. Цитата Ссылка на сообщение Поделиться на другие сайты
filth Опубликовано 19 марта, 2012 Жалоба Поделиться Опубликовано 19 марта, 2012 beagler мегаспасибо, работает!!! Ещё бы что б на сайте отображало))только одно НО: выдаёт Notice: Undefined variable: keywords_table in...api/Products.php on line 127что это может быть? Цитата Ссылка на сообщение Поделиться на другие сайты
filth Опубликовано 19 марта, 2012 Жалоба Поделиться Опубликовано 19 марта, 2012 Вот нашёл решение для клиентской части (версия 2.1)в product.tpl после например (а вообще можно в любом месте){* Заголовок *}?<\h1 data-product="{$product->id}"uct->name|escape}></h1\>добавляем, например<\h3data-product="{$product->id}">Арт.{$product->variant->sku}></h2\> Цитата Ссылка на сообщение Поделиться на другие сайты
igoryk Опубликовано 19 марта, 2012 Жалоба Поделиться Опубликовано 19 марта, 2012 Встречал ранее другое решение меняем запрос на - if(!empty($filter['keyword'])) { $keywords = explode(' ', $filter['keyword']); foreach($keywords as $keyword) $keyword_filter .= $this->db->placehold('AND (p.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR p.meta_keywords LIKE "%'.mysql_real_escape_string(trim($keyword)).'%") '); }Больше ничего нигде не трогаем.Работает и админке, и по сайту (проверял на 2.1) Цитата Ссылка на сообщение Поделиться на другие сайты
beagler Опубликовано 19 марта, 2012 Жалоба Поделиться Опубликовано 19 марта, 2012 Что то не увидел в последнем решении артикула. А чтобы не было нотис - нужно в начале новым переменным присвоить '' Цитата Ссылка на сообщение Поделиться на другие сайты
filth Опубликовано 19 марта, 2012 Жалоба Поделиться Опубликовано 19 марта, 2012 "нужно в начале новым переменным присвоить '' - можно пожалуйста поподробнее)) Цитата Ссылка на сообщение Поделиться на другие сайты
beagler Опубликовано 20 марта, 2012 Жалоба Поделиться Опубликовано 20 марта, 2012 в начале функции $keywords_table=''; Цитата Ссылка на сообщение Поделиться на другие сайты
filth Опубликовано 20 марта, 2012 Жалоба Поделиться Опубликовано 20 марта, 2012 после этого вообще засыпает ошибками Цитата Ссылка на сообщение Поделиться на другие сайты
beagler Опубликовано 20 марта, 2012 Жалоба Поделиться Опубликовано 20 марта, 2012 после$order = 'p.position DESC';добавил$keywords_table = '';$keywords_field = '';Ошибок не наблюдаю Цитата Ссылка на сообщение Поделиться на другие сайты
filth Опубликовано 20 марта, 2012 Жалоба Поделиться Опубликовано 20 марта, 2012 Спасибо ОГРОМНОЕ!!! всё нормуль. Цитата Ссылка на сообщение Поделиться на другие сайты
filth Опубликовано 20 марта, 2012 Жалоба Поделиться Опубликовано 20 марта, 2012 Ещё раз огромное спасибо!!! Цитата Ссылка на сообщение Поделиться на другие сайты
Android Опубликовано 20 марта, 2012 Автор Жалоба Поделиться Опубликовано 20 марта, 2012 вместо$keyword_filter .= $this->db->placehold('AND (p.name LIKE \"%'.mysql_real_escape_string(trim($keyword)).'%\" OR p.meta_keywords LIKE \"%'.mysql_real_escape_string(trim($keyword)).'%\") ');У меня эта строка выглядит так: $keyword_filter .= $this->db->placehold('AND p.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" ');Делаю все как описано, в итоге при вводе артикула выпадает нужный товар, а при выборе, либо поиске выдает гору ошибок следующего вида: Warning: Unknown column 'v.product_id' in 'where clause' [sELECT count(distinct p.id) as count FROM s_products AS p WHERE 1 AND p.id=v.product_id AND (v.sku LIKE "%Nokia%" OR p.name LIKE "%Nokia%" OR p.meta_keywords LIKE "%Nokia%") AND p.id=v.product_id AND (v.sku LIKE "%C2-03%" OR p.name LIKE "%C2-03%" OR p.meta_keywords LIKE "%C2-03%") AND p.visible=1 ] in /home/....../docs/api/Database.php on line 116Warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' s_variants v AND p.id=v.product_id AND (v.sku LIKE "%N' at line 22 [sELECT p.id, p.url, p.brand_id, p.name, p.annotation, p.body, p.position, p.created as created, p.visible, p.featured, p.meta_title, p.meta_keywords, p.meta_description, b.name as brand, b.url as brand_url FROM s_products p LEFT JOIN s_brands b ON p.brand_id = b.id WHERE 1 , s_variants v AND p.id=v.product_id AND (v.sku LIKE "%Nokia%" OR p.name LIKE "%Nokia%" OR p.meta_keywords LIKE "%Nokia%") AND p.id=v.product_id AND (v.sku LIKE "%C2-03%" OR p.name LIKE "%C2-03%" OR p.meta_keywords LIKE "%C2-03%") AND p.visible=1 ORDER BY p.position DESC LIMIT 0, 24 ] in /home/....../docs/api/Database.php on line 116Warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' s_variants v AND p.id=v.product_id AND (v.sku LIKE "%N' at line 22 in /home/....../docs/api/Database.php on line 161Warning: Invalid argument supplied for foreach() in /home/....../docs/view/ProductsView.php on line 131Warning: Cannot modify header information - headers already sent by (output started at /home/....../docs/api/Database.php:116) in /home/....../docs/index.php on line 26 Цитата Ссылка на сообщение Поделиться на другие сайты
Android Опубликовано 20 марта, 2012 Автор Жалоба Поделиться Опубликовано 20 марта, 2012 да, у меня это происходит если из кода убрать \ Если все заменить как описано выше, live поиск не работает вообще. Цитата Ссылка на сообщение Поделиться на другие сайты
filth Опубликовано 20 марта, 2012 Жалоба Поделиться Опубликовано 20 марта, 2012 Android дай свою почту или аську, скину Тебе файлик готовый (api/Products.php )может с него у Тебя получиться списать. У меня всё работает. Цитата Ссылка на сообщение Поделиться на другие сайты
andrewftl Опубликовано 21 марта, 2012 Жалоба Поделиться Опубликовано 21 марта, 2012 А можно както поподробнее расписать весь путь модификации? Заранее большое спасибо!И если можно номера строк какие нужно менять, потому что некоторые строки которые нужно заменить встречаются дважды. Цитата Ссылка на сообщение Поделиться на другие сайты
filth Опубликовано 21 марта, 2012 Жалоба Поделиться Опубликовано 21 марта, 2012 andrewftl делай всё по инструкции beagler строки 40, 78, 96, 99, 125. Цитата Ссылка на сообщение Поделиться на другие сайты
fluor Опубликовано 30 марта, 2012 Жалоба Поделиться Опубликовано 30 марта, 2012 а куда вставить код, чтобы отображался артикул в админке, когда просматриваешь разом все товары Цитата Ссылка на сообщение Поделиться на другие сайты
filth Опубликовано 30 марта, 2012 Жалоба Поделиться Опубликовано 30 марта, 2012 в simpla/design/html/products.tplПримерно на 79йстроке после{foreach $product->variants as $variant} <li {if !$variant@first}class="variant" style="display:none;"{/if}> <i title="{$variant->name|escape}">вствить {$variant->sku|escape} Цитата Ссылка на сообщение Поделиться на другие сайты
fluor Опубликовано 30 марта, 2012 Жалоба Поделиться Опубликовано 30 марта, 2012 спасибо, работает! Цитата Ссылка на сообщение Поделиться на другие сайты
filth Опубликовано 30 марта, 2012 Жалоба Поделиться Опубликовано 30 марта, 2012 Недавно заметил, что обычный поиск по ключевым словам криво стал работать (после вышеизложеных изменений) - а именно при поиске должен найти не менее 150 товаров, на странице результата показывает всего 3!!! товара, и немеряно страниц для листания, и когда листаешь, то показывает всегда по три товара. Проверял всю последовательность изменений - данный баг появляется сразу после:" дальше в запросе послеLEFT JOIN __brands b ON p.brand_id = b.idпишем$keywords_table"Это только у Меня? Плиз хелп!!! Цитата Ссылка на сообщение Поделиться на другие сайты
filth Опубликовано 2 апреля, 2012 Жалоба Поделиться Опубликовано 2 апреля, 2012 Неужели только у меня??? Цитата Ссылка на сообщение Поделиться на другие сайты
scvorec Опубликовано 6 апреля, 2012 Жалоба Поделиться Опубликовано 6 апреля, 2012 А как дополнить поиск по названию категории?В myAdmin данный код все отображает, но в api/Products.php никак не удается модифицировать запрос.SELECT p . * FROM s_products p, s_categories c, s_products_categories pcWHERE p.id = pc.product_idAND c.id = pc.category_idAND c.name = '%keyword%'LIMIT 0 , 30 Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.