Dinamik Kısıtlı Site Haritası Oluşturmak

Kodla Büyü

togius

Süper Üye
Süper Üye
Mesajlar
1,730
Sitemizin google sıralarında üst sıralarda çıkmasını sağlamak, Seo optimizasyonu işlemlerinde yine olmazsa olmazlardan biri olan ayrıca site ziyaretçilerine aradıkları bilgileri daha rahat bulmalarını sağlayan site haritasından bahsedeceğim. Burada kısıtlı bir site haritasına değineceğim. Sitemize eklediğimiz duyuruları sitemap.xml dosyasına ekleyeceğiz. Aşağıda bulunan siteMapOlustur() rutinini duyuruları eklediğimi butonun click olayına yazabiliriz.
Kod:
private void siteMapOlustur()
    {
        string XmlAdi = "";
        XmlAdi = "Sitemap";
        string sqlSorgusu = @"Select 
	Row_number() over (order by TDuyurular.id desc) as sira,
	* From TDuyurular Where tur='yerel' Order By id Desc";
        string Url = "oku.aspx";
        xmlProcess.xmlManset(XmlAdi, sqlSorgusu, "baslik", Url, true);
    }

xmlProcess.cs Class’ ımız ise

Kod:
using System.Data.SqlClient;

public class xmlProcess
{
    public xmlProcess()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    public static void xmlManset(string XmlDosyasi, string SqlSorgusu, string SqlAlanAdi, string Url, bool TarihKullan)
    {
        string dosya = HttpContext.Current.Server.MapPath("/images/sitemaps/" + XmlDosyasi + ".xml");
        XmlTextWriter textWriter = new XmlTextWriter(dosya, System.Text.Encoding.UTF8);
        textWriter.Formatting = Formatting.Indented;

        string stilDosyasi = "type=\"text/xsl\" href=\"/images/sitemaps/sitemap.xsl\"";
        textWriter.WriteStartDocument();
        textWriter.WriteProcessingInstruction("xml-stylesheet", stilDosyasi);


        textWriter.WriteStartElement("urlset");//urlset başlangıcı

        //urlset e özellik eklendi.
        textWriter.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");
        textWriter.WriteAttributeString("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
        textWriter.WriteAttributeString("xsi:schemaLocation", "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd");

        XmlElementStrings(textWriter, SqlSorgusu, SqlAlanAdi, Url, TarihKullan);
        textWriter.WriteEndElement();//urlset bitişi
        textWriter.Flush();
        textWriter.Close();
    }
    private static void XmlElementStrings(XmlTextWriter textWriter, string SqlSorgusu, string SqlAlanAdi, string Url, bool TarihKullan)
    {
        ayar site_ayarlari = new ayar();
        SqlCommand komut = new SqlCommand(SqlSorgusu, ayar.Baglanti);
//veritabani bağlantimizi kendimizin kini yazıyoruz.
        komut.Connection.Open();
        SqlDataReader dr = komut.ExecuteReader();
        while (dr.Read())
        {
            textWriter.WriteStartElement("url");//url başlangıcı
            string location = "http://siteadi.com/";
            location += Url + dr["id"].ToString();            textWriter.WriteElementString("loc", location);
            if (TarihKullan)
                textWriter.WriteElementString("lastmod",
                    Convert.ToDateTime(dr["tarih"]).ToString("yyyy-MM-dd"));
            textWriter.WriteElementString("changefreq", "always");
            textWriter.WriteElementString("priority", "0.5");
            textWriter.WriteEndElement();//url bitişi
        }
        komut.Connection.Close();
    }
}

Kullandığımız sitemap.xsl Şablon dosyamız

Kod:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
	<xsl:template match="/">
		<html xmlns="http://www.w3.org/1999/xhtml">
			<head>
				<title>XML Sitemap</title>
				<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
				<style type="text/css">
					body {
						font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana;
						font-size:13px;
					}
					
					#intro {
						background-color:#CFEBF7;
						border:1px #2580B2 solid;
						padding:5px 13px 5px 13px;
						margin:10px;
					}
					
					#intro p {
						line-height:	16.8667px;
					}
					
					td {
						font-size:11px;
					}
					
					th {
						text-align:left;
						padding-right:30px;
						font-size:11px;
					}
					
					tr.high {
						background-color:whitesmoke;
					}
					
					#footer {
						padding:2px;
						margin:10px;
						font-size:8pt;
						color:gray;
					}
					
					#footer a {
						color:gray;
					}
					
					a {
						color:black;
					}
				</style>
			</head>
			<body>
				<h1>XML Sitemap</h1>
				<div id="intro">
					<p>
						Bu XML Sitemap dosyası <a href="http://www.google.com/">Google</a>, <a href="http://search.msn.com/">MSN Search</a> and <a href="http://www.yahoo.com/">YAHOO</a> arama motorları için hazırlanmıştır.<br/>Yapımcı <a href="mailto:togius@hotmail.com">Tolga ŞAHİN</a>
					</p>
				</div>
				<div id="content">
					<table cellpadding="5">
						<tr style="border-bottom: 1px solid black;">
							<th>URL</th>
							<th>Priority</th>
							<th>Change Frequency</th>
							<th>LastChange</th>
						</tr>
						<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
						<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
						<xsl:for-each select="sitemap:urlset/sitemap:url">
							<tr>
								<xsl:if test="position() mod 2 != 1">
									<xsl:attribute name="class">high</xsl:attribute>
								</xsl:if>
								<td>
									<xsl:variable name="itemURL">
										<xsl:value-of select="sitemap:loc"/>
									</xsl:variable>
									<a href="{$itemURL}">
										<xsl:value-of select="sitemap:loc"/>
									</a>
								</td>
								<td>
									<xsl:value-of select="concat(sitemap:priority*100,'%')"/>
								</td>
								<td>
									<xsl:value-of select="concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))"/>
								</td>
								<td>
									<xsl:value-of select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))"/>
								</td>
							</tr>
						</xsl:for-each>
					</table>
				</div>
				<div id="footer">
					This XSLT template is released under GPL.
				</div>
			</body>
		</html>
	</xsl:template>
</xsl:stylesheet>

Bu dosyayı google site yönetim araçları panelini kullanarak eklediğimiz kendi sitemizede site haritaları bölümünde /images/sitemap.xml dosyamızı ekleyerek google ın bizi daha rahat indekslemesini sağlayabiliriz.
 
Geri
Üst