使用http://easyautocomplete.com/ 对couchcms的search表单进行改造。
效果图如下:
下面演示一个自定义搜索表单的代码结构,
<form id="search_form" method="get" action="<cms:link 'search.php' />"> <input type="text" name="s" id="sss" value="请输入关键词" onfocus="if (document.forms['search_form'].sss.value === '请输入关键词') document.forms['search_form'].sss.value=''" onblur="if (document.forms['search_form'].sss.value == '') document.forms['search_form'].sss.value='请输入关键词'"> <button type="submit">搜索</button> </form>
Javascript代码如下:
<script> var options = { url: "<cms:show k_site_link />news_json.php", getValue: "name", highlightPhrase: false, list: { maxNumberOfElements: 500, match: { enabled: true }, sort: { enabled: true } } }; $("#sss").easyAutocomplete(options); </script>
我们看到option选项需要一个json格式的数据源,不用担心,可以新建一个标签把想要搜索的项目生成我们需要的json格式
以新闻为例,创建一个news_json.php隐藏项目,只获取数据,代码如下:
<?php require_once( 'couch/cms.php' ); ?> <cms:template title='新闻Json' hidden='1' /> <cms:content_type 'application/json'/> [ <cms:pages masterpage='news.php'> {"name": "<cms:addslashes><cms:show k_page_title/></cms:addslashes>"}<cms:if "<cms:not k_paginated_bottom/>">,</cms:if> </cms:pages> ] <?php COUCH::invoke(); ?>
上面代码将会生成一个json格式的新闻列表供autocomplete插件调用。