سایت مپ چیست؟
سایت مپ یک روش برای مرتب کردن اطلاعات سایت برای موتورهای جستجو براساس شاخه مناسب می باشد. سایت مپ استاندارد موتور جستجوی گوگل است که در سال 2004 معرفی شد تا ربات های جستجو گر بتوانند با یک نگاه سریع به این فایل تمام تغییرات را به سرعت یافته و سریعا در موتور گوگل ثبت کنند سایت مپ یک فایل XML با بدنه ثابت و اطلاعات داخل بدنه همراه با یک نام مشخص که عموما sitemap.xml است اما این نام و مسیر آن در سایت را می توانید به دلخواه خود انتخاب کنید ولی در هر صورت باید به موتور های جستجو آدرس سایت مپ خود را معرفی کنید.
سایت مپ (sitemap) در فریم ورک لاراول
یک سایت که با فریم ورک لاراول ساخته شده است نیز نیاز دارد که سایت مپ مورد نیاز آن ساخته شود و خود لاراول ساخت آن را به صورت اتوماتیک انجام نمی دهد پس یا باید از پکیج های آماده استفاده کنید یا خودتان یک سایت مپ بسیار قوی و حرفه ای بسازید و پیشنهاد بنده نوع دوم است. پس ما یک فایل xml با نام sitemap.xml خواهیم ساخت که قسمت های مختلف سایت را با آن به موتورهای جستجو معرفی کنیم.
سایت مپ (sitemap) برای محتوای بسیار زیاد در لاراول
در این روش که در ادامه کامل همراه با کد معرفی خواهد شد سعی می کنیم سایت مپ را به تکه های کوچکتری تقسیم کنیم تا سریعا برای ربات ها قابل دسترسی باشد حتی احتمال دارد هر کدام از این سایت مپ های کوچکتر خود نیز به تکه های کوچکتری تقسیم شوند.
مراحل ساخت sitemap در laravel
همانطور که می دانید سایت های لاراولی هم نیاز به خدمات سئو دارند که در این خدمات سایت مپ نیز باید ساخته شود. مراحل مختلف برای ساخت یک سایت مپ ساده و در ادامه sitemap حرفه ای در laravel را انجام خواهیم داد پس مرحله اول ساخت یک کنترلر با نام SitemapController می باشد در کنسول artisan کد ذیل را وارد کنید
ساخت کنترلر برای sitemap
php artisan make:controller SitemapController
سپس مسیر دسترسی به این کنترلر را در فایل web.php تعریف می کنیم
Route::get('sitemap.xml','SitemapController@sitemap');
در کنترلر SitemapController یک تابع به اسم sitemap تعریف و مسیر view قابل نمایش همراه با header های لازم برای استاندارد xml را به آن می افزاییم. همچنین یک کوئری برای واکشی پست ها موجود در دیتابیس نیز برای view ارسال می کنیم
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Post;
class SitemapController extends Controller
}
public function sitemap()
{
$post=Post::all();
return response()->view('sitemap',compact('post'))->header('Content-Type','text/xml');
}
}
ساخت view برای sitemap
یک ویو در قسمت resource پروژه با نام sitemap.blade.php تعریف می کنیم
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
@foreach($post as $value)
<url>
<loc>
{{ urldecode(route('Post.show',$value->id.'-'.$value->title)) }}
</loc>
<lastmod>{{ $value->updated_at }}</lastmod>
<changefreq>hourly</changefreq>
<priority>0.8</priority>
<image:image>
<image:loc>
{{ asset($value->Picture) }}
</image:loc>
<image:caption>جاب تیم</image:caption>
<image:title>{{ $value->title }}</image:title>
</image:image>
</url>
@endforeach
</urlset>
توضیحات : قسمت های مختلف این کد رو مختصر توضیح خواهیم داد تا دقیقا متوجه این قضیه شوید
-
<loc></loc> در داخل این قسمت url پست باید قرار گیرد
-
<lastmod></lastmod> این قسمت نیز آخرین تاریخچه ویرایش پست را نشان خواهد داد
-
<changefreq>hourly</changefreq> امکان ایجاد تغییرات به صورت ساعتی به موتورهای جستجوی معرفی شده است که مقدارهای هفتگی ، روزانه و ... نیز می تواند بگیرد
-
<priority>0.8</priority> اهمیت این پست در سایت از نمره یک نمره 0.8 داده شده است که عموما صفحات اصلی نمره یک ، دسته بندی ها نمره 0.9 و پست ها نمره 0.8 می گیرند و همینطور می توانید برای موضوعات دیگر نیز این نمرات را ادامه دهید
-
<image:image></image:image> داخل این تگ نیز اطلاعات تصویر مربوط به پست گذاشته شده است شامل آدرس، عنوان و کپشن
خوب من فقط یک بخش کوچک رو توضیح دادم که یک سایت مپ کوچک به راحتی به روش بالا ساخته می شود در ادامه می خواهم در مورد سایت مپ بزرگتر مطلب رو کاملتر کنم و تجربه بهتری برای شما دوستان ارائه کنم
مراحل ساخت سایت مپ بزرگ با فریم ورک لاراول
ساخت کنترلر به توابع مختلف برای بخش بندی و تکه کردن سایت مپ در لاراول
<?php
namespace App\Http\Controllers;
use App\Category;
use Illuminate\Http\Request;
use App\Product;
use App\PageStatic;
class SitemapController extends Controller
{
public function sitemap()
{
return response()->view('sitemap')->header('Content-Type','text/xml');
}
public function statics()
{
return response()->view('statics')->header('Content-Type','text/xml');
}
public function category()
{
$query=Category::active()->get();
return response()->view('category',compact('query'))->header('Content-Type','text/xml');
}
public function post()
{
$query=Product::active()->with('PictureFirst')->orderBy('id','desc')->get();
return response()->view('post',compact('query'))->header('Content-Type','text/xml');
}
}
ساخت url های این کنترلر نیز به صورت ذیل خواهد بود
Route::get('sitemap.xml','SitemapController@sitemap');
Route::get('sitemap-static.xml','SitemapController@statics');
Route::get('sitemap-category.xml','SitemapController@category');
Route::get('sitemap-post.xml','SitemapController@post');
خب بعدش view های هر کدوم از این قسمت هارو خواهیم ساخت
اول view اصلی که به صورت یک شبکه عمل میکنه و آدرس سایت مپ های دیگه رو معرفی میکنه با اسم sitemap.blade.xml
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>{{ url('sitemap-static.xml') }}</loc>
</sitemap>
<sitemap>
<loc>{{ url('sitemap-category.xml') }}</loc>
</sitemap>
<sitemap>
<loc>{{ url('sitemap-post.xml') }}</loc>
</sitemap>
</sitemapindex>
گزینه بعدی معرفی صفحات ثابت و بدون تغییر در سایت می باشد با اسم statics.blade.php
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>{{ url('/') }}</loc>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>{{ url('/UploadFile') }}</loc>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>{{ url('/login') }}</loc>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>{{ url('/register') }}</loc>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>{{ url('/blog') }}</loc>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>{{ url('blog/jobteam-about') }}</loc>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>{{ url('blog/jobteam-question') }}</loc>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>{{ url('blog/Privacy-Policy') }}</loc>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>{{ url('blog/jobteam-terms') }}</loc>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>{{ url('blog/register-jobteam') }}</loc>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>{{ url('blog/jobteam-upload-file') }}</loc>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
</urlset>
من برخی از صفحات ثابت سایت جاب تیم رو معرفی کردم تا کاملا برای شما قابل بررسی باشد و بعدش view دسته بندی (category) های را با اسم category.blade.php درست می کنیم
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
@foreach($query as $value)
<url>
<loc>{{ urldecode(url('category',$value->title)) }}</loc>
<lastmod>{{ $value->updated_at }}</lastmod>
<changefreq>always</changefreq>
<priority>1</priority>
</url>
@endforeach
</urlset>
و آخرین مرحله ساخت view پست های سایت با اسم post.blade.php می باشد که من به صورت ساده درستش کردم ولی شما بازهم می تونید به قسمت های کوچکتری تقسیم کنید
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
@foreach($query as $value)
<url>
<loc>
{{ urldecode(route('Post.show',$value->id)) }}
</loc>
<lastmod>{{ $value->updated_at }}</lastmod>
<changefreq>hourly</changefreq>
<priority>0.8</priority>
<image:image>
<image:loc>
{{ asset($value->PictureFirst->name) }}
</image:loc>
<image:caption>جاب تیم</image:caption>
<image:title>{{ $value->title }}</image:title>
</image:image>
</url>
@endforeach
</urlset>
برای دسترسی و مشاهده نمونه این سایت مپ به آدرس https://jobteam.ir/sitemap.xml مراجعه کنید.
این آموزش برای ساخت سایت مپ در لاراول بود این نوع سایت مپ کاملا برای گوگل استاندارد و خیلی سریع لود می شود امیدوارم این مطلب برای تمام دوستداران این فریم ورک مفید بوده باشد.