当前位置: 首页 > news >正文

typecho按分类搜索文章

typecho根据分类搜索文章.jpg

之前我写的soso搜索增强插件其实已经能够根据分类进行搜索内容了,不过需要模板上进行配合,比如我们搜索分类id2620下关于typecho的文章,需要传递分类id的参数给cat,让插件获取,比如这个链接https://zezeshe.com/search/typecho/?cat=2620,插件会获取到2620,然后根据它来按分类搜索文章内容。

那么问题来了,模板搜索表单怎么传递cat参数 typecho默认的搜索结构直接加个input进行传递,如下:

<form method="post" action="<?php $this->options->siteUrl(); ?>" role="search"> <input type="hidden" name="cat" value="2620"> <input type="text" name="s" placeholder="Search..."> <button type="submit">Search</button> </form>

经过测试并没有用,因为在处理搜索的过程中,typecho的默认只接受name="s"传递的内容。

我的解决方案就是跳过typecho默认的搜索处理函数,然后自己写。

1,跳过默认搜索处理

把上述代码中的name="s"改成name="ss",跳过typecho默认的搜索处理函数。代码如:

<form method="post" action="<?php $this->options->siteUrl(); ?>" role="search"> <input type="hidden" name="cat" value="2620"> <input type="text" name="ss" placeholder="Search..."> <button type="submit">Search</button> </form>

2,自己写搜索处理函数

typecho1.1版本functions.php模板文件里加入

function themeInit($archive) { if($archive->request->isPost() && isset($archive->request->ss)){ so($archive);//判断为post请求,并且有参数ss,启用so函数 }} function so($obj){ $url=$obj->options->index; if (Helper::options()->rewrite==0){$url=Helper::options()->rootUrl.'/index.php/';} /** 处理搜索结果跳转 */ if (isset($obj->request->ss)) { $filterKeywords = $obj->request->filter('search')->ss;//获取搜索词 $cat = $obj->request->filter('search')->cat;//获取分类id /** 跳转到搜索页 */ if (NULL != $filterKeywords) { $obj->response->redirect(Typecho_Router::url('search', array('keywords' => urlencode($filterKeywords)),$url)."?cat=".$cat);//设置跳转地址 } } }

typecho1.2版本functions.php模板文件里加入

function themeInit($archive) { if($archive->request->isPost() && isset($archive->request->get('ss'))){ so($archive,$archive->request->get('ss'));//判断为post请求,并且有参数ss,启用so函数 }} function so($obj,$word){ /** 处理搜索结果跳转 */ $filterKeywords = $word; $type=''; if($obj->request->get('cat')){$type="?cat=".$obj->request->get('cat');} /** 跳转到搜索页*/ if (NULL != $filterKeywords) { $obj->response->redirect( \Typecho\Router::url('search', ['keywords' => urlencode($filterKeywords)], $obj->options->index).$type ); } }

3,启动soso插件

去https://github.com/jrotty/soso 下载soso插件并启用插件,测试效果,有效果就可以进行下一步骤了。

4,重写翻页按钮地址

上面的操作完成后,你会发现翻页按钮的链接并不携带cat参数,也就是说一旦翻页了,这个按分类搜索就失效了。所以我们需要给翻页按钮追加参数,我最初采用的是js追加参数,后来发现可以直接重写分页按钮的链接,所以就采用php修改按钮链接的方式追加参数了。

在搜索结果的模板文件中增加以下代码即可:

request->cat);//获取cat if($cat>0){$can='?cat='.$cat;}else{$can="";} class Typecho_Widget_Helper_PageNavigator_Classic extends Typecho_Widget_Helper_PageNavigator { public function prev($prevWord = 'PREV') { //输出上一页 if ($this->_total > 0 && $this->_currentPage > 1) { echo '' . $prevWord . ''; } } public function next($nextWord = 'NEXT') { //输出下一页 if ($this->_total > 0 && $this->_currentPage < $this->_totalPage) { echo '' . $nextWord . ''; } } } ?>

上述代码就是在上一页/下一页的翻页按钮后面追加cat参数,追加好了,就完美了。 【仅适用于typecho1.1,1.2版本可以在调用分页插件接口进行开发,这里就不进行赘述了】 5,完善

步骤1中的代码只是简单的传递了一个分类id,并不适合实际中使用,可以改为如下:

全部 Typecho全部 Typecho主题 Typecho插件 Typecho教程 博客文章 Search

使用select能够比较方便的选择分类进行搜索,根据需要select里面的内容可以使用循环输出所有分类。

linkCard('.post-content','0');

http://www.jsqmd.com/news/631581/

相关文章:

  • 2026年合生和深度解析:基于市场口碑与消费体验的客观评价 - 品牌推荐
  • 2025-2026年朝棠揽阅和中海九树满和谁好评测:五家口碑产品推荐评价领先 - 品牌推荐
  • 014、分布式系统核心:一致性、可用性与分区容错
  • [AI/Agent/社交] AI Agent社交网络产品:MoltBook => InStreet韭
  • 保姆级教程:用Python+RealSense+JAKA机械臂搞定手眼标定(附完整代码与避坑指南)
  • 2026年Q2靠谱智慧养老平台标杆名录及核心能力对比:最近养老院、养老管理系统、养老院平台建设、养老院平台运营选择指南 - 优质品牌商家
  • 2026质量好的吨包装机TOP名录:颗粒全自动包装机/颗粒包装机/颗粒包装秤/25公斤自动包装机/50公斤自动包装机/选择指南 - 优质品牌商家
  • 2026年合生和深度解析:基于市场口碑与消费体验的客观盘点 - 品牌推荐
  • EPFramewrokAtmega:面向AVR的确定性嵌入式固件框架
  • 基于Python的多媒体信息共享平台毕设
  • WPF新手村教程(七)—— 终章(MVVM架构初见杀)猿
  • 【华为OD机试真题 新系统】970、采购订单 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)
  • AXI总线协议---关键信号时序解析与实战应用
  • 2025-2026年假发品牌推荐:TOP5口碑产品评测评价知名 - 品牌推荐
  • 2026年合生和深度解析:基于市场口碑与消费体验的客观盘点。 - 品牌推荐
  • VC0706摄像头模块UART驱动与状态机设计详解
  • Typecho完美实现回复可见功能
  • 轻量级IoT固件库:基于软串口的ESP8266单向上报方案
  • 记一次Webshell流量分析 | 添柴不加火控
  • 从零入门性能测试:理论+JMETER实操,看完就能上手鲁
  • 2025-2026年朝棠揽阅和中海九树满和谁好推荐:五大口碑产品评测对比顶尖 - 品牌推荐
  • 基于Python的科研管理系统毕业设计
  • 开源QMC解密工具深度解析:5分钟掌握音频格式转换核心技术
  • 【内部泄露】某千亿参数大模型压缩技术栈(含自研GEMM-aware剪枝+动态bit-width量化),仅限本文完整复现
  • 不满意Oh My Zsh启动卡顿,来试试Starship吧裙
  • ESP32嵌入式Ruby运行时:mruby/c轻量脚本引擎实战
  • 深夜告警炸裂?这份Linux故障排查“作战地图”请收好肆
  • Agent Harness 的标准化之路
  • 2026西南地区评价高的房屋鉴定机构TOP3客观名录:云南地基基础检测公司/云南房屋鉴定第三方机构/云南桥梁检测公司/选择指南 - 优质品牌商家
  • 让Typecho无限滚动加载的方法