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

/**************************************
 *
 * 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

    }
}

原文地址:https://www.cnblogs.com/Jeely/p/11349780.html

时间: 2024-11-02 10:20:06

门户网站模板的核心处理逻辑的相关文章

微商城模板的核心处理逻辑

/************************************** * * author:李朴 * company:上海沐雪网络科技有限公司 * website:http://uweixin.cn * createDate:2013-11-1 * update:2014-12-30 * remark:本代码为微商城模板的核心处理逻辑: * html模板页面上的所有的方法,属性都在这个类里处理. * ***********************************/ using

红色的企业新闻门户网站模板

链接:http://pan.baidu.com/s/1jHMYErG 密码:zuya

SharePoint Online 创建门户网站系列之图片滚动

?? 前 言 创建SharePoint Online栏目我们之前已经介绍过了,具体就是内容编辑器方式.自带WebPart方式和JavaScript读取后台数据前台做展示的三种: 但是,对于复杂的展示来说,这些方式还是会比较难以实现,虽然对于首页的图片轮播来说,通过JavaScript方式已经完全能够胜任,但是,我还是想通过这个栏目,为大家介绍如何使用沙盒解决方案创建WebPart,来完成更加复杂的前台展示. 下面,让我们开始在SharePoint Online的门户网站中创建沙盒解决方案吧 .

大型网站技术架构--核心原理和案例分析 大型网站架构演化(一)

如果把上世纪90年代CERN正式发布web标准和第一个WEB服务的出现当作互联网的开始,那么互联网站的发展之经历了短短20多年的时间.在20多年的时间里,互联网的世界发生了变化,今天,全球有近一半的人口使用互联网,人们的生活因为互联网而产生了巨大的变化.从信息检索到即使通信,从电子购物到文化娱乐,互联网渗透到生活的每一个 角落,而且这种趋势还在蔓延.因为互联网,我们的世界正变得越来越小. 同时我们也看到,在互联网跨越式发展进程中,在电子商务火热的市场背后却是不堪重负的网站架构.某些B2C网站逢促

好看的手机网站模板

今天在网上看到一些比较好的手机网站模板,分享给大家,如果大家觉得可以可以自己去下载. 时尚资讯手机网站模板下载 手机商城手机网站模板下载 饰品批发手机网站模板 游戏交易平台手机网站模板 HTML5+jQuery Mobile手机网站模板两套 花店微信网站,手机网站模板下载 大厦楼层分布微信网站模板下载 食品行业手机网站微信网站模板下载 手机网站登陆注册html页面 械手机wap网站模板HTML下载 美女图片手机wap网站模板 点餐微网站模板 手机wap企业网站模板下载 知识手机网站手机wap网站

关于大型门户网站系统的性能优化

鉴于B/S架构在维护成本和客户端配置等方面所具有的绝对优势,越来越多的系统采用了B/S架构,包括ERP.CRM等管理系统也开始向Internet靠拢.而B/S架构的系统却往往很难预计到系统并发访问数有多少,系统往往在高并发访问量的时候出现性能瓶颈,具体表现为页面提示超时信息或者提示数据库抛出的异常信息.为此,针对于B/S架构的面向Internet的系统,尤其是像淘宝.当当网等日访问量超过20余万的大型门户网站进行性能优化是势在必行! 针对大型门户网站系统的性能优化方案有以下几种: (1)页面静态

移动互联与门户网站的交融发展

移动是互联网用户增长的主要动力.把握住移动领域的机遇,对于目前任何一家公司来说都是最迫切的目标.想要走的更远,抓住移动生活的机会极其重要,对于上市后的微博来说,能真正意识到并开始有所实际举措,这个价值就不局限在单纯的产品角度,而关乎自身未来的命运. 用户对于互联网的需求不断提升,早在2001年,实际上,移动互联网已经进入,当时三大门户网站都已经开展了wap站点的建设,内容虽然稀少,但已经有了.移动互联的来临,门户一直没有落后,记性好的网友一定不会忘记,在中国互联网遭遇泡沫破灭的那些年,无线业务是

discuz! X3.2 自定义后台门户模块模板里的标签

这里只提供对源码的修改, 至于插件, 暂不考虑... 想在首页里展示一些自定义字段的内容, 奈何dz无此功能, 无奈去扒源码. 首先切到 source 文件夹下 1. 在 class/block/portal/block_article.php 此文件里, 找到 getdata 方法, 在大约 305 行, 找到 $list 数组, 对 'fields' 元素添加字段 $list[] = array( >--->--->--->---'id' => $data['aid'],

中小企业做网站首选方式:网站模板建站

网络技术的革新,建站技术的进步,使得市面上出现非常多的模板建站商,这也导致定制建站市场不断的被压缩.模板建站深受广大企业欢迎,必定有其原因的,既然企业选择模板建站,那模板建站肯定是可以满足到企业的建站需求.模板建站究竟为企业能带来什么样的优势呢? 网站模板专业性更加强 众所周知,企业网站建设是需要有非常专业的团队的,如果企业为了一个网站而花费大量的时间和精力组建团队,这样的效益是非常低的.如果使用模板建站,那就可以避免这个问题了,网站的模板都是由建站商专业的设计人员设计出来,美工水平都是相当高的