Etiket bulutumuzun yanına o etikete ait kaç yazı bulunduğunun
gözükmesini ister miydiniz? Ben açıkcası isterdim ki zaten kendi
günlüğümde de yaptım. Hakan COŞAR Sol taraf da Etiket bulutu kısmında da
göreceğiniz gibi her bir etiketimin yanında o etikete ait kaç adet
yazının bulunduğu göstermektedir.
Aslında yapısal olarak çok fazla bir zorluk yok. Aşağıdaki 2 adet
kurulumu anlattım. Bunlardan bir tanesi tamamen dosyaları indirerek
sizinkiler ile yer değiştirmek ki ikinci yöntem ise nasıl yapıldığını
anlatarak kendinizin yapmasını sağlamak.
Özellikleri :
- Sayıları göster/gösterme gibi bir seçenek düzenleme
bölümünde mevcuttur. İsterseniz varsayılan olarak kullanabilir
istersenizde yanlarına adet sayısını yazdırabilirsiniz.
- Kurulumu basittir.
1. Kurulum : Dosyalarınızı Yer değiştirin ; ( Basit Kurulum - TAVSİYE EDİLİR)
- Buradan paketi kendi bilgisayarınıza indirin.
- Paketi çıkartabilmeniz için Winrar programının bilgisayarınızda kurulu olması gerekir.
- Paketi çıkartınız.
- Ana dizininizdeki widgets klasorune giriniz ve paketten çıkarttığınız "Tag Cloud" dosyasını kopyala/yapıştır yöntemini uygulayınız.
- Dosyalar değiştirilsin mi sorusuna , (Eğer siz bir güncelleme yaptı iseniz bu maddeyi atlayıp 2. maddeden devam ediniz) Evet demelisiniz.
- Daha sonra sisteme giriş yaparak düzenleyebilirsiniz.
- Kurulumu bu kadar basittir :)
2. Kurulum : Yapımı ;
- Widgets klasorune gidiniz.
- "Tag Cloud" klasorunu açınız ve widget.ascx.cs dosyasını düzenleyecek şekilde açınız.
- 161. Satıra yada sınıfın } bitmeden önceki bir boşluğa ,
public static int EtiketSayac(string Key)
{
int Sayac = 0;
foreach (Post post in Post.Posts)
{
if (post.IsVisible)
{
foreach (string tag in post.Tags)
{
if (Key == tag)
Sayac++;
}
}
}
return Sayac;
}
Kodlarını ekleyiniz.
- private const string LINK ile başlayan Field'i bulunuz. "Private fields" şeklinde bir region içine alınmıştır.
private const string LINK = "<a href=\"{0}\" class=\"{1}\" title=\"{2}\">{3}({4})</a> ";
Şeklinde düzenleyiniz. ve hemen üst satırına ;
private const string LINKNot = "<a href=\"{0}\" class=\"{1}\" title=\"{2}\">{3}</a> ";
satırlarını ekleyiniz..
- LoadWidget() metodunu
public override void LoadWidget()
{
foreach (string key in WeightedList.Keys)
{
StringDictionary settings = GetSettings();
bool EtiketGoster = false;
if (settings.ContainsKey("ChEtiketGoster"))
EtiketGoster = Convert.ToBoolean(settings["ChEtiketGoster"]);
HtmlGenericControl li = new HtmlGenericControl("li");
if (EtiketGoster == true)
{
li.InnerHtml = string.Format(LINK, Utils.RelativeWebRoot + "?tag=/" + HttpUtility.UrlEncode(key),
WeightedList[key], "Tag: " + key, key, Convert.ToString(EtiketSayac(key)));
}
else
{
li.InnerHtml = string.Format(LINKNot, Utils.RelativeWebRoot + "?tag=/" + HttpUtility.UrlEncode(key),
WeightedList[key], "Tag: " + key, key, "");
}
ulTags.Controls.Add(li);
}
}
tamamen buşekilde değiştiriniz.
- Edit.ascx dosyasını açınız. Html tarafında DropDownListin altına bir iki satır(düzeni size kalmış) boşluk
bırakınız.
- "Etiketlerde Yazı sayısını göster : " bir ibare ile yanına bir CheckBox ekleyiniz. CheckBox ID değerini
ChEtiketGoster olarak değiştirdim.
- Edit.ascx.cs dosyasını açınız ve Save() Metodun da
settings["minimumposts"] = ddlNumber.SelectedValue;
satırının altına
settings["ChEtiketGoster"] = Convert.ToString(CHEtiketGoster.Checked);
ekleyiniz.
- protected override void OnLoad(EventArgs e) Satırının üst tarafına ;
protected void Page_PreRender(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
StringDictionary settings = GetSettings();
if (settings.ContainsKey("ChEtiketGoster"))
CHEtiketGoster.Checked = Convert.ToBoolean(settings["ChEtiketGoster"]);
}
}
Eklemesini gerçekleştiriniz..
- Daha sonra dosyalarınızı ana dizinde bulunan "widgets" klasoru altındaki "Tag Cloud" klasörüne atınız.
Kurulumuda bu kadardır.
Umarım faydalı olur.
Test ettim çalışıyor , ancak sizlerde test ettiken sonra ve ekleyenler bilgilendirme verir ise sevinirim.
Hakan COŞAR