Does anybody know how to edit the products.php files in version 1.5.0? I cannot find the getProductsbyKeywords function line in there at all
Many thanks,
Kayla

Many thanks,
Kayla
Does not work on 1.4.9navex wrote:Here is my refinement:
edit catalog/model/product/product.php
find public function getTotalProductsByKeyword
replace the whole function:with this:Code: Select all
public function getTotalProductsByKeyword($keyword, $category_id = 0, $description = FALSE) { if ($keyword) { $sql = "SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!$description) { $sql .= " AND LCASE(pd.name) LIKE '%" . $this->db->escape(strtolower($keyword)) . "%'"; } else { $sql .= " AND (LCASE(pd.name) LIKE '%" . $this->db->escape(strtolower($keyword)) . "%' OR LCASE(pd.description) LIKE '%" . $this->db->escape(strtolower($keyword)) . "%')"; } if ($category_id) { $data = array(); $this->load->model('catalog/category'); $string = rtrim($this->getPath($category_id), ','); foreach (explode(',', $string) as $category_id) { $data[] = "category_id = '" . (int)$category_id . "'"; } $sql .= " AND p.product_id IN (SELECT product_id FROM " . DB_PREFIX . "product_to_category WHERE " . implode(" OR ", $data) . ")"; } $sql .= " AND p.status = '1' AND p.date_available <= NOW() GROUP BY p.product_id"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['total']; } else { return 0; } } else { return 0; } }
find public function getProductsByKeyword(Code: Select all
public function getTotalProductsByKeyword($keyword, $category_id = 0, $description = FALSE, $start = 0, $limit = 2000) { if ($keyword) { $sql = "SELECT pd.name FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "stock_status ss ON (p.stock_status_id = ss.stock_status_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "'"; $keywords = explode(' ', $keyword); if (!$description) { foreach($keywords as $keyword) { $sql .= " AND LCASE(pd.name) LIKE '%" . $this->db->escape(strtolower($keyword)) . "%' OR LCASE(p.model) LIKE '%" . $this->db->escape(strtolower($keyword)) . "%' "; } } else { foreach($keywords as $keyword) { $sql .= " AND LCASE(pd.description) LIKE '%" . $this->db->escape(strtolower($keyword)) . "%' "; } } if ($category_id) { $data = array(); $this->load->model('catalog/category'); $string = rtrim($this->getPath($category_id), ','); foreach (explode(',', $string) as $category_id) { $data[] = "category_id = '" . (int)$category_id . "'"; } $sql .= " AND p.product_id IN (SELECT product_id FROM " . DB_PREFIX . "product_to_category WHERE " . implode(" OR ", $data) . ")"; } $sql .= " AND p.status = '1' AND p.date_available <= NOW() GROUP BY p.product_id"; if ($start < 0) { $start = 0; } $sql .= " LIMIT " . (int)$start . "," . (int)$limit; $query = $this->db->query($sql); if ($query->num_rows) { return sizeof($query->rows); } else { return 0; } } else { return 0; } }
replace:with this:Code: Select all
if (!$description) { $sql .= " AND LCASE(pd.name) LIKE '%" . $this->db->escape(strtolower($keyword)) . "%'"; } else { $sql .= " AND (LCASE(pd.name) LIKE '%" . $this->db->escape(strtolower($keyword)) . "%' OR LCASE(pd.description) LIKE '%" . $this->db->escape(strtolower($keyword)) . "%')"; }
would be happy to hear some feefback.Code: Select all
$keywords = explode(' ', $keyword); if (!$description) { foreach($keywords as $keyword) { $sql .= " AND LCASE(pd.name) LIKE '%" . $this->db->escape(strtolower($keyword)) . "%' OR LCASE(p.model) LIKE '%" . $this->db->escape(strtolower($keyword)) . "%' "; } } else { foreach($keywords as $keyword) { $sql .= " AND LCASE(pd.description) LIKE '%" . $this->db->escape(strtolower($keyword)) . "%' "; } }



Hi! I am using 1.5.1 Can somebody help how to improve the search function? I am not good in programming. But I think the search function is very important in case of an online shop. Thanks
Who is online
Users browsing this forum: No registered users and 7 guests