Hey DWs
would it be possible to change all IMC SRCs in a template to another server folder, based on IP detection?
Any input to how we could make such a module (fast and cost-efficient).
Kind regards
Peter
Hey DWs
would it be possible to change all IMC SRCs in a template to another server folder, based on IP detection?
Any input to how we could make such a module (fast and cost-efficient).
Kind regards
Peter
You can first look up the user country by either accept language or using an IP lookup tool like this one:
http://dev.maxmind.com/geoip/geolite
Then create a notification subscriber that replaces all the image src attributes based on that rule - here is an example that adds a CDN host, you need to change it a bit.
Imports System.Text.RegularExpressions
<Dynamicweb.Extensibility.Subscribe(Dynamicweb.Notifications.Standard.Page.AfterOutput)> _
Public Class CdnReplacer
Inherits Dynamicweb.Extensibility.NotificationSubscriber
Public Overrides Sub OnNotify(ByVal notification As String, ByVal args As Object())
If Not Dynamicweb.Base.ChkBoolean(Dynamicweb.Base.GetGs("/Globalsettings/System/cdn/active")) Then
Return
End If
If args Is Nothing OrElse args.Length = 0 Then
Return
End If
Dim obj As Object = args(0)
If Not (TypeOf obj Is Dynamicweb.Rendering.Template) Then
Return
End If
Dim tmpl As Dynamicweb.Rendering.Template = DirectCast(obj, Dynamicweb.Rendering.Template)
Dim ResultString As String
Try
Dim host As String = "http://cdn.mydomain.com"
If String.IsNullOrEmpty(host) OrElse Not host.StartsWith("http://") Then
Return
End If
ResultString = GetIfRegexInstance().Replace(tmpl.Html, String.Format("$1{0}/$2", host))
tmpl.Html = ResultString
Catch ex As ArgumentException
'Syntax error in the regular expression
End Try
End Sub
Private Shared _RegexInstance As Regex
Private Shared Function GetIfRegexInstance() As Regex
If _RegexInstance Is Nothing Then
_RegexInstance = New Regex("(<img src="")(?:[^""]*?/?)(Files/.*?"")", RegexOptions.IgnoreCase Or RegexOptions.Singleline Or RegexOptions.Compiled)
End If
Return _RegexInstance
End Function
End Class
BR Nicolai
awesome, yes it is exactly the thought that it is to be used as CDN for customers in America/Asia.
thanks!
You must be logged in to post in the forum