首先搜索标题,如果没有结果返回,则转到产品描述搜索

时间:2017-03-07 08:57:47

标签: php search zen-cart

我有一个zencart网站,目前我需要客户首先搜索瓷砖,因为如果搜索产品说明也会得到很多结果。我将' search_in_description'更改为" 0&#34 ;如果我需要它,如果没有从标题搜索中获得结果,我应该自动搜索产品说明?

$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>";
?>

2 个答案:

答案 0 :(得分:1)

它不在模板文件中(您正在显示的内容)。更改应位于includes / modules / pages / advanced_search / header_php.php中。

使用版本1.5.5e行号:

第463行

public class Greeting {

    private final long id;
    private final String content;

    public Greeting(long id, String content) {
        this.id = id;
        this.content = content;
    }

    public long getId() {
        return id;
    }

    public String getContent() {
        return content;
    }
}

您想要重新运行查询,但启用了产品说明中的搜索功能。

这是我怎么做的。在第330行的if块结束于第335行之后,我将添加一个永远不会触发的附加条款,例如:

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

然后在第463行,当原始搜索失败时,替换&#34; 1 = 0&#34;与产品描述搜索逻辑

} else { 
   $where_str .= " OR (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重新运行查询。

答案 1 :(得分:0)

我建议安装Reloaded Search Module。比你可以增加重量的名称,meta标签等。如果你不熟悉高级中级模块安装,我会找人安装它。