همان طور که میدانید نقشهی سایت علاوه بر استفاده از MetaTagها و Url Routingها و ... یکی از نکات اصلی برای سایت شماست که در نتایج گوگل برای جستجو کنندگان نمایش داده شود .
در این مقاله من قصد دارم که به شما چگونگی ایجاد و کار با یک SiteMap داینامیک را آموزش دهم .
منظور از SiteMap داینامیک این است که به ازای هر مطلبی که شما در سایت تان ایجاد ، ویرایش یا حذف میکنید چنانچه دارای صفحه ای در سایت باشد SiteMap تغییر میکند .
ساختار یک SiteMap به صورت زیر است :
Files.zip
در این مقاله من قصد دارم که به شما چگونگی ایجاد و کار با یک SiteMap داینامیک را آموزش دهم .
منظور از SiteMap داینامیک این است که به ازای هر مطلبی که شما در سایت تان ایجاد ، ویرایش یا حذف میکنید چنانچه دارای صفحه ای در سایت باشد SiteMap تغییر میکند .
ساختار یک SiteMap به صورت زیر است :
<?xml version="1.0" encoding="utf-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>Url Page 1</loc> <lastmod>2014-02-20</lastmod> <changefreq>always</changefreq> <priority>1</priority> </url> <url> <loc>Url Page 2</loc> <lastmod>2014-02-20</lastmod> <changefreq>always</changefreq> <priority>1</priority> </url> </urlset>
به ازای هر مطلبی که به سایتتان اضافه میکنید چنانچه آن مطلب جهت نمایش دارای Url باشد ، باید یک تگ Url به SiteMap اضافه شود.
تگ loc موجود در تگ url آدرس صفحه را مشخص میکند .
تگ lastmod تاریخ اضافه کردن یا آخرین ویرایش را نمایش میدهد .
تگ changefreq که دورهی بروز رسانی صفحه را مشخص میکند .
تگ priority الویت صفحه را مشخص میکند .
که من در کد نویسی تگ changefreq را always و تگ priority را 1 قرار دادم.
در فایل ضمیمه یک کلاس به اسم updateSiteMap.cs وجود دارد که تابع آن شامل دو پارامتر ورودی مانند زیر است :
پارامتر Addr که آدرس صفحه ای است که شما میخواهید به SiteMap اضافه شود .
پارامتر NewOpr که میتواند شامل یکی از سه مقدار زیر باشد :add ، edit ، delete
اگر پارامتر NewOpr دارای مقدار add باشد یعنی مقدار موجود در پارامتر Addr را بهSiteMap اضافه کن . یعنی یک تگ url یه SiteMap اضافه کن .
اگر پارامتر NewOpr دارای مقدار edit باشد یعنی مقدار موجود در تگ <lastmod> را ویرایش کن . یعنی تاریخ آخرین بروزرسانی تغییر میکند .
اگر پارامتر NewOpr دارای مقدار delete باشد یعنی تگ url ایی که محتوای تگ loc آن برابر است با مقدار موجود در پارامتر Addr را از SiteMap حذف کن.
این بخش از کد موجود در فایل ضمیمه uupdateSiteMaop.cs قسمت edit و delete نقشهی سایت را انجام میدهد .
و بخش else دستور بالا قسمت Add را انجام میدهد .یعنی کدهای زیر:
اگر اطلاعاتی را به جدول اضافه میکنید و میخواهید Url صفحهی مربوط به آن اطلاعات برای شما در SiteMap اضافه شود بعد از ذخیره شدن اطلاعات در جدول بلافاصله کد زیر را اضافه میکنید :
برای قسمت ویرایش هم پس از آنکه اطلاعات را ویرایش کردید چنانچه برای آن اطلاعات صفحه ای را در SiteMap درج کرده اید کد زیر را مینویسید :
برای قسمت حذف هم اگر شما اطلاعاتی را از جدول حذف میکنید چنانچه برای آن اطلاعات صفحه ای در SiteMap درج کرده اید کد زیر را مینویسید :
موفق باشید .
تگ loc موجود در تگ url آدرس صفحه را مشخص میکند .
تگ lastmod تاریخ اضافه کردن یا آخرین ویرایش را نمایش میدهد .
تگ changefreq که دورهی بروز رسانی صفحه را مشخص میکند .
تگ priority الویت صفحه را مشخص میکند .
که من در کد نویسی تگ changefreq را always و تگ priority را 1 قرار دادم.
در فایل ضمیمه یک کلاس به اسم updateSiteMap.cs وجود دارد که تابع آن شامل دو پارامتر ورودی مانند زیر است :
public void UpdateSiteMap(string Addr,string NewOpr)
پارامتر NewOpr که میتواند شامل یکی از سه مقدار زیر باشد :add ، edit ، delete
اگر پارامتر NewOpr دارای مقدار add باشد یعنی مقدار موجود در پارامتر Addr را بهSiteMap اضافه کن . یعنی یک تگ url یه SiteMap اضافه کن .
اگر پارامتر NewOpr دارای مقدار edit باشد یعنی مقدار موجود در تگ <lastmod> را ویرایش کن . یعنی تاریخ آخرین بروزرسانی تغییر میکند .
اگر پارامتر NewOpr دارای مقدار delete باشد یعنی تگ url ایی که محتوای تگ loc آن برابر است با مقدار موجود در پارامتر Addr را از SiteMap حذف کن.
این بخش از کد موجود در فایل ضمیمه uupdateSiteMaop.cs قسمت edit و delete نقشهی سایت را انجام میدهد .
if (NewOpr != "add") { XmlElement xmlElement = xmlDoc.DocumentElement; if (xmlElement.ChildNodes != null) { foreach (XmlElement myElement in xmlDoc.DocumentElement) { if (myElement.ChildNodes[0].InnerText == Addr) { if (NewOpr != "delete") myElement.ChildNodes[1].InnerText = DateTime.Now.ToString("yyyy-MM-dd"); else myElement.ParentNode.RemoveChild(myElement); break; } } } }
و بخش else دستور بالا قسمت Add را انجام میدهد .یعنی کدهای زیر:
else { string ns="http://www.sitemaps.org/schemas/sitemap/0.9"; XmlNode url = xmlDoc.CreateNode(XmlNodeType.Element, "url",ns ); XmlNode loc = xmlDoc.CreateNode(XmlNodeType.Element, "loc", ns); XmlNode lastmod = xmlDoc.CreateNode(XmlNodeType.Element, "lastmod", ns); XmlNode changefreq = xmlDoc.CreateNode(XmlNodeType.Element, "changefreq", ns); XmlNode priority = xmlDoc.CreateNode(XmlNodeType.Element, "priority", ns); loc.InnerText = Addr; lastmod.InnerText = DateTime.Now.ToString("yyyy-MM-dd"); changefreq.InnerText = "always"; priority.InnerText = "1"; url.AppendChild(loc); url.AppendChild(lastmod); url.AppendChild(changefreq); url.AppendChild(priority); xmlDoc.DocumentElement.AppendChild(url); }
// Add Info In Table // updateSiteMap updateSiteMap = new updateSiteMap(); updateSiteMap.UpdateSiteMap("Url Page", "add");
برای قسمت ویرایش هم پس از آنکه اطلاعات را ویرایش کردید چنانچه برای آن اطلاعات صفحه ای را در SiteMap درج کرده اید کد زیر را مینویسید :
updateSiteMap updateSiteMap = new updateSiteMap(); updateSiteMap.UpdateSiteMap("Url Page", "edit");
برای قسمت حذف هم اگر شما اطلاعاتی را از جدول حذف میکنید چنانچه برای آن اطلاعات صفحه ای در SiteMap درج کرده اید کد زیر را مینویسید :
updateSiteMap updateSiteMap = new updateSiteMap(); updateSiteMap.UpdateSiteMap("Url Page", "delete");
موفق باشید .