special.aspx.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. /*******************************************************************************
  2. * iNethinkCMS - 网站内容管理系统
  3. * Copyright (C) 2012-2013 inethink.com
  4. *
  5. * @author jackyang <69991000@qq.com>
  6. * @website http://cms.inethink.com
  7. * @version 1.3.6.0 (2013-08-14)
  8. *
  9. * This is licensed under the GNU LGPL, version 3.0 or later.
  10. * For details, see: http://www.gnu.org/licenses/gpl-3.0.html
  11. *******************************************************************************/
  12. using System;
  13. using System.Data;
  14. using System.Collections.Generic;
  15. using System.Web;
  16. using System.Web.UI;
  17. using System.Web.UI.WebControls;
  18. using System.Text.RegularExpressions;
  19. using iNethinkCMS.Web.UI;
  20. namespace iNethinkCMS.Web
  21. {
  22. public partial class special : BasePage
  23. {
  24. protected void Page_Load(object sender, EventArgs e)
  25. {
  26. # region 页面传值分析
  27. string rID;
  28. int vID;
  29. rID = Request.QueryString["ID"];
  30. if (rID == null || rID.IndexOf(",", 0) > 0 || Command.Command_Validate.IsNumber(rID) == false)
  31. {
  32. Response.Write("<H3>栏目ID错误!</H3>");
  33. Response.End();
  34. }
  35. vID = Convert.ToInt32(rID);
  36. string rPage;
  37. rPage = Request.QueryString["page"];
  38. int vPage = 1;
  39. if (rPage != string.Empty && rPage != null && Command.Command_Validate.IsNumber(rPage))
  40. {
  41. vPage = Convert.ToInt32(rPage);
  42. }
  43. #endregion
  44. #region 获取页面信息
  45. string vHtml = "";
  46. bool vWebPageCache = Command.Command_Configuration.GetConfigBool("WebPageCache"); //判断是否启用了页面缓存
  47. if (vWebPageCache == false)
  48. {
  49. vHtml = Fun_GetSpecialContent(vID, vPage);
  50. }
  51. else
  52. {
  53. int vCacheTime = Command.Command_Configuration.GetConfigInt("CacheTime");
  54. string specialCacheKey = Command.Command_Configuration.GetConfigString("CacheKey") + "_SpecialCache_" + vID + "_" + vPage;
  55. object specialCacheInfo = Command.Command_DataCache.GetCache(specialCacheKey);
  56. //判断缓存是否存在
  57. if (specialCacheInfo == null)
  58. {
  59. vHtml = Fun_GetSpecialContent(vID, vPage);
  60. Command.Command_DataCache.SetCache(specialCacheKey, (object)vHtml, DateTime.Now.AddSeconds(vCacheTime), TimeSpan.Zero);
  61. }
  62. else
  63. {
  64. vHtml = specialCacheInfo.ToString();
  65. }
  66. }
  67. vHtml = WebUI_Function.Fun_UrlRewriter(vHtml);
  68. Response.Write(vHtml);
  69. #endregion
  70. }
  71. private string Fun_GetSpecialContent(int byID, int byPage)
  72. {
  73. //获取当前栏目信息
  74. BLL.BLL_iNethinkCMS_Special bll = new BLL.BLL_iNethinkCMS_Special();
  75. Model.Model_iNethinkCMS_Special model = new Model.Model_iNethinkCMS_Special();
  76. model = bll.GetModel(byID);
  77. if (model == null)
  78. {
  79. Response.Write("<H3>不存在该栏目!</H3>");
  80. Response.End();
  81. }
  82. if (model.Display == 0)
  83. {
  84. Response.Write("<H3>该栏目已被关闭!</H3>");
  85. Response.End();
  86. }
  87. //当该页面启用了跳转时,则跳转!
  88. if (model.SpecialUrl != null && model.SpecialUrl != string.Empty)
  89. {
  90. //Response.Redirect(model.SpecialUrl);
  91. Response.Clear();
  92. Response.Status = "301 Moved Permanently";
  93. Response.AddHeader("Location", model.SpecialUrl);
  94. Response.End();
  95. }
  96. string vTemplateUrl = vTemplateUrl = model.SpecialTemplate;
  97. DataTable dt = bll.GetList("[ID] = " + byID).Tables[0];
  98. DataRow dr = dt.Rows[0];
  99. WebUI_Template wt = new WebUI_Template();
  100. wt.Load_Template(vTemplateUrl);
  101. wt.vPage = byPage;
  102. wt.vCID = byID;
  103. wt.vContent = Regex.Replace(wt.vContent, Regex.Escape("{sys:title}"), siteConfig.WebName, RegexOptions.IgnoreCase);
  104. wt.vContent = Regex.Replace(wt.vContent, Regex.Escape("{sys:seotitle}"), seoConfig.SeoTitle, RegexOptions.IgnoreCase);
  105. wt.vContent = Regex.Replace(wt.vContent, Regex.Escape("{sys:keywords}"), seoConfig.IndexKeywords, RegexOptions.IgnoreCase);
  106. wt.vContent = Regex.Replace(wt.vContent, Regex.Escape("{sys:description}"), seoConfig.IndexDescription, RegexOptions.IgnoreCase);
  107. wt.vContent = Regex.Replace(wt.vContent, Regex.Escape("{sys:sitepath}"), "<a href=\"/\">首页</a> > 专题 > " + dr["SpecialName"].ToString(), RegexOptions.IgnoreCase);
  108. wt.vContent = Regex.Replace(wt.vContent, Regex.Escape("{field:specialtitle}"), dr["SpecialTitle"].ToString(), RegexOptions.IgnoreCase);
  109. wt.vContent = Regex.Replace(wt.vContent, Regex.Escape("{field:specialkeyword}"), dr["SpecialKeyword"].ToString(), RegexOptions.IgnoreCase);
  110. wt.vContent = Regex.Replace(wt.vContent, Regex.Escape("{field:specialdescription}"), dr["SpecialDescription"].ToString(), RegexOptions.IgnoreCase);
  111. wt.vContent = wt.Parser_Tags(0, @"\{field:(.+?)\}", wt.vContent, dr); //数据信息替换
  112. wt.Parser_MyTag();
  113. wt.Parser_List();
  114. wt.Parser_Page();
  115. wt.Parser_IF();
  116. return wt.vContent;
  117. }
  118. }
  119. }