Backup/Discuz.Forum/ForumPageTemplate.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System.Data;
using System.Text.RegularExpressions;

using Discuz.Common;

namespace Discuz.Forum
{
	/// <summary>
	/// 论坛模板生成类
	/// </summary>
	public class ForumPageTemplate : PageTemplate
	{
		/// <summary>
		/// 解析特殊变量
		/// </summary>
		/// <param name="forumPath">模板路径</param>
		/// <param name="skinName">皮肤名</param>
		/// <param name="strTemplate">模板内容</param>
		/// <returns></returns>
		public override string ReplaceSpecialTemplate(string forumPath,string skinName,string strTemplate)
		{
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
			sb.Append(strTemplate);
			Match m;
            Regex r = new Regex(@"({([^\[\]/\{\}='\s]+)})", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Compiled);
			for (m = r.Match(strTemplate); m.Success; m = m.NextMatch()) 
			{
				if (m.Groups[0].ToString() == "{forumversion}")
					sb = sb.Replace(m.Groups[0].ToString(), Utils.GetAssemblyVersion());
				else if (m.Groups[0].ToString() == "{forumproductname}")
					sb = sb.Replace(m.Groups[0].ToString(), Utils.GetAssemblyProductName());
			}

			foreach(DataRow dr in GetTemplateVarList(forumPath,skinName).Rows)
			{
				sb = sb.Replace(dr["variablename"].ToString().Trim(), dr["variablevalue"].ToString().Trim());
			}
			return sb.ToString();
		}


	    /// <summary>
		/// 获得模板变量列表
		/// </summary>
		/// <param name="forumpath">模板路径</param>
		/// <param name="skinName">皮肤名</param>
		/// <returns></returns>
		public static DataTable GetTemplateVarList(string forumpath,string skinName)
		{
			Discuz.Cache.DNTCache cache = Cache.DNTCache.GetCacheService();
            DataTable dt = cache.RetrieveObject("/Forum/" + skinName + "/TemplateVariable") as DataTable;            

			if(dt == null)
			{
                DataSet dsSrc = new DataSet("template");

                string[] filename = { Utils.GetMapPath(forumpath + "templates/" + skinName + "/templatevariable.xml") };

                if (Utils.FileExists(filename[0]))
                {
后面还有 29 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。