сначала ищите название, если возвращаетесь безрезультатно, тогда идите к поиску описания продукта

У меня есть веб-сайт zencart, в настоящее время мне нужно, чтобы клиент сначала искал плитку, потому что он получит много результатов, если также будет искать описание продукта. Так что я изменяю search_in_description на «0», что мне делать, если мне нужен поиск в продукте описание автоматически, если нет результата при поиске по названию?

$content = "";
$content .= zen_draw_form('quick_find_header', zen_href_link(FILENAME_ADVANCED_SEARCH_RESULT, '', $request_type, false), 'get');
$content .= "<span>Search: </span>";
$content .= zen_draw_hidden_field('main_page',FILENAME_ADVANCED_SEARCH_RESULT);
$content .= zen_draw_hidden_field('search_in_description', '0') . zen_hide_session_id();

if (strtolower(IMAGE_USE_CSS_BUTTONS) == 'yes') {
$content .= zen_draw_input_field('keyword', '', 'size="6" maxlength="120" class="search-header-box" value="' . HEADER_SEARCH_DEFAULT_TEXT . '" onfocus="if (this.value == \'' . HEADER_SEARCH_DEFAULT_TEXT . '\') this.value = \'\';" onblur="if (this.value == \'\') this.value = \'' . HEADER_SEARCH_DEFAULT_TEXT . '\';"') . '' . zen_image_submit (BUTTON_IMAGE_SEARCH,HEADER_SEARCH_BUTTON);
} else {
$content .= zen_draw_input_field('keyword', '', 'size="6" class="search-header-box" maxlength="120" value="' . HEADER_SEARCH_DEFAULT_TEXT . '" onfocus="if (this.value == \'' . HEADER_SEARCH_DEFAULT_TEXT . '\') this.value = \'\';" onblur="if (this.value == \'\') this.value = \'' . HEADER_SEARCH_DEFAULT_TEXT . '\';"');
}
$content .= zen_draw_pull_down_menu('categories_id', $categories_array,'','class="select" id="light_select"');
$content .= "</form>";
?>

1

Решение

Его нет в файле шаблона (что вы показываете). Изменения должны быть в include / modules / pages / advanced_search / header_php.php.

Используя номера строк версии 1.5.5e:

Ниже линии 463

if ($result->number_of_rows == 0) {

Вы хотите повторно выполнить запрос, но с включенным поиском в описании продукта.

Вот как бы я это сделал. После того, как блок if из строки 330 заканчивается в строке 335, я добавлю дополнительное предложение, которое никогда не сработает, например:

} else {
$where_str .= " OR (1=0)"}

Затем в строке 463, когда первоначальный поиск не удался, замените «1 = 0» логикой поиска по описанию продукта.

for ($i=0, $n=sizeof($search_keywords); $i<$n; $i++ ) {
$new_str .= " OR pd.products_description
LIKE '%:keywords%'";

$new_str .= $db->bindVars($new_str, ':keywords', $search_keywords[$i], 'noquotestring');
}

Тогда используйте str_replace изменить 1=0 в $new_str и перезапустите запрос, позвонив splitPageResults снова.

1

Другие решения

Я бы порекомендовал установить Перезагрузка модуля поиска. Чем вы можете добавить вес имени, метатеги и т. Д. Если вам не нравятся установки модулей среднего уровня, я найду кого-нибудь, кто установит его для вас.

0

По вопросам рекламы [email protected]