private void NewMethod(string channelId) { //查找拥有此页面直属的频道节点的所有的模板节点,返回模板ID集合 string[] tmpltIdArray = SdsiteDocument.GetTmpltIdArray(channelId); foreach (var tmpltId in tmpltIdArray) { TmpltXmlDocument tmpltDoc = SdsiteDocument.GetTmpltDocumentById(tmpltId); //得到当前模板下拥有此页面所属频道的类型为list的所有part的父父级snip的集合 string[] snipIdArray = SdsiteDocument.GetSnipIdArray(tmpltId, channelId); //循环snip集合,获得每个snip节点下的分别有拥有此页面所属的频道的类型为list的part节点的集合 foreach (var snipId in snipIdArray) { //重新生成 snip 页面 SnipXmlElement snipEle = tmpltDoc.GetSnipElementById(snipId); if (!snipEle.IsModified) { snipEle.SaveXhtml(ToHtmlHelperObj); } //对其part 的处理 snipEle.GetPartsElement(); } //不论按哪种排序,则先将其所属的snip节点重新生成一遍 //如果其排序方式为自动提取关键字,则取出此part下的所有频道id,及页面类型集合 //循环这些频道,找出页面类型为以上类型集合的所有页面 //此处应有一些分支操作:=====isModified = false的一定要重新生成(并记录下isModified=false,并记录重新生成过的页面),而ismodified为真或是isAlreadyPublish =false,或是isdeleted=true自然会有一些相应的操作 //最后,将重新生成这些页面 } }
public BuildSite() { ToHtmlHelper siteHelper = new ToHtmlHelper("", @"D:\_abc\myabc"); TmpltXmlDocument tmpltDoc = null; tmpltDoc.SaveXhtml(siteHelper); tmpltDoc.DeleteXhtml(siteHelper); PageXmlDocument pageDoc = null; pageDoc.SaveXhtml(siteHelper); pageDoc.DeleteXhtml(siteHelper); foreach (var item in tmpltDoc.GetSnipElementList()) { SnipXmlElement snip = (SnipXmlElement)item; snip.SaveXhtml(siteHelper); snip.DeleteXhtml(siteHelper); } }
/// <summary> /// 生成模板文件 /// </summary> /// <param name="simpleEle"></param> public void BuildTmpltFile(SimpleExIndexXmlElement simpleEle) { //添加模板到Dictionary字典中 AddElementToDictionary(simpleEle); /// tmpltFolderAbsPath ="Y:\zha\zhangling\projectname\TmpltRootFolder"; ///string tmpltFolderAbsPath = Path.Combine(sdsiteAbsPath, SdsiteDocument.TmpltFolder.FileName); TmpltSimpleExXmlElement tmpltEle = (TmpltSimpleExXmlElement)simpleEle; string tmpltId = tmpltEle.Id; TmpltXmlDocument tmpltDoc = ToHtmlHelperObj.SdsiteXmlDocument.GetTmpltDocumentById(tmpltId); if (tmpltEle.IsDeletedRecursive) { //删除模板本身的文件 //删除此模板文件对应的模板文件夹(内有多个snip文件) //删除相应的css文件 //string filePath = tmpltFolderAbsPath + @"\" + tmpltId + CommonService.Inc; //FileService.FileDelete(filePath); //string folderPath = tmpltFolderAbsPath + @"\" + tmpltId; //FolderService.FolderDelete(folderPath); //string cssPath = tmpltFolderAbsPath + @"\" + CommonService.Css + @"\" + tmpltId + CssDAT; //FileService.FileDelete(cssPath); tmpltDoc.DeleteXhtml(ToHtmlHelperObj); } else if (!tmpltEle.IsAlreadyPublished) //新建 { //打开相应的模板 //生成本身的文件.css //遍历生成相应的snip文件 //string tmpltPath = tmpltFolderAbsPath + @"\" + tmpltId + CommonService.Inc; //TmpltXmlDocument tmpltDoc = SdsiteDocument.GetTmpltDocumentById(tmpltId); //tmpltDoc.SaveXhtml(); //tmpltDoc.SaveXhtml(tmpltPath); //string tmpltCssPath = tmpltFolderAbsPath + @"\" + tmpltId + @"\" + CssDAT; //tmpltDoc.SaveCss(); tmpltDoc.SaveXhtml(ToHtmlHelperObj); //string folderPath = tmpltFolderAbsPath + @"\" + tmpltId; XmlNodeList snipList = tmpltDoc.GetSnipElementList(); foreach (var item in snipList) { SnipXmlElement snipEle = item as SnipXmlElement; //string snipfile = snipEle.Id + CommonService.Inc; //string snipFilePath = Path.Combine(folderPath, snipfile); //snipEle.SaveXhtml(); //snipEle.SaveXhtml(snipFilePath); snipEle.SaveXhtml(ToHtmlHelperObj); } } else { //此处没有路径改变的问题 if (tmpltEle.IsModified) { //打开相应的模板文件 //则需要重新生成本身的文件,及有改变过的snip的对应的文件 //tmpltDoc.SaveXhtml(); //方法内部在保存此文件时,还需要检查此文件是否存在,存在,则删除掉,然后将其在保存 //tmpltDoc.SaveCss(); tmpltDoc.SaveXhtml(ToHtmlHelperObj); Dictionary <string, string> dic = new Dictionary <string, string>(); XmlNodeList snipList = tmpltDoc.GetSnipElementList(); foreach (var item in snipList) { SnipXmlElement snipEle = item as SnipXmlElement; if (snipEle.IsModified) { //则需要重新生成 // snipEle.SaveXhtml(); snipEle.SaveXhtml(ToHtmlHelperObj); } string snipFileName = snipEle.Id + CommonService.Inc; dic.Add(snipFileName, ""); } //看是否存在多余的snip文件,并将其删除 string snipFolderPath = sdWebAbsPath + @"\" + SdsiteDocument.TmpltFolder.Name + @"\" + tmpltId; string[] allSnipFile = GetAllSnipFile(snipFolderPath); foreach (var file in allSnipFile) { if (!dic.ContainsKey(file)) { //删除此文件 string filePath = snipFolderPath + @"\" + file; FileService.FileDelete(filePath); } } } } }