تبلیغات
Fact World - آموزش ساخت نقشه سایت (Sitemap) با php و xml

آموزش برنامه نویسی و مهارتهای وب

article 

آموزش ساخت نقشه سایت (Sitemap) با php و xml

php-sitemap یکی از روش هایی که تاثیر زیادی در معرفی هرچه بهتر سایت یا وبلاگ به موتورهای جستجو دارد، ایجاد نقشه سایت یا به اصطلاح Sitemap است، هرچند اکثر کاربران ترجیح می دهند که از تگ ul و li برای نقشه سایتشان استفاده کنند، اما آنچه پروتکل استاندارد وب توصیه می کند استفاده از نقشه سایت xml است، xml زبانی است که با پلتفرم های مختلف سازگار است و اکثر موتورهای جستجوگر معروف نیز از آن پشتیبانی می کنند و عضو sitemaps.org هستند؛ در این آموزش قصد داریم نحوه ایجاد و مدیریت یک نقشه سایت را در حد امکان به طور کامل توضیح دهیم، البته یادآور می شویم که درک این مطلب نیازمند داشتن دانش اولیه در php و mysql است.

شیوه نگارش (syntax) نقشه سایت


شیوه نگارش (syntax) یک نقشه سایت معمولی به شکل زیر است:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.example.com/</loc>
</url>
<url>
<loc>http://www.example.com/?link=2</loc>
</url>
.
.
.
</urlset>
توضیح:
- encoding نقشه سایت باید UTF-8 باشد.
- sitemaps.org سایت رسمی پروتکل نقشه سایت است.
- تگ urlset برای هر نقشه سایت، تنها یک بار تکرار می شود.
- لینک ها را (ترجیحا) از بالاترین سطح تا پائین ترین سطح در تگ های url مرتب کنید.
- برای صفحه نخست سایت حتما / را در پایان آدرس قرار دهید.
- از به کار بردن کاراکترهای &, ', ", > و < در آدرس لینک ها خودداری کنید و به جای آنها از جایگزین html استفاده نمائید.

ایجاد نقشه سایت داینامیک


مسلما تعداد لینک های یک سایت داینامیک به چند عدد محدود نخواهد بود لذا برای مدیریت نقشه سایتمان باید از زبان های سمت سرور و از جمله php استفاده کنیم، در کد زیر ما اطلاعات فرضی را از پایگاه داده فراخوانی می کنیم و برای هر مطلب، لینک آن را به نقشه سایتمان اضافه کرده و در پایان لینک ها را در یک فایل با نام sitemap.xml کپی می کنیم:
<?php
//ابتدا یک فایل با نام sitemap.xml بسازید.
//ابتدا فایل را دریافت کرده و یک بار محتویات آن را پاک می کنیم
$file = "sitemap.xml";
chmod($file, 0755);//تنظیم مجوز های ویرایش
$fileHandle = fopen($file, 'w+')//استفاده از متد w+
or die("خطا: سطح دسترسی برای ویرایش فایل در سرور تنظیم نیست!");
$empty = "";//متغیر برابر خالی
//نوشتن در فایل
$stringData = $empty;
fwrite($fileHandle, $stringData);
fclose($fileHandle);

//باز کردن مجدد فایل
$file = "sitemap.xml";
chmod($file, 0755);
$fileHandle = fopen($file, 'a')//این بار با متد a
or die("خطا: سطح دسترسی برای ویرایش فایل در سرور تنظیم نیست!");
    
$start = "<?xml version='1.0' encoding='UTF-8'?>
<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";
//نوشتن فایل با متد a
$stringData = $start;
fwrite($fileHandle, $stringData);

