ASP.NET

Asp.Net İle Dinamik Etiket Bulutu Yapma

16 Nisan 2014 Çarşamba Adem KORKMAZ 531
Asp.Net İle Dinamik Etiket Bulutu Yapma

Öncelikle Etiket bulutu oluşturmanın en önemli sebebi blog tarzı yaptığımız web sayfalarının daha çabuk indexlenmesi için etiket tag ları eklemek isteriz.Genel de wordpress ve joomla tarzı open code yazılımlarda bu hazır gelir, ancak kendimiz kodladığımız web sayfalarında bunu bizim oluşturmamız gerekir.

Web sayfamızın hazır olduğunu ve makale ekleme sistemimiz yapmış olarak kabul ediyorum ben daha bunu yaptığım için buna deyinmeyeceğim, eklediğimiz yazılara nasıl etiket bulutu entegre ederiz ve yazıların okunma kısmında nasıl etkileri yazının altına çağırırız bunu gösterecem aynı zaman da sitemizin yan tarafından rast gele belli sayıda etiket çağırıp listeleyeceğiz

Örnek olarak

etki bulutu - meta tagsYandaki etkiet bulutu yapacağız, tabi daha şata fatlaı bir gösterim istiyorsanız hazır css ve ajax kullanırık gösterim kısmını daha şatafatlı yapabilirsiniz, şimdilik sistemin nasıl olduğunu anlamız için en sade şekline değineceğiz.

 

 

 

 

 


Etiket bulutumuzun veritabanı kısmını yapıyoruz makale_id eklediğimiz etiketlerin hangi yazıya ait olduğunu belirtir, etiket ise eklediğimiz kelimeler için, veri tabanına kayıt yaparken etkiket kısmında kelimelerin arasına virgül koyarak kelime veya kelime gruplarını ayırarak veri tabanına teker teker kaydedeceğiz.

 

 

 

Yukarıdaki resimde de görüldüğü üzere makalemize etiketleri eklerken kelimeler arasına virgül koyarak döngü içerine alıp kelimeleri teker teker kaydedeceğiz.

  // etiket bulutu yapma
        OleDbCommand son_ky_id = new OleDbCommand("select * from yazilar order by id desc", baglanti);
        OleDbDataReader sk_id = son_ky_id.ExecuteReader();
        sk_id.Read();
        // son eklenen makalenin id değeri okundu

Burada son makale_id sini okuma sebebi makalemizi ekledikten sonra etkiket bulutunu ekliyoruz yani her iki aynı butonun altına ekliyoruz. haliyle son eklenen yazı bu etiket bulunun yazısı olduğu için onun id sini alıp etiket bulutunda makale_id olarak kaydediyoruzki link verme işlemi doğru olsun.


        string makale_id = sk_id["id"].ToString();
       
        // etkietleri ayırıp bir diziye kaydetme sonrasında veritabanına kaydetme

        string etiket = tags_text.Text.ToString();
        string[] etkiketd = etiket.Split(',');       
        for (int i = 0; i < etkiketd.Length; i++)
        {
               OleDbCommand komut_tags = new OleDbCommand("insert into tags (etiket,makale_id) values (@etiket,@makale_id)", baglanti);
            komut_tags.Parameters.AddWithValue("etiket", etkiketd[i].ToString());
            komut_tags.Parameters.AddWithValue("makale_id", makale_id.ToString()); //makalemizin id değeri
            komut_tags.ExecuteNonQuery();
        }
        baglanti.Close();

bu kısımda makalemiz ekleyip hemen altında etiket bulutmuzun bir diziye atayıp her kelime grubunu teker teker kaydediyoruz.

Etiket Bulutu Okuma

İşlemin son aşaması ise eklediğimiz etiketleri listelemek, Makalemiz okumak istediğimizde devamı oku veya başlığı tıkladığımız id değerine bağlı olarak yazıyı detay.aspx tarzı bir sayfada gösteririz giden id değeri hem yazının gösterimini sağlarken hemde o id değerine bağlı etiketlerin yazının altında görüntülenmesini sağlar.

 baglanti.Open();
        //etiket çalışmaları
        OleDbCommand etiket_komut = new OleDbCommand("select * from tags where makale_id=" + Request.QueryString["id"], baglanti);//etkiket bağlantısı
        OleDbDataReader e_dr = etiket_komut.ExecuteReader();//etiket için okuma
        DataTable etiket_tb = new DataTable();
        etiket_tb.Load(e_dr);
        DataList1.DataSource = etiket_tb.DefaultView;
        DataList1.DataBind();

Ana Sayfadaki Etiket Bulutu Okuma Bölümünü ise Master.Page Sayfamızda ilgili yere Bir DataList ekleyerek daha kolay listeleme ve link verme için ekliyoruz.AccessDataSource ile de veritabanımızdan RastGele 10 Adet Etiket secip çekiyoruz

<asp:DataList ID="DataList2" runat="server" DataSourceID="etiket_bulutu"
                            RepeatDirection="Horizontal" RepeatLayout="Flow">
                <AlternatingItemStyle Wrap="True" />
                <ItemTemplate>                      
                    <asp:HyperLink ID="HyperLink10" runat="server" Font-Underline="False"
                                        ForeColor="#666666" NavigateUrl='<%# Eval("makale_id", "detay.aspx?id={0}") %>'
                                        Text='<%# Eval("etiket") %>' Font-Names="verdana" Font-Size="Small"></asp:HyperLink>                             
                  
                </ItemTemplate>
            </asp:DataList>
          <asp:AccessDataSource ID="etiket_bulutu" runat="server"
                  DataFile="~/App_Data/XXXX.mdb"

                  SelectCommand="SELECT top 10 * FROM [tags] Order By Rnd(-10000000*TimeValue(Now())*[etiket_id])">
     
         </asp:AccessDataSource>                       

Sonunda etiket bulutumuzu oluşturup hem yazıların altında ilgili etiketleri çekip listeledik, hemde ana sayfamızda devamlı olarak rastgele 10 tane farklı etiket çekip onları listeledik, her sayfa yenilenmesinde etiketler değişecektir.

İyi çalışmalar... Adem KORKMAZ

Yorumlar


Yorum Yap




Yukarı Kaydır