Web.sitemap自动生成教程(值得珍藏)“绝对是好东西”
查看文章
|
相信大家在创建Web.sitemap的时候手动输入时都很头疼,以下方法可以解决需要手动输入的问题。但是生成的Web.sitemap会遍历了整个网站文件及目录(asp.net的appcode等文件夹除外),只需要稍作修改即可,可比一个个手动输入省力得多了,值得珍藏。 具体操作方法: 新建一个记事本,把以下代码另存为“SiteMapModule.vb” ======================从这里开始复制代码,本行不复制======================== Option Explicit On Imports System Public Module SiteMapModule ' the name for your sitemap file ' macro will only insert a siteMapNode for files with the following extensions ' macro will skip directories starting with these strings
Dim processed As Integer = 0 For Each project As EnvDTE.Project In DTE.Solution.Projects If IsWebProject(project) Then If HasValidStartPage(project) Then ProcessWebSite(project) Else MsgBox(project.Name + " - You must first select a start page using solution explorer.") End If MsgBox("Processed " + processed.ToString() + " web project(s)") End Sub
If HasExistingSiteMap(project) Then CreateSiteMap(project) Dim parent As XmlNode = SetSiteMapRoot(project) siteMap.Save(Path.Combine(project.Properties.Item("FullPath").Value.ToString, sitemapFileName)) End Sub
If project.Kind.ToUpper() = webSiteProjectGuid Then If project.Kind.ToUpper() = webAppProjectGuid Then Return False End Function Private Function GetProjectStartPage(ByVal project As EnvDTE.Project) As String Dim result As String = Nothing Dim indexer As String = webSiteStartPage If project.Properties.Item(indexer) Is Nothing Then Return result End Function Private Function HasValidStartPage(ByVal project As EnvDTE.Project) As Boolean Dim startPage As String = GetProjectStartPage(project) If startPage Is Nothing OrElse startPage.Length < 1 Then Return True End Function Private Function SetSiteMapRoot(ByVal project As EnvDTE.Project) As XmlNode Dim startPage As String = GetProjectStartPage(project) Return root End Function Private Sub CreateNodes(ByVal itemPath As String, ByVal parent As XmlNode, ByVal items As EnvDTE.ProjectItems) Dim node As XmlNode For Each item As EnvDTE.ProjectItem In items If IsValidFile(item) Then Dim url As String = UrlCombine(itemPath, item.Name) ElseIf IsValidDirectory(item) Then node = CreateSiteMapNode(Nothing, item.Name) End If Next End Sub Private Function IsValidDirectory(ByVal item As EnvDTE.ProjectItem) As Boolean If item.ProjectItems Is Nothing Then ' for WAP, it seems all project items have a non-null ProjectItems property Return True End Function Private Function IsValidFile(ByVal item As EnvDTE.ProjectItem) As Boolean For Each name As String In validSiteMapNodes Return False End Function Private Function UrlCombine(ByVal path1 As String, ByVal path2 As String) As String If path1 = String.Empty Then If Not path1.EndsWith("/") Then Return path1 + path2 End Function Private Function CreateSiteMapNode(ByVal url As String, ByVal title As String) As XmlElement Dim node As XmlElement If Not url Is Nothing Then Dim titleAttr As XmlAttribute = siteMap.CreateAttribute("title") Return node End Function Private Function DeriveTitle(ByVal fileName As String) As String Private Function CreateSiteMap(ByVal project As EnvDTE.Project) As XmlDocument siteMap = New XmlDocument() nsMgr = New XmlNamespaceManager(siteMap.NameTable) Dim filename As String = Path.Combine(project.Properties.Item("FullPath").Value.ToString, sitemapFileName) Return siteMap End Function Private Function HasExistingSiteMap(ByVal project As EnvDTE.Project) As Boolean For Each item As EnvDTE.ProjectItem In project.ProjectItems Return False End Function Private siteMap As XmlDocument
'these string index into project properties to fetch the start page URL End Module ======================结束代码复制,本行不复制======================== 打开 Visual Studio 1、按Alt-F8把Macro Explorer调出来
|