//صفحه نخست
$home = "<url><loc>http://example.com/</loc></url>\n";
//نوشتن
$stringData = $home;
fwrite($fileHandle, $stringData);
//قبل از اتصال به پایگاه داده باید اطلاعات اتصال را تعریف کنید
//دریافت اطلاعات پست ها از دیتابیس و تبدیل به لینک
$result = mysql_query("SELECT * FROM posts ORDER BY rank ASC")
or die(mysql_error());
while($row = mysql_fetch_array($result)){
    $id = $row['id'];
    $link = "<url><loc>http://example.com/?id=$id</loc></url>\n";
    //نوشتن
    $stringData = $link;
    fwrite($fileHandle, $stringData);
}
$end = "</urlset>";//بستن نقشه سایت
//نوشتن
$stringData = $end;
fwrite($fileHandle, $stringData);
fclose($fileHandle);
?>
توضیح:
- فایلی با نام sitemap.xml ترجیحا در ریشه سایت بسازید.
- در کد بالا ابتدا بعد از فراخوانی فایل یک بار با متد +w محتویات آن را پاک سازی می کنیم (این کار برای جلوگیری از تکرار لینک ها در هر بار به روزرسانی نقشه سایتمان است).
- مجدد فایل را این بار با متد a باز می کنیم و می نویسیم (فرق متد a و +w در این است که متد a به محتویات کنونی فایل خللی وارد نمی کند و در انتها کد جدید را اضافه می نماید اما متد +w فایل را خالی کرده و مجدد می نویسد).
- در مثال عنوان شده اطلاعات را از جدولی فرضی به نام posts دریافت کرده ایم و برای هر مطلب یک لینک به خروجی می دهیم.
- لینک های ما باید استاندارد html باشند و لذا استفاده از کارکترهای خاص که پیشتر گفتیم مجاز نمی باشد، می توانید از تابع htmlspecialchars در php نیز استفاده کنید.
- برای آپدیت مرتب نقشه سایت می توانید به عنوان مثال آن را در صفحه ای که مطالبتان را از آن ارسال می کنید ایمپورت کنید تا با هر بار ارسال مطلب جدید، اطلاعات به روز رسانی شوند.
استفاده از نقشه سایت به لینک های معمولی محدود نمی شود، محتویات دیگر صفحات وب از جمله تصاویر، ویدئوها، اخبار و... را نیز می توان در Sitemap گنجاند:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.sitemaps.org/schemas/sitemap-image/1.1"
        xmlns:video="http://www.sitemaps.org/schemas/sitemap-video/1.1">
<url>
<loc>http://www.example.com/</loc>
<image:image>
<image:loc>http://example.com/imagename.jpg</image:loc>
</image:image>
<video:video>     
<video:content_loc>http://www.example.com/videofilename.flv</video:content_loc>
<video:player_loc allow_embed="yes" autoplay="ap=1">http://www.example.com/videoplayer.swf?video=videofilename</video:player_loc>
<video:thumbnail_loc>http://www.example.com/thumbs/videofilename.jpg</video:thumbnail_loc>
<video:title>عنوان ویدئو</video:title>  
<video:description>توصیف ویدئو</video:description>
</video:video>
</url>
<url>
<loc>http://www.example.com/?link=2</loc>
</url>
.
.
.
</urlset>

افزودن تاریخ و اطلاعات بیشتر به sitemap


علاوه بر تگ <loc> که آدرس لینک ها را در آن قرار می دهیم، از چند تگ (اختیاری) دیگر نیز می توانیم در نقشه xml سایت خود استفاده کنیم، از جمله <lastmod> برای نمایش تاریخ ایجاد یا به روز رسانی لینک، <changefreq> که دوره تغییر یک لینک را مشخص می کند و <priority> که میزان اهمیت آن را نسبت به سایر لینک ها نشان می دهد.
<?xml version="1.0" encoding="UTF-8"?> 
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.example.com/</loc>
<lastmod>2012-03-20</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.example.com/?link=2</loc>
<lastmod>2012-02-18T21:45:19+03:30</lastmod>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
.
.
.
</urlset>
توضیح:
- فرمت <lastmod> می تواند به صورت تاریخ ساده، یا تاریخ همراه زمان و اختلاف زمانی باشد (در مثال بالا از هر دو روش استفاده کرده ایم).
- <changefreq> می تواند مقادیری مثل ماهیانه (monthly)، هفتگی (weekly)، ساعت به ساعت (hourly)، روزانه (daily)، سالیانه (yearly)، همیشگی (always) و یا هرگز (never) باشد.
- <priority> میزان اهمیت لینک را مشخص می کند، این مقدار می تواند به ترتیب از کم اهمیت ترین (0.0) تا پراهمیت ترین (1.0) در نوسان باشد.
section دسته بندی: آموزش کاربردی - آموزش کاربردی PHP -


یکشنبه 13 مهر 1393

نظرات ()


دوشنبه 16 مرداد 1396 06:35 ب.ظ
Hi, just wanted to mention, I liked this article.

It was inspiring. Keep on posting!
دوشنبه 4 اردیبهشت 1396 09:10 ق.ظ
BHW
Hello, yeah this piece of writing is genuinely good and
I have learned lot of things from it about blogging. thanks.

نظر خود را ثبت کنید:

 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر



آگهی
آموزش طراحی سایت
webgoo.ir

آموزش برنامه نویسی و مهارتهای وب
امکانات جانبی


IP شما: ( )