为 Typecho 增加独立的搜索页面

前言

过程

一个完整的站内搜索,至少包含如下两个部分

制作搜索结果页

  • 在主题中新增 search.php 文件

    • 如果不想新增文件,也可以在 archive.php 使用 if($this->is('search')) 实现
  • 如果需要调用当前正在搜索的关键词,可以使用 $this->_keywords 来获取

本站的代码示例如下

<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<?php $this->need('header.php'); ?>

<div id="main-in" role="main" class="clearfix">
    <h1 class="post-in-title">站内搜索</h1>
    <div class="category-search"> 
        <form method="post">
            <input type="text" name="s" class="text" placeholder="输入内容回车搜索" value= "<?php echo $this->_keywords ?>" />
        </form>
    </div>
    <h2>包含关键字 { <span class="keyword"><?php echo $this->_keywords ?></span> } 的文章</h2>
    <div class="category-block"> 
        <?php while ($this->next()): ?>
            <article class="category-post clearfix">
                <h3 class="category-post-title"><a href="<?php $this->permalink() ?>"><?php $this->title() ?></a></h3>
                <div class="category-post-meta"><a href="<?php $this->permalink() ?>"><?php $this->date() ?></a></div>
            </article>
        <?php endwhile; ?>
    </div>
    <?php $this->pageNav('&laquo; 前一页', '后一页 &raquo;'); ?>
</div><!-- end #main-->

最终效果如下

typecho 独立搜索页面.png

制作搜索入口页

分为如下两个步骤

  • 制作页面模板,具体可以搜索:Typecho 如何自定义页面模板
  • 创建一个独立页面并引用模板

本站的模板代码如下

<?php
/**
 * search
 *
 * @package custom
 */
$this->need('header.php'); ?>
<div id="main-in" role="main" class="clearfix">
    <h1 class="post-in-title">搜索已发布的内容</h1>
    <div class="category-search"> 
        <form method="post">
            <input type="text" name="s" class="text" placeholder="输入内容回车搜索" autofocus />
        </form>
    </div>
</div><!-- end #main-->

效果如下图所示

typecho 独立搜索页面制作.png

去亲自体验一下吧 https://paoti.club/search.html