آموزش و سورس نحوه ایجاد sitemap.xml به صورت پویا در PHP
0 0

آموزش و سورس نحوه ایجاد sitemap.xml به صورت پویا در PHP


آموزش و سورس نحوه ایجاد sitemap.xml به صورت پویا در PHP

در این پست نحوه ساخت sitemap سایت به صورت پویا را در PHP برایتان قرار داده ایم.

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

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

شیوه نگارش (syntax) یک نقشه سایت معمولی به شکل زیر است:

<?xml version='1.0' encoding='UTF-8'?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>http://iranganj.ir/</loc></url>
<url>
<loc>http://iranganj.ir/?PostId=1/آموزش-Asp.net</loc>
<lastmod>1393/10/05</lastmod>
<changefreq >Daily</changefreq>
<priority >0.5</priority>
</url>
<url>
<loc>http://iranganj.ir/?PostId=2/آموزش-PHP</loc>
<lastmod>1393/10/03</lastmod>
<changefreq >Daily</changefreq>
<priority >0.5</priority>
</url>
<url>
<loc>http://iranganj.ir/?PostId=3/آموزش-jsp</loc>
<lastmod>1393/10/01</lastmod>
<changefreq >Daily</changefreq>
<priority >0.5</priority>
</url>
<url>
<loc>http://iranganj.ir/?PostId=4/آموزش-HTML</loc>
<lastmod>1393/10/02</lastmod>
<changefreq >Daily</changefreq>
<priority >0.5</priority>
</url>
</urlset>

توضیح:
1)  encoding نقشه سایت باید UTF-8 باشد.
2) sitemaps.org سایت رسمی پروتکل نقشه سایت است.
3) تگ urlset برای هر نقشه سایت، تنها یک بار تکرار می شود.
4) لینک ها را (ترجیحا) از بالاترین سطح تا پائین ترین سطح در تگ های url مرتب کنید.
5)  برای صفحه نخست سایت حتما / را در پایان آدرس قرار دهید.
 6) از به کار بردن کاراکترهای &, ', ", > و < در آدرس لینک ها خودداری کنید و به جای آنها از جایگزین html استفاده نمائید.
 

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

مسلما تعداد لینک های یک سایت داینامیک به چند عدد محدود نخواهد بود لذا برای مدیریت نقشه سایتمان باید از زبان های سمت سرور و از جمله php استفاده کنیم، در کد زیر ما اطلاعات فرضی را از پایگاه داده فراخوانی می کنیم و برای هر مطلب، لینک آن را به نقشه سایتمان اضافه کرده و در پایان لینک ها را در یک فایل با نام sitemap.xml کپی می کنیم:

در کد php توضیحات برنامه داده شده است که به راحتی می توانید از آن در برنامه هایتان استفاده کنید.

<meta charset="UTF-8">
<?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://iranganj.ir/</loc></url>\n";
//نوشتن
$stringData = $home;
fwrite($fileHandle, $stringData);
//قبل از اتصال به پایگاه داده باید اطلاعات اتصال را تعریف کنید
//دریافت اطلاعات پست ها از دیتابیس و تبدیل به لینک
$connection = mysqli_connect("localhost", "root", "", "sitemap");
if (mysqli_connect_errno()) {
    die("database connection failed: " .
        mysqli_connect_error() .
        "(" . mysqli_connect_errno() . ")"
    );
}
mysqli_query($connection, "set names 'utf8'");
$query = "SELECT * FROM post ";
$result = mysqli_query($connection, $query);
if ($result) {
    while ($row = mysqli_fetch_assoc($result)) {
        $PostId = $row['PostId'];
        $PageTitle = str_replace(" ","-",$row['PageTitle']);
        $InsertDate = $row['InsertDate'];
        $link = "<url>\n";
        $link .= "<loc>http://iranganj.ir/?PostId=$PostId/$PageTitle</loc>\n";
        $link .= "<lastmod>$InsertDate</lastmod>\n";
        $link .= "<changefreq >Daily</changefreq>\n";
        $link .= "<priority >0.5</priority>\n";
        $link .= "</url>\n";
        //نوشتن
        $stringData = $link;
        fwrite($fileHandle, $stringData);
    }
}
$end = "</urlset>"; //بستن نقشه سایت
//نوشتن
$stringData = $end;
fwrite($fileHandle, $stringData);
fclose($fileHandle);
$message="<h1 align='center' style='direction: rtl;color: greenyellow;'>";
$message.="سایت مپ سایت شما با موفقیت ایجاد شد جهت مشاهده فایل sitemap.xml را مشاهده نمایید";
$message.="</h1>";
echo $message;
?>

نکته : برای اینکه این کد همیشه بعد از ثبت تایک کار کند یعنی زمانی که شما تاپیک خودتان را در دیتابیس ثبت می کنید این کدها را باید قرار دهید برای راحتی کار می توانید این کدها را در یک صفحه ی جداگانه نوشته و فقط این صفحه را در مواقعی که نیاز دارید include کنید. برای مثال در اینجا نام فایل PHP ما sitemap.php می باشد برای include کردن آن کافیست کد زیر را اضافه کنید.

<?php include("sitemap.php"); ?>

توجه : فایل sql پایگاه داده نیز ضمیمه برنامه می باشد.

دانلود

نویسنده حسین فتحی
گروه مطلب PHP
نوع مطلب سورس کد و آموزش
تاریخ انتشار ۵ دی ۱۳۹۳
منبع ایران گنج
تعداد نظرات ۰
قیمت کاربران VIP
توضیح توجه:
  • زمانی که روی لینک دانلود کلیک می کنید لینک دانلود به مدت 24 ساعت معتبر خواهد بود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

نظر / سوال

Captcha

این صفحه را می‌پسندم