PDA

View Full Version : آموزش: ساخت SiteMap داینامیک و پویا



si6arp
دوشنبه 13 دی 1389, 08:37 صبح
با این روش دیگه نیازی نیست سایت مپ بسازید و دردسر های ساخت هم ندارید. و فقط برای یک بار کد را مینویسید و هر گاه به آن صفحه که ساختید (SiteMap.aspx) برید سایت مپ جدید را ساخته و تحویل شما خواهد داد برای اینکار همانطور گه کفته شد یفحه جدیدی با نام SiteMap.aspx ایجاد میکنید .

1 - قسمت کد Asp.net فقط و فقط این را باقی میگزاریم :



<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SiteMap.aspx.cs" Inherits="SiteMap" %>


*** توجه داشته باشید که به غیر از این کد هیچی( حتی Html/Form/Body) وجود نداشته باشه


2 - در قسمت Code Behind هم داریم (Page_Load) :



public string changefreq = "hourly";
public string priority = "0.9";

private void ShowSiteMap()
{
Response.Clear();
Response.ContentType = "text/xml";
using (XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Encoding.UTF8))
{
writer.WriteStartDocument();
writer.WriteStartElement("urlset");
writer.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");
writer.WriteStartElement("url");
string Home = "http://www.barintools.com";
writer.WriteElementString("loc", Home);
writer.WriteElementString("changefreq", changefreq);
writer.WriteElementString("priority", priority);
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
{
writer.Flush();


در صورتی که بخواهیم اطلاعات رو از دیتابیس بگشیم بیرون اینطوری میشه :



Response.Clear();
Response.ContentType = "text/xml";
using (XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Encoding.UTF8))
{
writer.WriteStartDocument();
writer.WriteStartElement("urlset");
writer.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");
writer.WriteStartElement("url");
SqlConnection cnn = new SqlConnection(Connection.GetConnect());
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandText = "DataBase Store Procedure For Select Data";
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter dap = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
dap.Fill(ds, "ds");

foreach (DataRow dr in ds.Tables[0].Rows)
{
string Loc = "http://www.barintools.com/Default.aspx?tagname=" + dr["name"].ToString();
writer.WriteStartElement("url");
writer.WriteElementString("loc", Loc);
writer.WriteElementString("changefreq", changefreq);
writer.WriteElementString("priority", priority);
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
{
writer.Flush();


**نکته :

در قسمت کتابخانه خود این کد ها را اضافه نمایید :



using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Net;
using System.Xml;
using System.Text;


موفق باشید

mahmood1000
دوشنبه 13 دی 1389, 12:09 عصر
دوست عزیز خیلی عالی بود. من کلی دنبال این روش میگشتم.
حالا این sitmap رو چطور باید فراخوانی کنیم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

مرسی

mahmood1000
دوشنبه 13 دی 1389, 12:25 عصر
امکانش هست یه نمونه ازش آپلود کنید؟

si6arp
دوشنبه 13 دی 1389, 12:30 عصر
سعی میکنم ردیفش کنم. چون کمی وقتم شلوغه و کمی هم کار دارم ولی با این حال سعی میکنم درست کنم برات :چشمک:

صادق صدقی
دوشنبه 13 دی 1389, 13:07 عصر
با این روش دیگه نیازی نیست سایت مپ بسازید و دردسر های ساخت هم ندارید. و فقط برای یک بار کد را مینویسید و هر گاه به آن صفحه که ساختید (SiteMap.aspx) برید سایت مپ جدید را ساخته و تحویل شما خواهد داد برای اینکار همانطور گه کفته شد یفحه جدیدی با نام SiteMap.aspx ایجاد میکنید .

سلام
در نوعه خودش کاره با ارزشیه
فقط یک نمونه هم بزاری نوره علی نور می شه

si6arp
دوشنبه 13 دی 1389, 13:24 عصر
64477

اینم یه نمونه برای دوستای گلم

si6arp
دوشنبه 13 دی 1389, 13:59 عصر
مثل این که شما کلا بحث رو متوجه نشدی. این اررور نیست . این ساختار یک SiteMap است که توسط اون صفحه نمایش داده میشه .
شما میبایست آدرس صفحه مورد نظ که در مثال SiteMap.aspx نام دارد را به گوگل معرفی نمایید تا صفحات شما ایندکس بشه و گوگل سایت شما را بشناسد.

در این روش شما میتوانید از لینک های خود یک نقشه تولید کنید و نقشه رو به گوگل بدید تا سایت شما را شناسایی و ایندکس کنه !!!

mahmood1000
دوشنبه 13 دی 1389, 14:23 عصر
OOOOOOOOOOOOOOOOOOOOOOKKKKKKKKKKKKKKKKKKKKK

به خدا شرمنده ، تازه فهمیدم این چیه . خیلی خیلی خیلی خیلی عالییییییییییییییی بود .
بسیار سپاس گذار.

atbin2010
پنج شنبه 16 تیر 1390, 07:44 صبح
با سلام به همگی
این دو متغیر چیند و کارشون چیه؟
changefreq

priority

ممنونم

Matin_Delphi
جمعه 29 شهریور 1392, 18:59 عصر
با سلام به همگی
این دو متغیر چیند و کارشون چیه؟
changefreq

priority

ممنونم

معانی برچسب های استفاده شده در نقشه سایت

<urlset> نقشه سایت با این برچسب شروع و خاتمه می یابد.
<url> محتوای لینک هر صفحه در این برچسب قرار میگیرد و در واقع یک برچسب مادر است.
<loc> این برپسب آدرس دقیق هر صفحه از سایت شما را در خود جای میدهد.
<lastmod> اطلاعات مربوط به آخرین تغییرات صفحه در این برچسب قرار میگیرد که به فرمت YYYY-MM-DD تاریخ دهی میشود.
<changefreq> این برچسب از نقشه سایت شما اطلاعاتی درمورد بازه زمانی تغییرات در صفحه مورد نظر را ارئه میدهد.
<priority> میزان اهمیت صفحه در نقشه سایت شما را مشخص میکند که مقدار آن میتواند در بازه ۰٫۰ تا ۱٫۰ باشد.
D: سوال داشتی بپرس

mohsen.nsb44
پنج شنبه 26 تیر 1393, 09:45 صبح
به یه مشکل بر خوردم
با کد هایی که گذاشتین من دو تا تابع طراحی کردم یکی واسه لینک های ثابت و دیگری واسه خبرهام
مشکل اینجاست که وقتی اسم تابع لینک های ثابت و اسم تابع لینک های خبر که به صورت پویا هستن رو در لود میارم لینک های تابع پویای منو نشون نمیده اما وقتی تکی میارم مشکلی نداره

mohsen.nsb44
پنج شنبه 26 تیر 1393, 11:22 صبح
یه مشکل دیگه در نقشه پویا هستش که تعداد بیشتر از یکی باشه به خط دیگه منتقل نمیشه و خطا میده متن خطا به صورت زیره
XML Parsing Error: junk after document element
Location: http://localhost:2493/nsbSite/SiteMapD.aspx Line Number 1, Column 122:
<url><loc>http://www.site.ir/News_edame.aspx?id=5</loc><changefreq>hourly</changefreq><priority>0.9</priority></url><url><loc>http://www.andishe-n.ir/News_edame.aspx?id=11</loc><changefreq>hourly</changefreq><priority>0.9</priority></url>
--------------------------------------------

کد مورد استفاده به صورت زیر میباشد


public void mapMaghale()
{


//برای لینک هایی که ار دیتا بیس استخراج میشه . مثل اخبار و . . .
Response.Clear();
Response.ContentType = "text/xml";

using (XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Encoding.UTF8))
{
//برای لینک های ثابت که تو سایتتمون هست

//شروع شی XML
writer.WriteStartDocument();
writer.WriteStartElement("urlset");
writer.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");
writer.WriteStartElement("url");
SqlConnection cnn = new SqlConnection();
cnn.ConnectionString = System.Configuration.ConfigurationManager.Connecti onStrings["DBconnectionstring"].ConnectionString;
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandText = "Select * From news";
cmd.CommandType = CommandType.Text;
SqlDataAdapter dap = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
dap.Fill(ds, "ds");


foreach (DataRow dr in ds.Tables[0].Rows)
{

string Loc = "http://www.site.ir/news.aspx?id=" + dr["id"].ToString();
writer.WriteStartElement("url");
writer.WriteElementString("loc", Loc);
writer.WriteElementString("changefreq", changefreq);
writer.WriteElementString("priority", priority);
writer.WriteEndElement();


}

writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
}


}

Noora.Dez
یک شنبه 23 فروردین 1394, 22:09 عصر
سلام. در مورد سایت مپی که قابل نمایش در سایت باشه وداینامیک هم باشه مطلبی دارید؟ممنون

mamadtizz
چهارشنبه 09 تیر 1395, 14:45 عصر
با سلام
کدی که نوشتین سایت مپ رو زمان اجرا ایجاد میکنه و در جایی ذخیره نمیکنه...بنظرتون واسه ایندکس کردن گوگل مشکلی پیش نمیاد؟؟؟؟؟؟؟

bomb23
پنج شنبه 10 تیر 1395, 08:27 صبح
سلام منظورتونا ین هست که runtime تحویل میده با زدن یک آدرس؟
اگر اینطوری هست نه مشکلی ایجاد نمیکنه.

mamadtizz
پنج شنبه 10 تیر 1395, 13:50 عصر
وبمستر فایل با پسوند aspx رو نمیشناسه فقط xml میشناسه