Bu makalede asp.net ile site haritası başka bir deyişle sitemap oluşturmayı göstereceğim. Ben genellikle kendi sitelerimde bu kodu kullanıyorum. Yapamayan arkadaşlar olursa burdan yardımcı olmaya çalışırım.
using System.Text;
using System.Net;
using System.IO;
using System.Data.OleDb;
ekliyoruz.
Şimdi kodlarımızı yazmaya başlayalım.
//Sayfanın içeriğini komple temizliyoruz...
Response.Clear();
//Sayfanın formatını XML olduğunu belirliyoruz...
Response.ContentType = "text/xml";
//XML oluşturmak için XmlTextWriter tanımlıyoruz ve
//Encoding UTF8 olarak belirliyoruz...
XmlTextWriter objX = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
//Bu bölümde sırasıyla elementlerimizi oluşturuyoruz.
objX.WriteStartDocument();
objX.WriteStartElement("urlset");
//Site Map standartlarını belirliyoruz...
objX.WriteAttributeString("xmlns", "
http://www.sitemaps.org/schemas/sitemap/0.9");
objX.WriteAttributeString("xmlns:xsi", "
http://www.w3.org/2001/XMLSchema-instance");
objX.WriteAttributeString("xsi:schemaLocation", "
http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd");
//Sitenin sabit sayfalarını static olarak ekliyoruz...
objX.WriteStartElement("url");
objX.WriteElementString("loc",
http://www.siteadi.com/);
objX.WriteElementString("lastmod", DateTime.Now.ToString("yyyy-MM- dd"));
objX.WriteElementString("changefreq", "daily");
objX.WriteElementString("priority", "1");
objX.WriteEndElement();
OleDbConnection objConnection = new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("App_Data\\dbninismi.mdb"));
objConnection.Open();
//Ben blogla ilgili örnek yapıyorum
string sql = "SELECT id,tarih, baslik FROM altkategori ORDER BY id DESC";
OleDbCommand objCommand = new OleDbCommand(sql, objConnection);
OleDbDataReader objReader = objCommand.ExecuteReader();
while (objReader.Read())
{
objX.WriteStartElement("url");
objX.WriteElementString("loc",
http://www.siteadi.com/ + ReWritePath(objReader["id"].ToString(), objReader ["baslik"].ToString()) );
objX.WriteElementString("lastmod", objReader.GetDateTime(1).ToString("yyyy-MM-dd"));
if (objReader.GetDateTime(1).ToShortDateString() == DateTime.Now.ToShortDateString())
{
objX.WriteElementString ("priority", "1");
objX.WriteElementString ("changefreq", "daily");
}
else
{
int fark = TarihFark (objReader.GetDateTime(1), DateTime.Now);
if ((fark > 1) && (fark <= 7))
{
objX.WriteElementString("priority", "0.5");
objX.WriteElementString("changefreq", "weekly");
}
else if (fark > 7)
{
objX.WriteElementString("priority", "0.1");
objX.WriteElementString("changefreq", "monthly");
}
}
objX.WriteEndElement();
}
objReader.Close();
objConnection.Close();
objX.WriteEndElement();
objX.WriteEndDocument();
objX.Flush();
objX.Close();
Response.End();
}
public int TarihFark(DateTime tr1, DateTime tr2)
{
TimeSpan Sonuc;
Sonuc = (tr2 - tr1);
return (Sonuc.Days);
}
Kolay Gelsin...