19 Ekim 2010 Salı

DNN ile Dinamik Reklam Gösterimi Nasıl Yapılır?

DotNetNuke kullanan webmasterların bildiği üzere statik sayfaların yanında bazı modüller tarafından üretilen dinamik sayfalar da yer almaktadır. Statik sayfalara her türlü modülü rahatlıkla ekleyebilirken, dinamik sayfalarda bu durum farklılık göstermektedir.

Bu yazımda, statik sayfalara da modül eklemenin mümkün olduğunu göstereceğim. Ekibimize ulaşan bir mobilya & dekorasyon sitesi webmaster'ı, kampanyalarına ilişkin reklamları sayfalarında göstermek istediklerini ancak modül tarafından oluşturulan dinamik sayfalara sabit içerikten başka içerik ekleyemediklerini belirtti.

Çözüm:
İlk olarak skin.ascx dosyasına aşağıdaki kodu ekliyoruz. Div için id ve Regex ifadesine dikkat ederek...

<% If Regex.IsMatch (Request.URL.ToString, "REGEX'i Buraya Yazıyoruz") Then %>
  
<div id="EkstraPanel" runat="server"></div>
  
<% End If %>


İfademizde ASP.NET Regex kullanarak istenilen URL ile eşleştirmeyi hedefledik.



http://www.dinamiksite.com/dinamiksayfamiz/tabid/14/yaziTipi/YaziGoster/yazıId/12/Ornek-Sayfa.aspx

Yukarıdaki bağlantıda YaziGoster benzersiz parametre olarak öne çıkıyor.

<% If Regex.IsMatch (Request.URL.ToString, "YaziGoster") Then %>

Girdiğimiz Regex değerinin mutlaka Raw URL ile eşleşmesi gerekiyor. DotNetNuke'de Friendly URL desteği de mevcut. Ancak Friendly URL'lerde sayfaları belirlemekte kullanılan tabid parametresi bulunmuyor.

<!-- <%= Request.URL.ToString %> -->


HTML Comment (<!-- -->) normal görünümde yer almasa da kaynak kodunda ifadenin yer alması için kullanılıyor.

Son örneğimizde ise, ekstra panel yalnızca regex url ile eşleştiğinde ve sayfayı isteyen kişi portal yöneticileri grubunda ise gösteriliyor.

<% If Regex.IsMatch (Request.URL.ToString, "YaziGoster") AND DotNetNuke.Security.PortalSecurity.IsInRoles(PortalSettings.AdministratorRoleName) Then %>
  
        <div id="EkstraPanel" runat="server"></div>
  
<% End If %>