ضعیفبد نیستمتوسطخوبعالی (2 votes, average: 5٫00 out of 5)
Loading...

ساختار یک سایت مپ حرفه ای XML با Laravel

سال های پیش موتورهای جستجو، برای کمک به نمایه سازی وبسایت “سایت مپ” را پیشنهاد میدادند، در حال حاضر اهمیت این موضوع قابل بحث است.

معتقدیم که ساخت و ثبت نمودن آن ضرر ندارد و زمان کمی را برای سر هم کردن صرف می شود و خواستیم با اشتراک گذاری به آسان بودن این موضوع در Laravel پی ببرید.

آموزش ساخت سایت مپ xml با لااراول

نقشه سایت چیست؟

اگر با یک نقسه سایت (Site Map) آشنا نیستید، گوگل آن را  اینگونه تعریف کرده است:

نقشه سایت فایلی است که شما می توانید صفحات وب سایت خود را فهرست کنید تا ساختار محتوای سایتتان را به گوگل و سایر موتورهای جستجو ارائه دهید. خزنده های وب موتور های جستجو برای خزیدن هوشمندانه در سایتتان فایل شما را همانند ربات گوگل میخوانند.

همچنین دلایل زیر در مورد اینکه چرا نیاز به سایت مپ دارید شرح داده اند:

  • سایت شما بسیار بزرگ است در نتیجه، احتمال دارد که خزنده های وب گوگل برخی از صفحات جدید یا تازه به روز شده شما را نبینند.
  • سایت شما دارای یک بایگانی بزرگ از صفحات محتوا است که جدا شده یا به خوبی با یکدیگر ارتباط ندارند. اگر صفحات سایت به طور طبیعی مرجع یکدیگر نیستند، شما می توانید آنها را در یک نقشه سایت فهرست کنید تا اطمینان حاصل کنید که گوگل برخی از صفحات شما را نادیده نگیرد.
  • سایت شما جدید است و تعداد لینک های خارجی آن کم می باشد. ربات گوگل و سایر خزنده های وب از طریق دنبال کردن لینک های موجود در یک صفحه وب، به وب های دیگر دست می یابند. در نتیجه، اگر هیچ سایت دیگری به  صفحات شما لینک نکند، ممکن است گوگل صفحات شما را کشف نکند.
  • سایت شما با استفاده از محتوای رسانه های غنی، در اخبار گوگل نمایش داده می شود، یا از حاشیه نویسی های سازگار با سایر نقشه های سایت استفاده می کند. در صورت لزوم ، گوگل برای جستجو می تواند اطلاعات بیشتری را که متناسب اند ،از نقشه های سایت بگیرد.
همچنین بخوانید:  ارسال و دریافت پیش نمایش پیام های Laravel با Nexmo

ممکن است سایت شما این خصوصیات را نداشته باشد، اما همانگونه که اشاره کردیم ارزش آن را دارد که صرفا برای حفظ امنیت باشد.

پروتکل نقشه سایت

در وب سایت رسمی سایت مپ کلیه اطلاعاتی را که شما برای ساختن نقشه سایت خود نیاز دارید را مشخص می کند. در اینجا بجای خواندن از طریق کل نمونه، نمونه اولیه با یک نشانی اینترنتی وارد شده است:

<?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>2005-01-01</lastmod>

      <changefreq>monthly</changefreq>

      <priority>0.8</priority>

   </url>

</urlset>

همانطور که می بینید، این فقط یک فایل XML با یک <url> منحصر به فرد برای هر یک از صفحات سایت شماست.

یک فایل تنها می تواند حدود 50،000 رکورد داشته باشد، اما شما قادر به تفکیک کردن آنها در فایل های متعدد و استفاده از یک فایل شاخص نسبت به سایرین است.

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

<?xml version=”1.0″ encoding=”UTF-8″?>

<sitemapindex xmlns=”http://www.sitemaps.org/schemas/sitemap/0.9″>

   <sitemap>

      <loc>http://www.example.com/sitemap1.xml.gz</loc>

      <lastmod>2004-10-01T18:23:17+00:00</lastmod>

   </sitemap>

   <sitemap>

      <loc>http://www.example.com/sitemap2.xml.gz</loc>

      <lastmod>2005-01-01</lastmod>

   </sitemap>

</sitemapindex>

در هر <loc> به فایلی که حاوی آیتم های <url> است اشاره می کند مانند مثال اول .

در این آموزش، من قصد دارم از سبک فهرست استفاده کنم ، زیرا من سوابق جداول مختلف را دارم. این به من اجازه می دهد بدون اینکه  نیاز به پردازش بیشتر داشته باشم ، لیستی از URL ها را در قالب صحیح سفارشی کنم.

ساخت یک تنظیم کننده سایت مپ

سایت مپ من دو بخش اصلی دارد، که شامل پست های وبلاگ، مقاله های وبلاگ و قسمت های پادکست می شود. هر کدام از اینها در پرونده خود قرار می گیرند و شاخص به آنها اشاره می کند.

همچنین بخوانید:  بوت استرپ تعبیه شده برای فریم ورک Laravel 5.5

برای شروع، ابتدا یک کنترلگر نقشه سایت جدید ایجاد می کنیم:

php artisan make:controller SitemapController

حال این فایل را باز کنید و یک  سایت مپ ایجاد می کنیم.

ایجاد فهرست نقشه سایت

یک متد شاخص جدید ایجاد کنید که XML مورد نیاز را تولید کند:

public function index()

