• Объявления

    • dinox

      Закрытый раздел разработчиков   21.08.2017

      У нас на форуме существует закрытый раздел для разработчиков в котором мы обсуждаем нюансы работы на нашем форуме, в каталоге дополнений и другие моменты которые интересны в большинстве случаев только разработчикам. На данный момент существует лишь 2 условия для попадания:
      1. Наличие промодерированного дополнения в нашем каталоге  2. Отсуствие варезной деятельности 
      Если эти правила выполнены, пишите запрос @ArtemPitov на попадание в раздел разработчиков
SuperNt

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

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

SuperNt    0

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

 

catalog/controller/product/search.php

 

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

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


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

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

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


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

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

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

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

Добавить 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    834

$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    834
Зачем ещё раз вписывать?

 

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

 

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

 

 

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

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

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


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

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

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


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

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

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

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

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

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

Войти

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

Войти


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

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