Перейти к содержанию
SuperNt

поиск по тегу h1

Рекомендуемые сообщения

Как сделать поиска по тегу h1 opencart 1.5 ? 

 

catalog/controller/product/search.php

 

что добавить? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Открываем файл catalog\model\catalog\product.php

Ищем:

if (!empty($data['filter_name'])) {
	$implode = array();

	$words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name'])));

	foreach ($words as $word) {
		$implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'";
	}
	
	if ($implode) {
		$sql .= " " . implode(" AND ", $implode) . "";
	}

	if (!empty($data['filter_description'])) {
		$sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'";
	}
} 

Заменяем:

if (!empty($data['filter_name'])) {
	$implode = array();

	$words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name'])));

	foreach ($words as $word) {
		$implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'";
		$implodeh1[] = "pd.seo_h1 LIKE '%" . $this->db->escape($word) . "%'";
	}
	
	if ($implode) {
		$sql .= " " . implode(" AND ", $implode) . "";
		$sql .= " OR " . implode(" OR ", $implodeh1) . "";
	}
	
	if (!empty($data['filter_description'])) {
		$sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'";
	}
	
}

Как-то так...

Изменено пользователем Fedka
  • +1 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Изминил немного код заработало

Изменено пользователем SuperNt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Открываем файл catalog\model\catalog\product.php

Ищем:

if (!empty($data['filter_name'])) {
	$implode = array();

	$words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name'])));

	foreach ($words as $word) {
		$implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'";
	}
	
	if ($implode) {
		$sql .= " " . implode(" AND ", $implode) . "";
	}

	if (!empty($data['filter_description'])) {
		$sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'";
	}
} 

Заменяем:

if (!empty($data['filter_name'])) {
	$implode = array();

	$words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name'])));

	foreach ($words as $word) {
		$implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'";
		$implodeh1[] = "pd.seo_h1 LIKE '%" . $this->db->escape($word) . "%'";
	}
	
	if ($implode) {
		$sql .= " " . implode(" AND ", $implode) . "";
		$sql .= " OR " . implode(" OR ", $implodeh1) . "";
	}
	
	if (!empty($data['filter_description'])) {
		$sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'";
	}
	
}

Как-то так...

 

 

Он выдаёт не отфильтрованный поиск. Как побороть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Фильтрацию по имени и т.д.

Чуть ниже в этом же функции подкорректировать...

Добавить seo_h1 для фильтра, аналогично name

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пробуем 

Изменено пользователем SuperNt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

custom_h1

 

Фильтрацию по имени и т.д.

Чуть ниже в этом же функции подкорректировать...

Добавить seo_h1 для фильтра, аналогично name

 

 

Не получилось не ищет точный результат. Выдает много товаров и 1 по запросу который нужен 

 

Вот это вписал .>>

 

if (!empty($data['filter_description'])) {
$sql .= " OR pd.h1 LIKE '%" . $this->db->escape($data['filter_name']) . "%'";
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$sql .= " OR " . implode(" AND ", $implodeh1) . "";

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$sql .= " OR " . implode(" AND ", $implodeh1) . "";

 

 

 

Заменяем:

if (!empty($data['filter_name'])) {

    $implode = array();

    $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name'])));

    foreach ($words as $word) {

        $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'";

        $implodeh1[] = "pd.seo_h1 LIKE '%" . $this->db->escape($word) . "%'";

    }

    

    if ($implode) {

        $sql .= " " . implode(" AND ", $implode) . "";

        $sql .= " OR " . implode(" OR ", $implodeh1) . "";

    }

    

    if (!empty($data['filter_description'])) {

        $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'";

    }

    

}

 

 

 

Зачем ещё раз вписывать? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Зачем ещё раз вписывать?

 

Потому что вы не внимательны

 

$sql .= " OR " . implode(" AND ", $implodeh1) . "";

 

 

   $sql .= " OR " . implode(" OR ", $implodeh1) . "";

Изменено пользователем chukcha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×