Skip to content

搜索查询条件修改扩展 ​

通过 Filter_Plugin_ViewSearch_Core 接口,可以在 Z-BlogPHP 的 ViewSearch() 函数查询条件组装后、查询执行前修改查询条件,适用于限制搜索范围(如只搜标题)、调整搜索结果排序等场景。

接口信息 ​

接口参数说明
Filter_Plugin_ViewSearch_Core$q, $page, &$w, &$pagebar, &$orderViewSearch() 查询条件组装后、查询执行前触发

完整案例 ​

下例限制搜索只在文章标题中匹配关键词,不再匹配正文:

php
<?php

RegisterPlugin("demoAPP", "ActivePlugin_demoAPP");

function ActivePlugin_demoAPP()
{
    Add_Filter_Plugin('Filter_Plugin_ViewSearch_Core', 'demoAPP_ViewSearch_Core');
}

function demoAPP_ViewSearch_Core($q, $page, &$w, &$pagebar, &$order)
{
    // 重建关键词条件:只在标题中搜索
    foreach ($w as $k => $v) {
        if (is_array($v) && isset($v[1]) && in_array($v[1], array('log_Title', 'log_Content', 'log_Intro'))) {
            unset($w[$k]);
        }
    }
    $w[] = array('LIKE', 'log_Title', '%' . $q . '%');
}

注意事项 ​

  • 参数 $w、$pagebar、$order 需要在回调签名中使用引用传递(&$w 等),修改后才能对查询生效;
  • 该接口只在 search.php 入口触发,不作用于 index.php、feed.php 等其他入口;
  • 修改 $w 等条件将直接影响最终 SQL;默认搜索会同时匹配标题、摘要与正文,重建条件时注意保留原有的其他限制(如文章状态);
  • 修改 $order 可调整搜索结果排序方式,例如改为按浏览量排序。