/************************************** * * author:李朴 * company:上海沐雪网络科技有限公司 * website:http://uweixin.cn * createDate:2013-11-1 * update:2014-12-30 * remark:本代码为门户网站模板的核心处理逻辑; * html模板页面上的所有的方法,属性都在这个类里处理。 * ***********************************/ using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; using MxWeiXinPF.Common; using VTemplate.Engine; namespace MxWeiXinPF.Templates { public class PortalTemplate { MxWeiXinPF.DAL.templatesDal tDal = new DAL.templatesDal(); #region 属性 protected internal string ccRight = "1e2124dd04e11d01b9df2865f85944be"; /// <summary> /// 当前页面的模板文档对象 /// </summary> protected TemplateDocument Document { get; private set; } /// <summary> /// 当前页面的模板文档的配置参数 /// </summary> protected virtual TemplateDocumentConfig DocumentConfig { get { return TemplateDocumentConfig.Default; } } /// <summary> /// 模版类型 /// </summary> public TemplateType tType { get; set; } #endregion /// <summary> /// 模版初始化 /// </summary> /// <param name="tPath">模版文件的完全路径</param> /// <param name="wid"></param> public PortalTemplate(string tPath) { this.Document = new TemplateDocument(tPath, Encoding.UTF8, this.DocumentConfig); } /// <summary> /// 输出最终的html /// </summary> /// <param name="templateFileName"></param> /// <param name="tPath"></param> /// <param name="wid"></param> public void OutPutHtml(string templateFileName) { ////注册一个自定义函数 //this.Document.RegisterGlobalFunction(this.GetNewsUrl); //对VT模板里的config变量赋值 Model.siteconfig config = new BLL.siteconfig().loadConfig(); string dd = "";//Utils.ObjectToStr(config.webkeyword); this.Document.Variables.SetValue("config", config); this.Document.SetValue("ccright", ccRight); this.Document.SetValue("thisurl", MyCommFun.getTotalUrl()); this.Document.SetValue("yuming", MyCommFun.getWebSite()); string openid = MyCommFun.RequestOpenid(); this.Document.SetValue("openid", openid); this.Document.Variables.SetValue("this", this); if (tType == TemplateType.Class) { //如果为列表页面 ArticleClassPage(); } if (tType == TemplateType.News) { ArticleDetailPage(); } if (tType == TemplateType.Channel) { ArticleChannelPage(); } //输出最终呈现的数据 this.Document.Render(HttpContext.Current.Response.Output); } #region 方法集合:注册到模版或者供模版调用 /// <summary> /// 列表页面独有的数据 /// </summary> public void ArticleClassPage() { int category_id = 0; int channel_id = 0; category_id = MyCommFun.RequestInt("cid"); if (category_id == 0) { var categoryid = this.Document.GetChildTagById("categoryid"); category_id = MyCommFun.Obj2Int(categoryid.Attributes["value"].Value.ToString()); } var channelid = this.Document.GetChildTagById("channel_id"); channel_id = MyCommFun.Obj2Int(channelid.Attributes["value"].Value.ToString()); //--=====begin: 将这个列表(文章类别)的基本信息展示出来 ====-- DAL.article_category cateDal = new DAL.article_category("dt_"); Model.article_category category = cateDal.GetModel(category_id); this.Document.SetValue("category", category); //--=====end: 将这个列表(文章类别)的基本信息展示出来 ====-- Tag orderByTag = this.Document.GetChildTagById("norderby"); string orderby = orderByTag.Attributes["value"].Value.ToString(); Tag pagesizeTag = this.Document.GetChildTagById("npagesize"); string pagesizeStr = pagesizeTag.Attributes["value"].Value.ToString(); int currPage = 1;//当前页面 int recordCount = 0;//总记录数 int totPage = 1;//总页数 int pageSize = MyCommFun.Str2Int(pagesizeStr);//每页的记录数 if (pageSize <= 0) { pageSize = 10; } if (MyCommFun.RequestInt("page") > 0) { currPage = MyCommFun.RequestInt("page"); } DataSet artlist = new DataSet(); if (category_id != 0) { DAL.article artDal = new DAL.article(); artlist = artDal.GetList("hotnews", category_id, pageSize, currPage, "channel_id=" + channel_id, orderby, out recordCount); if (artlist != null && artlist.Tables.Count > 0 && artlist.Tables[0].Rows.Count > 0) { DataRow dr; for (int i = 0; i < artlist.Tables[0].Rows.Count; i++) { dr = artlist.Tables[0].Rows[i]; if (dr["link_url"] == null || dr["link_url"].ToString().Trim().Length <= 0) { dr["link_url"] = "/portalpage/weixin_news_detail.aspx?id=" + dr["id"].ToString(); } artlist.AcceptChanges(); } totPage = recordCount / pageSize; int yushu = recordCount % pageSize; if (yushu > 0) { totPage += 1; } if (totPage < 1) { totPage = 1; } } if (currPage > totPage) { currPage = totPage; } } else { currPage = 1; recordCount = 0; totPage = 1; } this.Document.SetValue("totPage", totPage);//总页数 this.Document.SetValue("currPage", currPage);//当前页 this.Document.SetValue("newslist", artlist);//文章列表 string beforePageStr = ""; //上一页 string nextPageStr = ""; //下一页 string bgrey = "c-p-grey"; string ngrey = "c-p-grey"; if (currPage <= 1) { beforePageStr = "javascript:;"; bgrey = "c-p-grey"; } else { beforePageStr = MyCommFun.ChangePageNum(MyCommFun.getTotalUrl(), (currPage - 1)); beforePageStr = "href="" + beforePageStr + """; bgrey = ""; } if (currPage >= totPage) { nextPageStr = "javascript:;"; ngrey = " c-p-grey"; } else { nextPageStr = MyCommFun.ChangePageNum(MyCommFun.getTotalUrl(), (currPage + 1)); nextPageStr = "href="" + nextPageStr + """; ngrey = ""; } this.Document.SetValue("bpage", beforePageStr);//上一页 this.Document.SetValue("npage", nextPageStr);//下一页 this.Document.SetValue("bgrey", bgrey);//上一页灰色的样式 this.Document.SetValue("ngrey", ngrey);//下一页灰色的样式 } /// <summary> /// 信息详情页面 /// </summary> public void ArticleDetailPage() { DAL.article artDal = new DAL.article(); int aid = MyCommFun.RequestInt("id"); if (aid == 0) { var article_id = this.Document.GetChildTagById("article_id"); if (article_id != null && article_id.Attributes["value"]!=null) { aid = MyCommFun.Obj2Int(article_id.Attributes["value"].Value.ToString()); } } Model.article article = artDal.GetModel(aid); if (article != null) { this.Document.SetValue("model", article); } } /// <summary> /// 频道页面 /// </summary> public void ArticleChannelPage() { int cid = MyCommFun.RequestInt("cid"); if (cid == 0) { var category_id = this.Document.GetChildTagById("category_id"); if (category_id != null && category_id.Attributes["value"] != null) { cid = MyCommFun.Obj2Int(category_id.Attributes["value"].Value.ToString()); } } DAL.article_category cateDal = new DAL.article_category("dt_"); Model.article_category category = cateDal.GetModel(cid); if (category != null) { this.Document.SetValue("model", category); } } /// <summary> /// 取频道下的分类 /// </summary> public DataTable CategoryListByChannelName() { Tag tag = this.Document.CurrentRenderingTag; var attribute = tag.Attributes["channel_name"]; string channel_name = attribute.Text; //--=====begin: 将这个频道下的所有分类的基本信息 ====-- BLL.article_category cateDal = new BLL.article_category(); DataTable dt = cateDal.GetList(0, channel_name); return dt; //--=====end: 将这个频道下的所有分类的基本信息 ====-- } /// <summary> /// 获得某个分类下的文章 /// </summary> /// <returns></returns> public DataSet getArticleByCategory() { Tag tag = this.Document.CurrentRenderingTag; var attribute = tag.Attributes["rows"]; var categoryid = tag.Attributes["categoryid"]; // int category_id = MyCommFun.Obj2Int(categoryid.Text); int category_id = MyCommFun.Obj2Int(categoryid.Value.GetValue()); int rows = -1;//若为-1,则不做限制条件 if (attribute != null && MyCommFun.isNumber(attribute.Value.GetValue())) { rows = MyCommFun.Obj2Int(attribute.Value.GetValue()); } DataSet ds = tDal.GetPc_Article(category_id, "", rows, " sort_id asc "); if (ds != null && ds.Tables.Count > 0) { DataRow dr; for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { dr = ds.Tables[0].Rows[i]; if (dr["link_url"] == null || dr["link_url"].ToString().Trim() == "") { //如果link_url为空,则直接调用本系统的信息 dr["link_url"] = "javascript:;"; } } } return ds; } /// <summary> /// 分类页面的url链接 /// </summary> /// <param name="news"></param> /// <returns></returns> private object GetNewsUrl(object[] news) { if (news.Length > 0 && news[0] != null) { string ret = "/list.aspx?cid=" + news[0].ToString(); return ret; } else { return string.Empty; } } #endregion } }