/*******************************************************************************
* iNethinkCMS - 网站内容管理系统
* Copyright (C) 2012-2013 inethink.com
*
* @author jackyang <69991000@qq.com>
* @website http://cms.inethink.com
* @version 1.3.6.0 (2013-08-14)
*
* This is licensed under the GNU LGPL, version 3.0 or later.
* For details, see: http://www.gnu.org/licenses/gpl-3.0.html
*******************************************************************************/
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
using iNethinkCMS.Web.UI;
using iNethinkCMS.Helper;
namespace iNethinkCMS.Web
{
public partial class content : BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
# region 页面传值分析
string rID;
int vID;
rID = Request.QueryString["ID"];
if (rID == null || rID.IndexOf(",", 0) > 0 || Command.Command_Validate.IsNumber(rID) == false)
{
Response.Write("
内容ID错误!
");
Response.End();
}
vID = Convert.ToInt32(rID);
string rPage;
rPage = Request.QueryString["page"];
int vPage = 1;
if (rPage != string.Empty && rPage != null && Command.Command_Validate.IsNumber(rPage))
{
vPage = Convert.ToInt32(rPage);
}
#endregion
#region 获取页面信息
string vHtml = "";
bool vWebPageCache = Command.Command_Configuration.GetConfigBool("WebPageCache"); //判断是否启用了页面缓存
if (vWebPageCache == false)
{
vHtml = Fun_GetContent(vID, vPage);
}
else
{
int vCacheTime = Command.Command_Configuration.GetConfigInt("CacheTime");
string contentCacheKey = Command.Command_Configuration.GetConfigString("CacheKey") + "_ContentCache_" + vID;
object contentCacheInfo = Command.Command_DataCache.GetCache(contentCacheKey);
//判断缓存是否存在
if (contentCacheInfo == null)
{
vHtml = Fun_GetContent(vID, vPage);
Command.Command_DataCache.SetCache(contentCacheKey, (object)vHtml, DateTime.Now.AddSeconds(vCacheTime), TimeSpan.Zero);
}
else
{
vHtml = contentCacheInfo.ToString();
}
}
vHtml = WebUI_Function.Fun_UrlRewriter(vHtml);
Response.Write(vHtml);
#endregion
}
private string Fun_GetContent(int byID, int byPage)
{
//获取当前内容信息
BLL.BLL_iNethinkCMS_Content bll = new BLL.BLL_iNethinkCMS_Content();
Model.Model_iNethinkCMS_Content model = new Model.Model_iNethinkCMS_Content();
//获取当前栏目信息
BLL.BLL_iNethinkCMS_Channel bll_channel = new BLL.BLL_iNethinkCMS_Channel();
Model.Model_iNethinkCMS_Channel model_channel = new Model.Model_iNethinkCMS_Channel();
model = bll.GetModel(byID);
if (model == null)
{
Response.Write("不存在该内容信息!
");
Response.End();
}
int vCID = Convert.ToInt32(model.Cid); //栏目ID
int vSID = Convert.ToInt32(model.Sid); //专题ID
model_channel = bll_channel.GetModel(vCID);
if (model_channel == null)
{
Response.Write("不存在相应的栏目信息!
");
Response.End();
}
//当该页面启用了跳转时,则跳转!
if (model.Jumpurl != null && model.Jumpurl.Length > 0)
{
//Response.Redirect(model.Jumpurl);
Response.Clear();
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", model.Jumpurl);
Response.End();
}
string vTemplateUrl = ""; //对应的模板
vTemplateUrl = model_channel.Templateview;
DataTable dt = bll.GetList("[ID] = " + byID).Tables[0];
DataRow dr = dt.Rows[0];
WebUI_Template wt = new WebUI_Template();
wt.Load_Template(vTemplateUrl);
wt.vPage = byPage;
wt.vCID = vCID;
wt.vSID = vSID;
wt.vContent = Regex.Replace(wt.vContent, Regex.Escape("{sys:title}"), siteConfig.WebName, RegexOptions.IgnoreCase);
wt.vContent = Regex.Replace(wt.vContent, Regex.Escape("{sys:seotitle}"), seoConfig.SeoTitle, RegexOptions.IgnoreCase);
wt.vContent = Regex.Replace(wt.vContent, Regex.Escape("{sys:keywords}"), seoConfig.IndexKeywords, RegexOptions.IgnoreCase);
wt.vContent = Regex.Replace(wt.vContent, Regex.Escape("{sys:description}"), seoConfig.IndexDescription, RegexOptions.IgnoreCase);
string sitepath = $@"{WebUI_Function.Fun_GetSitePath(vCID,"",false)}- 正文
";
wt.vContent = Regex.Replace(wt.vContent, Regex.Escape("{sys:sitepath}"), sitepath, RegexOptions.IgnoreCase);
//替换专用标签
Regex regex = new Regex(@"{Tag:([\s\S]*?)}", RegexOptions.IgnoreCase);
MatchCollection matchCollection = regex.Matches(wt.vContent);
foreach (Match m in matchCollection)
{
string vContentTmp = "";
string vValueKey = m.Groups[1].Value;
switch (vValueKey.ToLower())
{
case "prev": //上一篇
vContentTmp = Get_Page_PrevNext(byID, vCID, "prev");
break;
case "next": //下一篇
vContentTmp = Get_Page_PrevNext(byID, vCID, "next");
break;
}
wt.vContent = wt.vContent.Replace(m.Value, vContentTmp);
}
//wt.vContent = Regex.Replace(wt.vContent, Regex.Escape("{field:contents}"), dr["Contents"].ToString(), RegexOptions.IgnoreCase);
wt.vContent = wt.Parser_Tags(0, @"\{field:(.+?)\}", wt.vContent, dr); //数据信息替换
wt.Parser_MyTag();
wt.Parser_List();
wt.Parser_Page();
wt.Parser_IF();
return wt.vContent;
}
//获取新闻信息的上一篇,下一篇
private string Get_Page_PrevNext(int byID, int byCID, string byFlag)
{
string vBaseUrl = System.Web.HttpContext.Current.Request.Url.AbsolutePath;
string vBackInfo = "";
string vWhere = "";
string vOrder = "";
switch (byFlag)
{
case "prev": //上一篇
vWhere = "[id] > " + byID + "";
vOrder = "[id] Asc";
break;
case "next": //下一篇
vWhere = "[id] < " + byID + "";
vOrder = "[id] Desc";
break;
}
BLL.BLL_iNethinkCMS_Content bll = new BLL.BLL_iNethinkCMS_Content();
DataTable dt = bll.GetList(1, vWhere + " and Display=1 and IsComment=1 ", vOrder).Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
vBaseUrl += "?id=" + dt.Rows[i]["ID"].ToString();
vBackInfo = "" + dt.Rows[i]["Title"].ToString() + "";
}
return vBackInfo;
}
}
}