Yazılarımıza veya sayfalarımıza girildiğinde adres çubuğundaki 'ı' harfinin 'c4b1' şeklinde çıkması sizi de rahatsız ediyor mu ? O karmaşık , adresin anlaşılmasını zorlaştıran 4 karakter yerine 'i' harfi çıksa daha iyi olmaz mıydı ? BlogEngine sitenizdeki bir dosya'nın içine herhangi bir text editörü ile ekleyeceğiniz 2 satır kod ile sorunu kökten çözebilirsiniz. Ayrıca kod kısmında değişikliğe inmeden de bunun bir çözümü var fakat her yazınızı yazarken sizi biraz uğraştıracaktır , o da "Slug".
Slug editörünüzde (Windows Live Writer'da da var) yazı yazarken Slug kutucuğuna yazınıza girildiğinde adres çubuğunun nasıl gözükmesini istiyorsanız oraya yazabilirsiniz.(başlıktan farklı bir cümle veya kelime olabilir). Slug kutucuğu yanında belirtildiği gibi opsiyonel . İçini doldurmazsanız başlığın aynısı yazınıza girildiğinde adres çubuğunda gözükecektir. O yazı editörden "Extract from title" dediğinde çıkan yazıyla aynı. 'ı' harfinin hatalı çıkmasını istemiyorsanız Slug kısmında Extract from title dedikten sonra c4b1 yazan yerleri kendiniz 'i' ile değiştirmelisiniz. Birşey yazmazsanız adres çubuğunda türkçe karakter veya bazı url'de kullanılmaması gereken bazı karakterler ( boşluk , eşittir işareti vs. ) kullanılamayacağı için başlığınız biraz değişikliğe uğrayacaktır. 'ı' harfi hariç diğer 'ş' harfi 's' , 'ğ' harfi 'g' , 'ö' harfi 'o' , 'ç' harfi 'c' , 'ü' harfi 'u' ya dönüşecektir. Fakat 'ı' harfi 'c4b1' şeklinde gözükmektedir. "BlogEngineNET-TR-Ağı" başlıklı yazının adres çubuğunda görünümü aşağıdaki gibi.
A-) Size iki farklı çözüm göstereceğim , biri BlogEngine içindeki editör ile yazı/sayfa yazıyorsanız yapmanız gerekenler , diğeri ise Windows Live Writer kullanıyorsanız. İlk önce BlogEngine içindeki editörü kullanıyorsanız aşağıdaki adımları yapmanız gerekiyor.
1-) BlogEngineTR dizininizde admin/Pages/ klasörü içindeki Add_entry.aspx.cs dosyasını herhangi bir text editörü ile açıp. 213 ve 214'üncü satırdaki şu kodları bulun.
if (!string.IsNullOrEmpty(txtSlug.Text))
post.Slug = Server.UrlDecode(txtSlug.Text.Trim());
2-) Bu satırların altına kendi yazdığım aşağıdaki 2 satırı kopyalayın.
else
post.Slug = Server.UrlDecode(post.Title.Replace('ı', 'i') );
3-) Sonra ı karakteri kullandığımız için Add_entry.aspx.cs dosyasını kaydet dediğimizde Visual Studio'da şuna benzer bir uyarı çıkacaktır. Buna evet demeniz gerekiyor. (Diğer text editörlerinde de çok benzer) Dosyayı unicode olarak kaydetmeniz gerekiyor.
4-) Üsteki işlemler yazılarınız içindi , sayfalarınız için de benzer adımları uygulayacağız. admin/Pages/ klasörü içindeki Pages.aspx.cs dosyasını herhangi bir text editörüyle açıp , 133 ve 134.üncü satırdaki şu kodları bulun.
if (!string.IsNullOrEmpty(txtSlug.Text))
page.Slug = Server.UrlDecode(txtSlug.Text.Trim());
5-) Bu satırların altına kendi yazdığım aşağıdaki 2 satırı kopyalayın.
else
page.Slug = Server.UrlDecode(page.Title.Replace('ı', 'i') );
6-) Aynı şekilde dosyayı unicode şeklinde kaydedin. Böylece BlogEngine üzerinde yazı yazdığınızda ı harfleri i olarak yazılarınızın URL'sinde gözükür.
B-) Windows Live Writer'da her yazı / sayfada 'ı' karakterinin 'i' şeklinde çıkması için aşağıdaki adımları uygulamanız gerekiyor.
1-) BlogEngine API sinde değişiklik yapmamız gerekiyor. BlogEngineTR ekibi olarak size 1.4.5 sürümünü daha kolay bir şekilde çalıştırabilmeniz için size web projesi şeklinde yayınlamıştık. Web projesinde API de değişiklik yapamıyoruz. BlogEngine source kodunda değişiklik yaptığım yerler Bin klasörü içindeki bütün dosyalar. BlogEngine.Core.dll , BlogEngine.Core.pdb , BlogEngine.Core.XML dosyalarını. Aşağıdaki dosyadan değiştirdiğim klasörün ziplenmiş halini kendi klasörünüzle değiştirirseniz sorun çözülmüş olacaktır.
Bin.rar (260,34 kb) ( 8 Ekim 2008 tarihinde 10:41 de Window Live Writer'dan sayfalar için de sorunu çözen dosyalar güncellenmiştir )
Alp Çoker - www.alpcoker.com