首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Destoon 實現自定義字段搜索功能的完整開發步驟

     編輯:PHP 相關知識

Destoon 實現自定義字段搜索功能的完整開發步驟

Destoon 後台可建立自定義字段,前台需開發對應搜索功能。本文提供基於 global.fun.php 擴展函數 + 模板調用的完整實現方案。

步驟一:擴展全局函數 (include/global.fun.php)

// 過濾空白字符
function loseSpace($pcon) {
    $pcon = preg_replace("/ /", "", $pcon);
    $pcon = preg_replace("/ /", "", $pcon);
    $pcon = preg_replace("/\r\n/", "", $pcon);
    $pcon = str_replace(chr(13), "", $pcon);
    $pcon = str_replace(chr(10), "", $pcon);
    $pcon = str_replace(chr(9), "", $pcon);
    return $pcon;
}

// 生成下拉搜索框
function select_search($name, $tb, $fid) {
    global $db;
    $title = '<select name="' . $name . '"><option value="">所有</option>';
    $r = $db->get_one("SELECT option_value FROM {$db->pre}fields WHERE name='$name' and tb='$tb'");
    $option_value = loseSpace($r["option_value"]);
    $ps = explode("*", $option_value); // * 分隔選項組
    foreach ($ps as $s) {
        if (!$s) continue;
        list($num, $word) = explode("|", $s); // | 分隔值與標籤
        $result[$num] = $word;
    }
    foreach ($result as $n => $v) {
        $selected = ($n == $fid) ? ' selected' : '';
        $title .= "<option value=\"$n\"$selected>$v</option>";
    }
    $title .= "</select>";
    return $title;
}

步驟二:修改模塊搜索邏輯 (module/sell/search.inc.php)

// 接收參數
$chengse = isset($chengse) ? intval($chengse) : 0;

// 構建查詢條件
if ($chengse) $condition .= " AND chengse=$chengse";

步驟三:模板調用

{select_search(chengse,sell,$chengse)}
  • chengse:字段名(對應 fields 表 name)
  • sell:模型標識(對應 tb)
  • $chengse:當前選中值(保持狀態)

原理解析

  1. fields 表存儲字段配置,option_value 格式:1|紅色*2|藍色*3|綠色
  2. loseSpace() 清理存儲時的空白干擾
  3. select_search() 解析配置生成 <select>,自動標記 selected
  4. 控制器接收 $_GET['chengse'] 追加 SQL 條件

擴展提示

同理可實現多字段組合搜索、範圍搜索(價格區間)、關鍵詞模糊搜索,核心均為「函數生成表單 + 控制器構建條件」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved