Asp.net İle Temaları Yönetin

Asp.Net‘te temalarımızı yönetmek  için App_Themes klasörü bulunmaktadır (Eğer klasör yoksa proje üzerine sağ tıklayıp, “Add Asp.Net Folder” bölümünden Theme butonuna basmalıyız.) Bu klasöre atılan temaları istediğimiz gibi özelleştirebiliriz. Örneğin A sayfasında farklı, B sayfasında farklı temalar kullanabiliriz. Genel altyapıyı doğru ve işlevsel yapılandırabilirsek, temalar konusunda zaman kaybı yaşamayız.  Bu yazımda App_Themes klasörünün içindeki tema adlarını elde etmeyi, elde edilen temaları kullanmayı anlatacağım. 

Yapacağımız işlem, App_themes klasörü içindeki klasörleri okumak olacaktır. Bunu ArrayList tanımladığımız bir  değişkende tutup, ihtiyacımız olduğu zaman kullanmak olacaktır. Örnek tema klasörleri şu şekilde olur.

Amacımız beyaz,kirmizi,mavi ve siyah klasörlerinin adlarını almak olacaktır.

App_Code klasörümüzün içine static bir fonksiyon yazıyorum. (Static fonksiyonlar new anahtar kelimesi ile kurulmazlar) Bu fonksiyon geriye ArrayList döndürüyor.

using System.Collections;
using System.IO;
using System.Web;

/// <summary>
/// Web Sayfamız Üzerindeki Temaları Getiren Sınıftır.
/// </summary>
public static class Temalarim
{
	public static ArrayList TumTemalariCek()
	{
    ArrayList tmp=new ArrayList();

    // klasorBilgi değişkeni, App_Themes klasöre girmemi sağlıyor.
    // GetDirectories fonksiyonu ile App_Themes klasörü içindeki
    // klasörleri çekiyoruz. Bu çektiğimiz klasörler temalarımızın
    // adı oluyor.
    DirectoryInfo klasorBilgi = new DirectoryInfo(HttpContext.Current.Server.MapPath("App_Themes"));
    DirectoryInfo[] klasorListesi = klasorBilgi.GetDirectories();

	  foreach (var directoryInfo in klasorListesi)
	  {
	    tmp.Add(directoryInfo.Name);
	  }

	  return tmp;
	}
}

App_Themes klasörüne eklenen temalar, bu sınıf kullanarak alabiliyoruz. Tema kullanacağımız sayfada, sayfanın OnPreInit fonksiyonunu override etmemiz lazım.

  protected override void OnPreInit (EventArgs e)
  {
    if (Session["tema"] != null)
    {
      this.Theme = Session["tema"] as string;
    }
    else
    {
      this.Theme = "beyaz";
    }

    base.OnPreInit(e);

  }

Projeyi tam olarak paylaşıyorum. Soru ve önerileriniz için lütfen yorumlar bölümünü kullanınız.

İyi Çalışmalar.

Asp.Net Temalari Yonet (740)

This entry was posted in Asp.Net, Dersler and tagged , , , , , , . Bookmark the permalink.

3 Responses to Asp.net İle Temaları Yönetin

  1. adem says:

    Merhaba çağdaş,
    yine çok değerli bir yazı olmuş, tebrik ediyorum seni. css kısmında arkaplan renkleri #red değilde red şeklinde değiştirince tarayıcımda yorumland. firefox 4 kullanıyorum. emin olmamaklar beraber tarayıcı veya css sürüm farkı olabilir diye düşündüm araştırmadım.
    bir de onpreinit metodu altına
    ddlThemes.Text = Session[“tema”].ToString();
    ekledim, hangi temayı kullandığımı göstermek açısından bir öneri
    sağlıcakla kal, yazılarının devamını bekliyoruz…

  2. Ehocam says:

    @Adem;

    Güzel yorumun için teşekkürler Adem. Bu arada hayırlı olsun, Araştırma Görevlisi olmuşsun. Tebrik ederim kardeşim. 🙂

  3. adem says:

    @ehocam
    teşekkürler çağdaş, umarım sende mezun olduktan sonra istediğin yerden başlarsın. mezuniyetin şimdiden hayırlı olsun =)

Leave a Reply

Your email address will not be published. Required fields are marked *