Это по умняку...
Сначала правим вьювер.
Открываем файл 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 .= ")";
Всё.