• 门户网站模板的核心处理逻辑


    /**************************************
     * 
     * 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
    
    
    
        }
    }
  • 相关阅读:
    Java学习第一课:搭建Eclipse+MyEclipse+Tomcat
    XFire 与 JAXWS的区别 GlassFish是Java EE 5的开源实现其中包括JAXWS
    在MyEclipse6.5上开发JAXWS web服务
    adobe acrobat professional8 .0 激活方法实施过程 记录
    MySQL MYSQL_ROW 返回的字段若是 float 如何在 C++程序中 把 字段值赋给 一个 float变量
    Arrays.sort 不区分大小写 排序
    Arrays.sort 不区分字母大小写 排序
    Applet与Servlet通讯的四种方法及其比较
    Arrays.sort 不区分大小写字母 Comparable
    利用 Arrays.sort 字符串 进行排序 完全按字符 排序 忽略字符大小写
  • 原文地址:https://www.cnblogs.com/Jeely/p/11349780.html
Copyright © 2020-2023  润新知