Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Leaderboard

Popular Content

Showing content with the highest reputation on 07/09/2011 in all areas

  1. Самый простой вариант... Всегда ищет по Наименованию и по SKU, а по Описанию и по Модели - в соответствии с чекбоксами. Для уменьшения промахов ищется только точное совпадение SKU, в варианте "по умняку" - ищет SKU которые начинаются с введённой поисковой фразы Открываем файл catalog/model/catalog/product.php Ищем в двух местах if (!$model) { $sql .= ")"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } и изменяем в двух местах так if (!$model) { $sql .= " OR p.sku = '" . $this->db->escape($keyword) . "')"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%' OR p.sku = '" . $this->db->escape($keyword) . "')"; } Всё.
    2 points
  2. Это по умняку... Сначала правим вьювер. Открываем файл catalog/view/theme/default/template/product/search.tpl Ищем <tr> <td colspan="2"><?php if ($model) { ?> <input type="checkbox" name="model" id="model" checked="checked" /> <?php } else { ?> <input type="checkbox" name="model" id="model" /> <?php } ?> <?php echo $entry_model; ?></td> </tr> и после найденного добавляем <tr> <td colspan="2"><?php if ($sku) { ?> <input type="checkbox" name="sku" id="sku" checked="checked" /> <?php } else { ?> <input type="checkbox" name="sku" id="sku" /> <?php } ?> <?php echo $entry_sku; ?></td> </tr> почти в самом низу файла ищем if ($('#model').attr('checked')) { url += '&model=1'; } и после найденного добавляем if ($('#sku').attr('checked')) { url += '&sku=1'; } Так как мы добавили языковую переменную $entry_sku - добавим её в файл локализации... Открываем файл catalog/language/russian/product/search.php В конце файла, перед строкой ?> добавляем $_['entry_sku'] = 'Поиск по артикулу'; Вьювер готов, правим контроллер Открываем файл catalog/controller/product/search.php Ищем if (isset($this->request->get['model'])) { $url .= '&model=' . $this->request->get['model']; } и после найденного добавляем if (isset($this->request->get['sku'])) { $url .= '&sku=' . $this->request->get['sku']; } Ищем $this->data['entry_model'] = $this->language->get('entry_model'); и после найденного добавляем $this->data['entry_sku'] = $this->language->get('entry_sku'); Ищем if (isset($this->request->get['model'])) { $this->data['model'] = $this->request->get['model']; } else { $this->data['model'] = ''; } и после найденного добавляем if (isset($this->request->get['sku'])) { $this->data['sku'] = $this->request->get['sku']; } else { $this->data['sku'] = ''; } Ищем $product_total = $this->model_catalog_product->getTotalProductsByKeyword( $this->request->get['keyword'], isset($this->request->get['category_id']) ? $this->request->get['category_id'] : '', isset($this->request->get['description']) ? $this->request->get['description'] : '', isset($this->request->get['model']) ? $this->request->get['model'] : '');и изменяем так $product_total = $this->model_catalog_product->getTotalProductsByKeyword( $this->request->get['keyword'], isset($this->request->get['category_id']) ? $this->request->get['category_id'] : '', isset($this->request->get['description']) ? $this->request->get['description'] : '', isset($this->request->get['model']) ? $this->request->get['model'] : '', isset($this->request->get['sku']) ? $this->request->get['sku'] : ''); Ищем if (isset($this->request->get['model'])) { $url .= '&model=' . $this->request->get['model']; } и после найденного добавляем if (isset($this->request->get['sku'])) { $url .= '&sku=' . $this->request->get['sku']; } Ищем $results = $this->model_catalog_product->getProductsByKeyword( $this->request->get['keyword'], isset($this->request->get['category_id']) ? $this->request->get['category_id'] : '', isset($this->request->get['description']) ? $this->request->get['description'] : '', isset($this->request->get['model']) ? $this->request->get['model'] : '', $sort, $order, ($page - 1) * $this->config->get('config_catalog_limit'), $this->config->get('config_catalog_limit'));и изменяем так $results = $this->model_catalog_product->getProductsByKeyword( $this->request->get['keyword'], isset($this->request->get['category_id']) ? $this->request->get['category_id'] : '', isset($this->request->get['description']) ? $this->request->get['description'] : '', isset($this->request->get['model']) ? $this->request->get['model'] : '', isset($this->request->get['sku']) ? $this->request->get['sku'] : '', $sort, $order, ($page - 1) * $this->config->get('config_catalog_limit'), $this->config->get('config_catalog_limit')); Ищем if (isset($this->request->get['model'])) { $url .= '&model=' . $this->request->get['model']; } и после найденного добавляем if (isset($this->request->get['sku'])) { $url .= '&sku=' . $this->request->get['sku']; } Ищем if (isset($this->request->get['model'])) { $url .= '&model=' . $this->request->get['model']; } и после найденного добавляем if (isset($this->request->get['sku'])) { $url .= '&sku=' . $this->request->get['sku']; } Если обратил внимание - несколько раз ищем и правим одно и то-же... Это я все правки указал в порядке следования.С контроллером закончили - переходим к модели. Открываем файл catalog/model/catalog/product.php Ищем public function getProductsByKeyword($keyword, $category_id = 0, $description = FALSE, $model = FALSE, $sort = 'p.sort_order', $order = 'ASC', $start = 0, $limit = 20) {и изменяем так public function getProductsByKeyword($keyword, $category_id = 0, $description = FALSE, $model = FALSE, $sku = FALSE, $sort = 'p.sort_order', $order = 'ASC', $start = 0, $limit = 20) { Ищем if (!$description) { $sql .= " AND (pd.name LIKE '%" . $this->db->escape($keyword) . "%'"; } else { $sql .= " AND (pd.name LIKE '%" . $this->db->escape($keyword) . "%' OR pd.description LIKE '%" . $this->db->escape($keyword) . "%'"; } if (!$model) { $sql .= ")"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } и изменяем так $sql .= " AND (pd.name LIKE '%" . $this->db->escape($keyword) . "%'"; if ($description) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($keyword) . "%'"; } if ($model) { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%'"; } if ($sku) { $sql .= " OR p.sku LIKE '" . $this->db->escape($keyword) . "%'"; } $sql .= ")"; Ищем public function getTotalProductsByKeyword($keyword, $category_id = 0, $description = FALSE, $model = FALSE) {и изменяем так public function getTotalProductsByKeyword($keyword, $category_id = 0, $description = FALSE, $model = FALSE, $sku = FALSE) { Ищем if (!$description) { $sql .= " AND (pd.name LIKE '%" . $this->db->escape($keyword) . "%'"; } else { $sql .= " AND (pd.name LIKE '%" . $this->db->escape($keyword) . "%' OR pd.description LIKE '%" . $this->db->escape($keyword) . "%'"; } if (!$model) { $sql .= ")"; } else { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%')"; } и изменяем так $sql .= " AND (pd.name LIKE '%" . $this->db->escape($keyword) . "%'"; if ($description) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($keyword) . "%'"; } if ($model) { $sql .= " OR p.model LIKE '%" . $this->db->escape($keyword) . "%'"; } if ($sku) { $sql .= " OR p.sku LIKE '" . $this->db->escape($keyword) . "%'"; } $sql .= ")"; Всё.
    2 points
  3. Большое спасибо, очень полезное решение.
    1 point
  4. Есть еще такое решение как www.TalkDriver.ru Тоже очень классно выглядит, русские разработчики, бесплатное. У Zopim красивый интерфейс и очень интересный функционал, но платно. Есть чат-боты и другие уникальные функции. www.zopim.com На основе Zopim разработано крутое, но платное решение – www.krible.ru (бесплатная версия позволяет вести не более 30 чатов в месяц)
    1 point
  5. А я ничего и не предлагал. Я дал наводку. Предлагать более, после вашего ответа в личку у меня нет желанияПо коду можно понять что и чего. А если д...б как дерево, родишься баобабом Владимир Семёнович...
    -1 points
×
×
  • Create New...

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.