category.html
网址分类
标题相关代码
{if input('ks')}搜索“{:input('ks')}” - {/if}{:dingyi($c.name,'网址导航')} - {:set('title','set')}
上述代码用于设置页面标题。当存在名为 ks
的输入参数(即有搜索关键字)时,标题会显示“搜索‘[具体搜索关键字]’ - ” ,然后接着显示通过 dingyi
函数处理后的内容(第二个参数为默认值“网址导航”),最后加上通过 set
函数设置的标题内容。
搜索功能示例代码
<div class="form-container">
{if input('ks')}<h2>搜索“{:input('ks')}”</h2>{else/}<h2>网址导航</h2>{/if}
<form class="search-form" action="{:url('index/category')}" method="get">
<input type="text" class="search-input" name="ks" placeholder="输入您要搜索的关键词..." autocomplete="off" value="{:input('ks')}">
<button type="submit" class="submit-btn">立即搜索</button>
</form>
</div>
此代码实现了一个搜索表单功能。当存在 ks
输入参数时,页面会显示搜索的具体关键字;否则显示“网址导航”。表单的提交地址为 index/category
,用户输入的搜索关键字会通过 ks
参数传递,并且输入框会回显已输入的关键字内容。
判断有无搜索关键字的代码
{if !input('ks')}
有搜索
{else/}
无搜索
{/if}
该代码通过判断 ks
输入参数是否存在,来决定显示“有搜索”还是“无搜索”的提示信息。
分类列表代码
<li class="nav-item">
<a href="{:url('index/category')}" class="nav-link {if !input('id')}active{/if}">
全部
</a>
</li>
{volist name=":db_select('website_cate',['open'=>1],'20','px desc')" id="vo"}
<li class="nav-item">
<a class="nav-link {if input('id') == $vo.id}active{/if}" href="{:url('index/category',['id'=>$vo.id])}">{$vo.name}</a>
</li>
{/volist}
此部分代码生成了一个分类列表导航。首先是一个“全部”分类项,当 id
输入参数不存在时,该项会被添加 active
类(通常用于表示选中状态)。然后通过循环从数据库中查询状态为打开(open=1
)的前20条分类数据,并为每个分类生成一个列表项。当当前 id
输入参数与分类的 id
相同时,对应的分类项会被添加 active
类。
数据筛选及展示代码
<?php
if($c['id']){
$web = Db::name('website')->where(['open'=>1,'tid'=>$c['id']])->order('settop desc,id desc')->paginate([
'list_rows'=> 20,
'var_page' => 'page',
'query'=>request()->param()
]);
}else{
$web = Db::name('website')->where(['open'=>1])->where('title|keywords', 'like', '%' . input('ks') . '%')->order('settop desc,id desc')->paginate([
'list_rows'=> 20,
'var_page' => 'page',
'query'=>request()->param()
]);
}
?>
{if count($web)}
{volist name="$web" id="v"}
{if $v.tips}{$v.tips}{/if} <!-- 自定义提示 -->
{$v.ico} <!-- ico图标 -->
{$v.title} <!-- 网址标题 -->
{:cut(preg_replace('/###/is', '', $v.content), 40)} <!-- 40个字符网址描述 -->
{:url('index/url', ['id' => $v.id])} <!-- 直接访问 -->
{:url('index/website', ['id' => $v.id])} <!-- 查看详情 -->
{if $v.settop == 1}置顶操作{/if}
{/volist}
{$web|raw}//分页代码
{else/}
<div class='empty'>
<img src='/public/static/img/empty.png'>
<p>暂无数据</p>
</div>
{/if}
上述PHP和模板代码用于数据筛选和展示。当 $c['id']
存在时,从 website
表中筛选出状态为打开且属于指定分类(tid
为 $c['id']
)的数据,并按 settop
降序和 id
降序排列,进行分页处理(每页20条数据)。当 $c['id']
不存在时,则根据 ks
输入参数,在 title
或 keywords
字段中模糊匹配包含该关键字的数据进行同样的处理。如果查询到数据,则循环展示每条数据的相关信息(如提示、图标、标题等),并显示分页代码;如果没有查询到数据,则显示“暂无数据”的提示信息及对应的图片。