自定义动态模板页面.doc_第1页
自定义动态模板页面.doc_第2页
自定义动态模板页面.doc_第3页
自定义动态模板页面.doc_第4页
自定义动态模板页面.doc_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论