SuperNt

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

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

SuperNt    0

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

 

catalog/controller/product/search.php

 

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

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


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

Не ужели не кто не знает?

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


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

Открываем файл 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

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


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

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

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

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


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

Открываем файл 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    143

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

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

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

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


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

пробуем 

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

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


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

custom_h1

 

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

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

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

 

 

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

 

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

 

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

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


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

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

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


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

$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']) . "%'";

    }

    

}

 

 

 

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

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


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

 

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

 

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

 

 

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

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

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


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

тема закрыта всем спасибо.

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


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

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

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

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

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

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

Войти

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

Войти


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

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