{

  $post = Post::active()->orderBy(‘updated_at’, ‘desc’)->first();

  $podcast = Podcast::active()->orderBy(‘updated_at’, ‘desc’)->first();

  return response()->view(‘sitemap.index’, [

      ‘post’ => $post,

      ‘podcast’ => $podcast,

  ])->header(‘Content-Type’, ‘text/xml’);

}

 پست ها ونمایش پادکست ها برای تولید آخرین توکن زمانی اصلاح شده در نمای شاخص مورد نیازاست، به این دلیل که کاوشگرها در صورت اضافه کردن محتوای جدید از زمان آخرین نمایش، اطلاع می دهند.

همچنین اگر شما با این سبک بازگشت  آشنا نیستید، آنچه در حال انجام است بازگشت پاسخ شی ، با یک نمایش اختصاص داده شده و تنظیم هدر متن / xml است. اگر فقط نمایش () را برگردانید، هدر در دسترس نمی باشد، بنابراین از ابتدا شامل پاسخ می شود که به شما امکان دسترسی به آن را می دهد.

سپس نمایش شاخص نقشه سایت شبیه این خواهد بود:

<?php echo ‘<?xml version=”1.0″ encoding=”UTF-8″?>’; ?>

<sitemapindex xmlns=”http://www.sitemaps.org/schemas/sitemap/0.9″>

    <sitemap>

        <loc>https://laravel-news.com/sitemap/posts</loc>

        <lastmod>{{ $post->publishes_at->tz(‘UTC’)->toAtomString() }}</lastmod>

    </sitemap>

    <sitemap>

        <loc>https://laravel-news.com/sitemap/categories</loc>

        <lastmod>{{ $post->publishes_at->tz(‘UTC’)->toAtomString() }}</lastmod>

    </sitemap>

    <sitemap>

        <loc>https://laravel-news.com/sitemap/podcasts</loc>

        <lastmod>{{ $podcast->publishes_at->tz(‘UTC’)->toAtomString() }}</lastmod>

    </sitemap

</sitemapindex>

برای این دیدگاه، من فقط علامت انتشارات سفارشی را در برچسب زمان به دست می آورم و از کربن برای تنظیم منطقه زمانی به UTC استفاده می کنم و در نهایت با استفاده از کلاینت رشته کربن اتم، به درستی آن را فرمت می کنم.

ایجاد فایل URL نقشه سایت

گام بعدی ایجاد هر فایل URL است. کنترل کننده سه روش جدید به دست می آورد و همه آنها بسیار مشابه هستند. به عنوان مثال:

همچنین بخوانید:  روش های جدید مسیریابی معرفی شده در  5.5 Larave

public function posts()

{

    $posts = Post::active()->where(‘category_id’, ‘!=’, 21)->get();

    return response()->view(‘sitemap.posts’, [

        ‘posts’ => $posts,

    ])->header(‘Content-Type’, ‘text/xml’);

}

public function categories()

{

    $categories = Category::all();

    return response()->view(‘sitemap.categories’, [

        ‘categories’ => $categories,

    ])->header(‘Content-Type’, ‘text/xml’);

}

public function podcasts()

{

    $podcast = Podcast::active()->orderBy(‘updated_at’, ‘desc’)->get();

    return response()->view(‘sitemap.podcasts’, [

        ‘podcasts’ => $podcast,

    ])->header(‘Content-Type’, ‘text/xml’);

}

حال این تنظیمات اجرا می شود، این مثالی از نمایش فایل مشاهده نقشه سایت است. پست ها:

<?php echo ‘<?xml version=”1.0″ encoding=”UTF-8″?>’; ?>

<urlset xmlns=”http://www.sitemaps.org/schemas/sitemap/0.9″>

    @foreach ($posts as $post)

        <url>

            <loc>https://laravel-news.com/{{ $post->uri }}</loc>

            <lastmod>{{ $post->publishes_at->tz(‘UTC’)->toAtomString() }}</lastmod>

            <changefreq>weekly</changefreq>

            <priority>0.6</priority>

        </url>

    @endforeach

</urlset>

با این که در محل و برای هر کدام از بخش های خود تکرار می شود، باید آن را به عنوان مسیرهای خود اضافه کنید. در اینجا چگونگی راه اندازی من را ببینید:

Route::get(‘/sitemap’, ‘SitemapController@index’);

Route::get(‘/sitemap/posts’, ‘SitemapController@posts’);

Route::get(‘/sitemap/categories’, ‘SitemapController@categories’);

Route::get(‘/sitemap/podcasts’, ‘SitemapController@podcasts’);

ممكن است شما متوجه شده باشید كه من از فرمت فایل XML استفاده نمی كنم و نیازی به استفاده از آن نیز نیست. با این حال، اگر می خواهید از آن استفاده کنید، می توانید پسوند را به مسیر اضافه کنید:

Route::get(‘/sitemap.xml’, ‘SitemapController@index’);

سپس فقط نمایش ها را در مکان مناسب تنظیم کنید.

جمع بندی

امیدواریم بتوانیم  ببینیم که نقشه سایت خودتان ارا ایجاد کرده اید،که  این اتفاق از طریق Laravel  کار مشکلی نیست، به ویژه هنگامی که ساختار سایت شما ساده است. اگر می خواهید این فرآیند را بطور کامل به صورت اتوماتیک انجام دهید،  این امکان وجود دارد و ممکن است باعث صرفه جویی در زمان در هنگام استفاده از آن شود.

اگر می خواهید بیشتر پیش بروید، می توانید نقشه های تصویری و ویدئویی را نیز ایجاد کنید، همچنین می توانید شیوه XSL خودتان را ایجاد کنید.

مطلب پیشنهادی

امکانات جدید لاراول 5.5

روش های جدید مسیریابی معرفی شده در  5.5 Larave

به نام خدا Laravel 5.5 دو کلید میانبر مناسب را به کلاس Laravel Router  اضافه کرده …

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *