Laravel 9 Создание и чтение Sitemap XML

Руководство по динамической XML-карте сайта Laravel 9. В этом руководстве мы поговорим о создании динамического файла sitemap.xml в приложении laravel. Но прежде чем мы начнем ломать лед, позвольте объяснить, что такое XML-карта сайта и насколько важно добавить XML-файл карты сайта в приложение laravel.

SEO и карты сайта

В общем, все мы слышали о SEO, и это не просто ключевое слово; скорее, это слово определяет популярность веб-приложений. SEO определяет рейтинг вашего сайта в поисковых системах.

Поэтому наша важнейшая задача — нарастить SEO сайта, чтобы он лучше ранжировался.

Есть несколько факторов, которые усиливают SEO сайта; добавление XML-файла карты сайта является одним из факторов, которые мы изучаем в этом руководстве.

Зачем нужен Sitemap Xml?

В конце концов, мы узнали, почему xml карта сайта имеет вес. Теперь давайте разберемся, что такое карты сайта?

Карта сайта в идеале представляет собой файл с расширением .xml, это простой файл, который содержит важные страницы веб-сайта и позволяет веб-мастеру информировать поисковые системы о том, какие страницы доступны для сканирования.

Этот файл карты сайта не ограничивается только laravel, независимо от того, какую технологию вы используете, но убедитесь, что вы должны сгенерировать и добавить XML-файл карты сайта для информирования поисковых систем.

Структура карты сайта

Вот логическая структура файла карты сайта, мы объясним по крупицам каждое свойство, используемое в следующем файле карты сайта.

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
      <loc>http://www.test.com/</loc>
      <lastmod>2021-03-05</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.8</priority>
   </url>
</urlset> 
  • Он начинается с открывающего тега относительно закрывающего тега.<urlset></urlset>
  • Свойство xmlns , используемое для определения префикса пространства имен внутри тега.<urlset>
  • XML-файл содержит запись URL-адреса для каждого URL-адреса, который необходимо добавить в файл Sitemap.
  • Свойство loc — это дочернее значение URL-адреса, которое содержит URL-адрес веб-страницы .
  • Атрибут lastmod — это дочерний элемент URL, который показывает , когда страница была изменена в последний раз.
  • Атрибуты changefreq и priority являются относительными дочерними значениями свойства url ; эти реквизиты сообщают поисковой системе о приоритете сканирования и частоте обновления.

Создание модели и миграции

Файлы модели и миграции определяют логическую структуру таблицы, которая находится в базе данных; не двигаясь, небо и земля исполняют данную команду.

В демонстрационных целях создайте таблицу блогов со значениями URL (URL веб-страницы) и описания, поместите следующий код в файл app/Models/Blog.php .

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Blog extends Model
{
    use HasFactory;
    
    protected $fillable = [
        'url', 
        'description'
    ];
}

Точно так же поместите те же значения в файл database/migration/create_blogs_table.php.

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateBlogsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('blogs', function (Blueprint $table) {
            $table->id();
            $table->string('url');
            $table->text('description');            
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('blogs');
    }
}

Теперь миграция готова к запуску, просто нажмите следующую команду в терминале и переместите новую таблицу в базу данных.

php artisan migrate

Добавление фиктивных данных

Затем добавьте тестовые данные в таблицу; это поможет создать URL-адрес или слаг для создания XML-карты сайта. Однако вы можете пропустить весь этот раздел, если у вас есть реальные данные для создания веб-страниц.

php artisan make:factory BlogFactory --model=Blog

Библиотека faker предлагает множество методов для создания тестовых данных; тем не менее, мы используем метод randomNumber() для генерации данных URL.

Поместите приведенный ниже код в файл database\factories\BlogFactory.php :

<?php
namespace Database\Factories;
use App\Models\Blog;
use Illuminate\Database\Eloquent\Factories\Factory;
class BlogFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = Blog::class;
    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'url' => $this->faker->randomNumber($nbDigits = NULL, $strict = false),
            'description' => $this->faker->text
        ];
    }
}

Когда все настроено, используйте команды tinker для заполнения данных в базе данных.

php artisan tinker
Blog::factory()->count(30)->create()

Сгенерируйте и настройте контроллер

Командная строка php artisan предлагает достаточно чистое и простое решение для создания контроллеров и другого важного файла. Сгенерируем новый контроллер предложенной командой.

php artisan make:controller SitemapXmlController

Функция index() получает данные блога и безукоризненно вставляет их в представление индекса; позже мы получим к нему доступ, чтобы прочитать XML-файл карты сайта. Поэтому обновите файл app/Http/Controllers/SitemapXmlController.php .

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Blog;
class SitemapXmlController extends Controller
{
    public function index() {
        $posts = Blog::all();
        return response()->view('index', [
            'posts' => $posts
        ])->header('Content-Type', 'text/xml');
      }
}

Регистрация маршрута

Затем перейдите к файлу route/web.php ; внутри здесь определите маршрут с помощью метода get; это помогает нам читать XML-файл карты сайта в браузере.

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\SitemapXmlController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
*/
Route::get('/sitemap.xml', [SitemapXmlController::class, 'index']);

Показать URL-адрес карты сайта в Laravel

В заключительном разделе этого подробного руководства мы объясним, как отобразить XML-файл карты сайта или прочитать XML-файл карты сайта в браузере с помощью блейд-файла laravel.

Обязательно создайте новый файл index.php в папке resources/Views/.

Сразу после этого добавьте указанный код в файл resources/views/index.blade.php .

<?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>{{ url('/') }}/page/{{ $post->url }}</loc>
            <lastmod>{{ $post->created_at->tz('UTC')->toAtomString() }}</lastmod>
            <changefreq>weekly</changefreq>
            <priority>0.8</priority>
        </url>
    @endforeach
</urlset>

Запуск приложения Laravel

Наконец, мы должны убить двух зайцев одним выстрелом, сначала запустите приложение laravel с помощью команды php artisan serve; во-вторых, просмотрите XML-файл карты сайта, используя приведенный ниже URL-адрес.

php artisan serve
http://127.0.0.1:8000/sitemap.xml

XML-карта сайта Laravel

Заключение

В этом прагматическом руководстве по XML-карте сайта laravel мы затронули важную концепцию, которая в первую очередь относится к SEO, и поняли, как создать файл XML-карты сайта в laravel.

Мало того, мы также научились читать карту сайта xml в представлении laravel, используя традиционный шаблон laravel MVC. Мы предполагаем, что вам понравилось это руководство, спасибо за прочтение.