/// <summary> /// 获取显示广告信息 /// </summary> /// <param name="adshowArray">显示的广告数据</param> /// <param name="count">总数</param> /// <param name="inPostAdType">帖内广告类型 0:帖内下方的广告 1:帖内上方的广告 2:帖内右方的广告</param> /// <returns>广告信息</returns> public static string GetAdShowInfo(AdShowInfo[] adshowArray, int count, int inPostAdType) { string adsMsg = ""; Random random = new Random(); for (int i = 1; i <= count; i++) { List<AdShowInfo> tmp = new List<AdShowInfo>(); string[] parameter; foreach (AdShowInfo adshow in adshowArray) { parameter = Utils.SplitString(adshow.Parameters.Trim(), "|", 9); if (Utils.StrToInt(parameter[7], -1) == inPostAdType) { //parameter[8]: possibleflooridlist if (Utils.InArray(i.ToString(), parameter[8], ",") || parameter[8] == "0") tmp.Add(adshow); } } if (tmp.Count > 0) { switch (inPostAdType) { case 0: //帖内下方的广告 adsMsg += string.Format("<div class=\"ad_textlink1\" id=\"ad_thread1_{0}_none\">{1}</div>\r\n", i, tmp[random.Next(0, tmp.Count)].Code); break; case 1: //帖内上方的广告 adsMsg += string.Format("<div class=\"ad_textlink2\" id=\"ad_thread2_{0}_none\">{1}</div>\r\n", i, tmp[random.Next(0, tmp.Count)].Code); break; default: //帖内右方的广告 adsMsg += string.Format("<div class=\"ad_pip\" id=\"ad_thread3_{0}_none\">{1}</div>\r\n", i, tmp[random.Next(0, tmp.Count)].Code); break; } } } return adsMsg; }
/// <summary> /// 获取广告信息 /// </summary> /// <param name="adshowArray">广告信息数组</param> /// <param name="parameter">要返回的广告参数</param> /// <returns>广告信息</returns> private static string GetAdsMsg(AdShowInfo[] adshowArray, ref string[] parameter) { if (adshowArray.Length == 0) //当没有浮动广告时直接返回空串 return ""; string result = ""; int number = 0; if (adshowArray.Length > 1) //如果浮动广告的条数大于一条,则随机显示一条 number = new Random().Next(0, adshowArray.Length); if (Utils.StrIsNullOrEmpty(adshowArray[number].Parameters)) return ""; //初始化参数 parameter = adshowArray[number].Parameters.Split('|'); if (parameter[0].ToLower() == "flash") result = string.Format("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0\" width=\"{0}\" height=\"{1}\"><param name=\"movie\" value=\"{2}\" /><param name=\"quality\" value=\"high\" /><param name=\"wmode\" value=\"opaque\">{3}<embed src=\"{2}\" wmode=\"opaque\" quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" width=\"{0}\" height=\"{1}\"></embed></object>", parameter[2], parameter[3], parameter[1], adshowArray[number].Code); else result = adshowArray[number].Code; return result; }
/// <summary> /// 按查询字符串得到广告列表 /// </summary> /// <param name="selectstr">查询字符串</param> /// <returns>广告列表</returns> private static AdShowInfo[] GetTaoAdsTable(string selectstr) { SAS.Cache.SASCache cache = SAS.Cache.SASCache.GetCacheService(); DataTable dt = cache.RetrieveObject("/SAS/TaoAdvertisements") as DataTable; if (dt == null) { dt = SAS.Data.DataProvider.Advertisenments.GetAdsTable(); //SAS.Cache.WebCacheFactory.GetWebCache().Add("/SAS/TaoAdvertisements", dt); cache.AddObject("/SAS/TaoAdvertisements", dt); } DataRow[] drs = dt.Select(selectstr); AdShowInfo[] adarray = new AdShowInfo[drs.Length]; for (int i = 0; i < drs.Length; i++) { adarray[i] = new AdShowInfo(); adarray[i].Advid = Utils.StrToInt(drs[i]["advid"].ToString(), 0); adarray[i].Displayorder = Utils.StrToInt(drs[i]["addisplayorder"].ToString(), 0); adarray[i].Code = drs[i]["code"].ToString().Trim(); adarray[i].Parameters = drs[i]["parameters"].ToString().Trim(); } return adarray; }
/// <summary> /// 获取显示广告信息 /// </summary> /// <param name="adshowArray">显示的广告数据</param> /// <param name="floor">获取指定楼层的帖内广告</param> /// <param name="inPostAdType">帖内广告类型 0:帖内下方的广告 1:帖内上方的广告 2:帖内右方的广告</param> /// <returns>广告信息</returns> public static string GetAdShowInfoXMLByFloor(AdShowInfo[] adshowArray, int floor, int inPostAdType) { string adsMsg = ""; Random random = new Random(); //取帖内下方广告 List<AdShowInfo> tmp = new List<AdShowInfo>(); foreach (AdShowInfo adshow in adshowArray)//可用的帖内下方广告 { string[] parameter = Utils.SplitString(adshow.Parameters.ToString().Trim(), "|", 9); if (Utils.StrToInt(parameter[7], -1) == inPostAdType) { //parameter[8]:possibleflooridlist if (Utils.InArray(floor.ToString(), parameter[8], ",") || parameter[8] == "0") tmp.Add(adshow); } } if (tmp.Count > 0) { AdShowInfo ad = tmp[random.Next(0, tmp.Count)]; adsMsg = string.Format("<ad_thread{0}><![CDATA[{1}]]></ad_thread{0}>", inPostAdType, ad.Code); } return adsMsg; }