【问题标题】:search title first,if come back without result then go to product description search首先搜索标题,如果返回没有结果,则转到产品描述搜索
【发布时间】:2017-07-27 09:42:23
【问题描述】:

我有一个 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>";
?>

【问题讨论】:

    标签: php search zen-cart


    【解决方案1】:

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

    使用版本 1.5.5e 行号:

    第 463 行以下

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

    您想重新运行查询,但启用了在产品描述中的搜索。

    我会这样做。在第 330 行的 if 块在第 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_replace1=0 更改为$new_str 并通过再次调用splitPageResults 重新运行查询。

    【讨论】:

      【解决方案2】:

      我建议安装Reloaded Search Module。您可以添加名称、元标记等的权重。如果您对中高级模块安装不满意,我会找人为您安装。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 2023-02-05
        相关资源
        最近更新 更多