Guest User

DNN Sitemap (Hack)

a guest
Nov 26th, 2019
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 6.07 KB | None | 0 0
  1. SET ANSI_NULLS ON
  2. GO
  3.  
  4. SET QUOTED_IDENTIFIER ON
  5. GO
  6.  
  7. CREATE TABLE [dbo].[T_TabsForXmlSitemapOverrides](
  8.     [TabId] [INT] NOT NULL,
  9.     [URL] [VARCHAR](1024) NULL,
  10.     [hreflang] [VARCHAR](10) NULL,
  11.  CONSTRAINT [PK_T_TabsForXmlSitemapOverrides] PRIMARY KEY CLUSTERED
  12. (
  13.     [TabId] ASC
  14. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  15. ) ON [PRIMARY]
  16. GO
  17.  
  18. CREATE VIEW [dbo].[V_TabsForXmlSitemap]
  19. AS
  20. SELECT DISTINCT
  21.                          TOP (100) PERCENT ISNULL(dbo.T_TabsForXmlSitemapOverrides.URL, 'https://www.mysite.com' + REPLACE(SUBSTRING(TabPath, 0, LEN(TabPath) - CHARINDEX('//', REVERSE(TabPath))), '//', '/') + '/' + REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(TabName,':','-'),'&','-'),' ','-'),'/','-'), '(', ''), ')', ''), '-', '<>'), '><', ''), '<>', '-'))
  22.                          AS URL, dbo.T_TabsForXmlSitemapOverrides.hreflang
  23. FROM            dbo.Tabs INNER JOIN
  24.                          dbo.TabPermission ON dbo.Tabs.TabID = dbo.TabPermission.TabID LEFT OUTER JOIN
  25.                          dbo.T_TabsForXmlSitemapOverrides ON dbo.Tabs.TabID = dbo.T_TabsForXmlSitemapOverrides.TabId
  26. WHERE        (dbo.TabPermission.PermissionID = 3) AND (dbo.TabPermission.RoleID = - 1 OR
  27.                          dbo.TabPermission.RoleID = - 3) AND (dbo.Tabs.StartDate IS NULL) AND (dbo.Tabs.EndDate IS NULL) AND (dbo.T_TabsForXmlSitemapOverrides.TabId IS NULL) AND (dbo.Tabs.IsDeleted = 0) OR
  28.                          (dbo.TabPermission.PermissionID = 3) AND (dbo.TabPermission.RoleID = - 1 OR
  29.                          dbo.TabPermission.RoleID = - 3) AND (dbo.Tabs.StartDate IS NULL) AND (dbo.Tabs.EndDate IS NULL) AND (dbo.Tabs.IsDeleted = 0) AND (dbo.T_TabsForXmlSitemapOverrides.URL IS NOT NULL) OR
  30.                          (dbo.TabPermission.PermissionID = 3) AND (dbo.TabPermission.RoleID = - 1 OR
  31.                          dbo.TabPermission.RoleID = - 3) AND (dbo.Tabs.EndDate IS NULL) AND (dbo.Tabs.IsDeleted = 0) AND (dbo.T_TabsForXmlSitemapOverrides.URL IS NOT NULL) AND (GETDATE() >= dbo.Tabs.StartDate) OR
  32.                          (dbo.TabPermission.PermissionID = 3) AND (dbo.TabPermission.RoleID = - 1 OR
  33.                          dbo.TabPermission.RoleID = - 3) AND (dbo.Tabs.StartDate IS NULL) AND (dbo.Tabs.IsDeleted = 0) AND (dbo.T_TabsForXmlSitemapOverrides.URL IS NOT NULL) AND (GETDATE() <= dbo.Tabs.EndDate) OR
  34.                          (dbo.TabPermission.PermissionID = 3) AND (dbo.TabPermission.RoleID = - 1 OR
  35.                          dbo.TabPermission.RoleID = - 3) AND (dbo.Tabs.IsDeleted = 0) AND (dbo.T_TabsForXmlSitemapOverrides.URL IS NOT NULL) AND (GETDATE() >= dbo.Tabs.StartDate) AND (GETDATE() <= dbo.Tabs.EndDate) OR
  36.                          (dbo.TabPermission.PermissionID = 3) AND (dbo.TabPermission.RoleID = - 1 OR
  37.                          dbo.TabPermission.RoleID = - 3) AND (dbo.Tabs.IsDeleted = 0) AND (dbo.T_TabsForXmlSitemapOverrides.URL IS NOT NULL) AND (GETDATE() >= dbo.Tabs.StartDate) AND (GETDATE() <= dbo.Tabs.EndDate) OR
  38.                          (dbo.TabPermission.PermissionID = 3) AND (dbo.TabPermission.RoleID = - 1 OR
  39.                          dbo.TabPermission.RoleID = - 3) AND (dbo.Tabs.EndDate IS NULL) AND (dbo.T_TabsForXmlSitemapOverrides.TabId IS NULL) AND (dbo.Tabs.IsDeleted = 0) AND (GETDATE() >= dbo.Tabs.StartDate) OR
  40.                          (dbo.TabPermission.PermissionID = 3) AND (dbo.TabPermission.RoleID = - 1 OR
  41.                          dbo.TabPermission.RoleID = - 3) AND (dbo.Tabs.StartDate IS NULL) AND (dbo.T_TabsForXmlSitemapOverrides.TabId IS NULL) AND (dbo.Tabs.IsDeleted = 0) AND (GETDATE() <= dbo.Tabs.EndDate) OR
  42.                          (dbo.TabPermission.PermissionID = 3) AND (dbo.TabPermission.RoleID = - 1 OR
  43.                          dbo.TabPermission.RoleID = - 3) AND (dbo.T_TabsForXmlSitemapOverrides.TabId IS NULL) AND (dbo.Tabs.IsDeleted = 0) AND (GETDATE() >= dbo.Tabs.StartDate) AND (GETDATE() <= dbo.Tabs.EndDate) OR
  44.                          (dbo.TabPermission.PermissionID = 3) AND (dbo.TabPermission.RoleID = - 1 OR
  45.                          dbo.TabPermission.RoleID = - 3) AND (dbo.T_TabsForXmlSitemapOverrides.TabId IS NULL) AND (dbo.Tabs.IsDeleted = 0) AND (GETDATE() >= dbo.Tabs.StartDate) AND (GETDATE() <= dbo.Tabs.EndDate)
  46. /* You could add more queries with UNION here, for example to add sitemap links to your store. Just make sure it returns the same columns */
  47. GO
  48.  
  49. CREATE PROC [dbo].[SP_ExportSitemap] AS SET nocount ON;  WITH XMLNAMESPACES ('http://www.w3.org/1999/xhtml' AS xhtml, DEFAULT 'http://www.sitemaps.org/schemas/sitemap/0.9')  SELECT REPLACE(REPLACE((SELECT [URL] AS 'loc', IIF(hreflang IS NULL, (SELECT '<xhtml:link rel='+CHAR(34)+'alternate'+CHAR(34)+' hreflang='+CHAR(34)+'en'+CHAR(34)+' href='+CHAR(34)+''+URL+''+CHAR(34)+'/><xhtml:link rel='+CHAR(34)+'alternate'+CHAR(34)+' hreflang='+CHAR(34)+'de'+CHAR(34)+' href='+CHAR(34)+''+REPLACE(URL, 'https://www.mysite.com', 'https://www.mysite.com/de')+CHAR(34)+'/>' AS lang), (SELECT '<xhtml:link rel='+CHAR(34)+'alternate'+CHAR(34)+' hreflang='+CHAR(34)+''+hreflang+''+CHAR(34)+' href='+CHAR(34)+''+URL+''+CHAR(34)+'/>' AS lang)) FROM  [dbo].[V_TabsForXmlSitemap] FOR XML PATH('url'), ELEMENTS, ROOT('urlset')), '&lt;', '<'), '&gt;', '>')
  50. GO
  51.  
  52. /* You can call this stored procedure from the command line. This is an example of how we call it and convert it to UTF-8:
  53. @echo off
  54. set iconvdir=C:\Program Files (x86)\Iconv
  55. set destination=d:\inetpub\wwwroot
  56. echo Export Sitemap.Cmd...
  57. echo ===============================================================================
  58. echo If you continue, this batch will update the sitemap.xml file.
  59. pause
  60. echo Exporting sitemap to %temp%\output.xml...
  61. bcp "exec SP_ExportSitemap" queryout %temp%\output.xml -S %COMPUTERNAME% -d SysManage -T -c
  62. echo Converting sitemap from ANSI to UTF-8...
  63. "%ICONVDIR%\iconv" -f windows-1252 -t UTF-8 %temp%\output.xml >%temp%\sitemap.xml
  64. echo Copying sitemap to destination...
  65. copy %temp%\sitemap.xml %destination%\sitemap.xml
  66. echo Deleting temp file...
  67. del %temp%\output.xml
  68. del %temp%\sitemap.xml
  69. pause
  70. /*
Add Comment
Please, Sign In to add comment