




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
自定义动态模板页面在ZCMS中我们的前端页面不管是静态还是动态的都通过模板来生成,这样可以很方便的处理各个不同站点的样式等问题。比如说搜索结果页面,会员中心页面等等,这些页面在不同的站点下虽然都是同样的功能,但是页面往往不同。下面我以搜索结果页面为例介绍一下如何通过模板来实现一个动态页面:1) 创建一个模板文件zsk_search_result.template.html放到站点的template目录下:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 站内搜索 关键字: input type=submit value=搜索 class=search_btn / 有$ResultTotal条结果符合$Request.HtmlEncodeQuery 的查询条件, 共耗时:$UseTime秒。 $Data.Title $Data.Content $Data.URL - $Data.PublishDate 2)创建动态模板解析UI类SearchResultUI,添加动态模板解析方法: 12345678910111213141516171819202122232425262728293031323334353637383940Priv(login = false) Alias(zsk/search/result) public void result(ZAction za) throws UnsupportedEncodingException String siteid = $V(SiteID); if (!NumberUtil.isLong(siteid) return; String query = ServletUtil.getChineseParameter(this.Request.getQueryString(), Query); if (ObjectUtil.empty(query) query = ; this.Request.put(Query, query); this.Request.put(HtmlEncodeQuery, StringUtil.htmlEncode(query); this.Request.put(URLEncodeQuery, URLEncoder.encode(query, Config.getGlobalCharset(); if (ObjectUtil.empty($V(PageIndex) this.Request.put(PageIndex, 1); SiteIndexTemplate srt = new SiteIndexTemplate(); try AbstractExecuteContext context = srt.getContext(siteid); context.setPreview(User.isLogin(); context.setInteractive(true); if (context.isPreview() TemplateContextUtil.addPreviewVariables(context); else TemplateContextUtil.addPublishVariables(context, ); context.addDataVariable(Request, this.Request); context.setPageIndex(this.Request.getInt(PageIndex); String template = template/zsk_search_result.template.html; AbstractTemplate tpl = ContentCorePlugin.getStaticizeContext() .getTemplateManager().find(template); tpl.setContext(context); tpl.setWriter(za.getResponse().getWriter(); tpl.execute(); catch (Exception e) e.printStackTrace(); za.writeHTML(e.getMessage(); 在此方法中31行指定了我们需要解析的模板相对站点的路径。3)在SearchResultUI类中添加搜索结果列表数据绑定方法: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071Priv(login = false) Alias(Search.ListBind) public DataTable getList(AbstractExecuteContext context) ArrayList sps = new ArrayList(); if (ObjectUtil.notEmpty($V(SiteID) sps.add(new SearchParam(SiteID, $V(SiteID), SearchParam.SearchType.Equal, BooleanClause.Occur.MUST); if (StringUtil.isNotEmpty($V(Sort) String sorts = StringUtil.splitEx($V(Sort), ,); for (String sort : sorts) sps.add(new SearchParam(sort, null, SearchParam.SearchType.Sort, BooleanClause.Occur.MUST); if (ObjectUtil.notEmpty($V(CatalogID) sps.add(new SearchParam(CatalogID, $V(CatalogID), SearchParam.SearchType.Equal, BooleanClause.Occur.MUST); else if (ObjectUtil.notEmpty($V(CatalogInnerCode) sps.add(new SearchParam(CatalogInnerCode, $V(CatalogInnerCode), SearchParam.SearchType.LeftLike, BooleanClause.Occur.MUST); String ctype = $V(ContentTypeID); if (ObjectUtil.notEmpty(ctype) if (ctype.indexOf(,) != -1) BooleanQuery subQuery = new BooleanQuery(); String arr = ctype.split(,); for (int i = 0; i arr.length; i+) Query q = new TermQuery(new Term(CONTENTTYPE, arri); subQuery.add(q, BooleanClause.Occur.SHOULD); sps.add(new SearchParam(subQuery, BooleanClause.Occur.MUST); else sps.add(new SearchParam(CONTENTTYPE, ctype, SearchParam.SearchType.Equal, BooleanClause.Occur.MUST); if (StringUtil.isNotEmpty($V(Query) sps.add(new SearchParam(Title, $V(Query), SearchParam.SearchType.Fulltext, BooleanClause.Occur.MUST); sps.add(new SearchParam(Status, String.valueOf(30), SearchParam.SearchType.Equal, BooleanClause.Occur.MUST); sps.add(new SearchParam(IndexEnable, Y, SearchParam.SearchType.Equal, BooleanClause.Occur.MUST); sps.add(new SearchParam(PageSize, context.getPageSize()+, SearchParam.SearchType.PageSize); sps.add(new SearchParam(PageIndex, context.getPageIndex()+, SearchParam.SearchType.PageIndex); SearchResult sr = SearchService.search(sps, true); context.setPageTotal(sr.Total); context.addDataVariable(UseTime, Double.valueOf(sr.UsedTime); context.addDataVariable(ResultTotal, Integer.valueOf(sr.Total); if (sr = null) | (sr.Total 0) SearchWordStat.getInstance().stat(sps); for (DataRow dr : dt) dr.set(URL, InternalURLUtil.getActualURL(dr.getString(URL), context); if (!context.isPreview() & (!dr.getString(URL).startsWith(http:/) dr.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肺癌中医诊疗试题及答案
- 销售班培训课件
- 2017年医疗培训课件
- 2025年线上线下融合零售策略创新报告
- 化工材质培训课件内容
- 涉农企业税收基础知识培训课件
- 电厂机务检修培训课件
- 消防队夏季防火知识培训课件
- 铂金彩妆培训课件
- GS967-Standard-生命科学试剂-MCE
- 四川省达川市2025年上半年事业单位公开招聘试题含答案分析
- 2025年餐饮经理人岗位胜任力评估试题及答案
- 2025标准建设银行贷款合同范本
- 2025供应链合同范本
- 2025年北京市中考道德与法治试卷试题真题(含答案详解)
- 产品偏离许可管理办法
- 食品行业标准化管理体系的构建研究
- 湖北农商行面试题目及答案
- 对便秘患者的健康教育
- 2025年中国热敏标签市场调查研究报告
- 仓库不良品管理制度
评论
0/150
提交评论