어떻게 Laravel에서 수천 개의 기록을 포함하는 사이트를 위해 사이트 지도를 만듭니다.

17320 단어 laravelseophptutorial
Laravel에서 웹 사이트 지도를 만들고 싶다면, 작은 웹 사이트를 만드는 데 도움을 줄 소프트웨어 패키지가 몇 개 있습니다.그 중 하나는 유행하는 Spatie Sitemap package입니다. 사이트에 올라가라고 요구할 때, 당신의 전단에 연결된 페이지에 따라 사이트 지도를 구축합니다.
수백 개의 페이지만 있는 소형 사이트에 대해 이 소프트웨어 패키지들은 매우 유용할 것이니, 나는 네가 가서 보라고 건의한다.
수천 개의 페이지가 있는 대형 사이트에 대해 너는 그것들을 사용하고 싶지 않을 것이다.
저로서는 몇 달 전에 the Nursery People website에서 일했습니다. 저는 이 사이트를 위해 사이트 지도를 구축하여 구글과 다른 검색엔진이 사이트의 페이지를 더욱 쉽게 볼 수 있도록 도와주고 싶습니다.탁아소 인원 사이트는 30000여 개의 페이지가 있기 때문에 나는 사이트 지도 파충류가 효과적으로 일을 완성할 수 없다는 것을 곧 알게 되었다.
이것은 내가 a Laracast discussion에서 알 수 있듯이 대량의 기록을 가진 사이트를 위해 사이트 지도를 구축하는 가장 좋은 방법은 사이트 지도를 구축하는 것이다. 이 지도는 알파벳 순서의 기록에 따라 각종 집합으로 표시를 생성한다.
본고에서 저는 탁아소 직원들을 위한 사이트처럼 대형 사이트를 위한 사이트 지도를 구축하는 방법을 여러분과 공유하고자 합니다.

입문


우선, 실행 중인 Laravel 프로그램을 설정해야 합니다.이 강좌에서 코드를 따르고 싶으면 응용 프로그램에서 새 Laravel 8 application 를 만들었습니다.
이 예에 대해 나는post를 위해 간단한 모델, 컨트롤러와 이동을 구축했다.물론, 당신의 응용 프로그램에서 당신은 더 많은 모델을 가지고 있지만, 이 예에 대해 나는 간단하게 유지한다.
또한 can fork on Github를 사용했기 때문에 업데이트된 Laravel 8 SPA와 어떻게 사용하는지 보실 수 있습니다.이것은 필요 없습니다. 전통적인 Laravel 사용자 인터페이스로 구축할 수 있습니다.
포스트 작성 기능이나 Inertia Jetstream UI scaffolding 에 대한 자세한 내용은 설명하지 않겠습니다.너는 다른 문장에서 어떻게 이 점을 할 수 있는지 읽을 수 있다.

Jetstream 설정 사이트 맵 컨트롤러 만들기


응용 프로그램을 구축하면 사이트 지도에 루트를 구축하고자 합니다.
우리의 응용 프로그램에서 우리는 사이트를 위해 두 개의 컨트롤러를 생성할 것이다. 그러나 당신의 응용 프로그램에 대해 몇 개의 컨트롤러를 생성해야 할 수도 있다.
예를 들어, 포스트 모델에 PostSitemapController를 만들고 태그에 TagSitemapController를 만들고 싶을 수도 있습니다.

SitemapController 생성


터미널에서:
php artisan make:controller SitemapController

색인 라우팅 추가


라우팅/네트워크에 있습니다.php는 사이트 지도의 주요 입구점에 경로를 추가합니다.
//Sitemap Routes
Route::get('/sitemap.xml', [SitemapController::class, 'index'])->name('sitemap.index');
이것은 사이트의 다른 사이트 지도를 가리키는 링크를 포함하는 메인 사이트 지도가 될 것이다.
우리는 또한 우리의 사이트 지도를 명명해서 우리의blade 파일에서 쉽게 그것을 찾을 수 있다.

SitemapController에서 index 작성 () 방법


다음에 우리가 방금 웹에서 인용한 색인 방법을 만들어야 합니다.php 라우팅 파일입니다.
내 응용 프로그램의 경우 컨트롤러는 다음과 같습니다.
<?php

namespace App\Http\Controllers;

use App\Models\Post;
use Illuminate\Http\Request;

class SitemapController extends Controller
{
    public function index()
    {
        $post = Post::orderBy('updated_at', 'desc')->first();

        return response()->view('sitemap.index', [
            'post' => $post,
        ])->header('Content-Type', 'text/xml');
    }
}
당신이 주의할 수 있는 바와 같이, 우리는 이러한 방법의 최신 게시물을 얻고 있습니다.제가 이따가 이유를 알려드릴게요.
또한 "Content Type", "text/xml"이라는 제목의 칼날 보기를 되돌려줍니다.이것이 바로 우리가 응용 프로그램에 HTML 페이지가 아니라 XML 파일을 되돌려 주는 방식을 알려주는 것이다.

XML 블레이드 뷰 구성하기


/resources/views 디렉터리에 사이트 지도 폴더를 만들고 index라는 파일을 만듭니다.칼날php.
이 파일에 다음 내용을 추가합니다.너도 내가 여기 있는 색인 방법에서 얻은 $post를 어떻게 사용해서 우리의 사이트 지도가 지난번에 업데이트된 시간을 표시하는지 볼 수 있다.
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    @if($post != null)
        <sitemap>
            <loc>{{ route('sitemap.posts.index') }}</loc>
            <lastmod>{{ $post->updated_at->tz('UTC')->toAtomString() }}</lastmod>
        </sitemap>
    @endif
</sitemapindex>

이것은 다른 사이트 지도의 입구점이기 때문에 당신은 필요에 따라 다른 사이트 지도에 대한 링크를 추가할 수 있습니다.다음 단계에서 생성됩니다.
나의 간단한 예에서, 나는 단지 나의 게시물을 위해 사이트 지도 색인을 만들었다.
현재, 나의 사이트 지도는 방문/사이트 지도를 방문할 때 이렇게 보인다.xml 링크:

Post 사이트 맵 컨트롤러 만들기


터미널에서:
php artisan make:controller PostSitemapController
이것은 내가 게시물에 사용할 사이트 지도 컨트롤러다.

게시물 사이트 지도를 위한 노선 만들기


두 번째 노선을 노선/사이트에 추가하다.php 파일, 이 파일은blade 파일에 링크된 사이트 지도로 이동합니다.
//Sitemap Routes
Route::get('/sitemap.xml', [SitemapController::class, 'index'])->name('sitemap.index');
Route::get('/sitemap/posts.xml', [PostSitemapController::class, 'index'])->name('sitemap.posts.index');
우리는 링크를 위한 다른 루트와 이름을 추가했습니다.

PostSitemapController에 색인 방법 추가


이런 방법에서, 우리는 자모표의 자모 목록을 얻어야 한다.이렇게 하면 우리는 게시물의 자모에 따라 게시물을 위한 사이트 지도를 구축할 수 있다.이것은 소형 집합에 필수적인 것은 아니지만, 우리가 수천 개의 루트를 생성하고자 하는 상황에서 이것은 내용을 분리하는 좋은 방법이기 때문에 한계가 있다.
<?php

namespace App\Http\Controllers;

class PostSitemapController extends Controller
{
    public function index()
    {
        $alphas = range('a', 'z');

        return response()->view('sitemap.posts.index', [
            'alphas' => $alphas,
        ])->header('Content-Type', 'text/xml');
    }
}
우리는 알파벳 그룹을 칼날 보기로 되돌리고 있다.

만든 후 색인 블레이드 보기.


현재,/resources/views/sitemap 디렉터리에서 게시물에 다른 폴더를 만들고 인덱스를 추가합니다.칼날php 파일.
$alphas 변수를 사용하여 알파벳표의 모든 문자를 순환하고 사이트 지도를 생성합니다. 이 문자로 시작하는 댓글을 가리킵니다.
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    @foreach($alphas as $alpha)
        <sitemap>
            <loc>{{ route('sitemap.posts.show', $alpha) }}</loc>
        </sitemap>
    @endforeach
</sitemapindex>
루트 이름을 만들었기 때문에 $alpha 문자를 루트 매개 변수로 사용하기 쉽습니다.

최종 경로 및 컨트롤러 추가 방법


설탕의를 함유한다우리는 거의 완성했다.현재/sitemap/posts/{$letter}에 경로를 추가합니다.루트/웹의 xml입니다.php 파일.
//Sitemap Routes
Route::get('/sitemap.xml', [SitemapController::class, 'index'])->name('sitemap.index');
Route::get('/sitemap/posts.xml', [PostSitemapController::class, 'index'])->name('sitemap.posts.index');
Route::get('/sitemap/posts/{letter}.xml', [PostSitemapController::class, 'show'])->name('sitemap.posts.show');
여기서 show() 방법을 사용합니다. 이 방법은 URL의 알파벳에 따라 댓글을 표시합니다.

게시 사이트 맵 컨트롤러


<?php

namespace App\Http\Controllers;

use App\Models\Post;

class PostSitemapController extends Controller
{
    public function index()
    {
        $alphas = range('a', 'z');

        return response()->view('sitemap.posts.index', [
            'alphas' => $alphas,
        ])->header('Content-Type', 'text/xml');
    }

    public function show($letter){
        $posts = Post::where('title', 'LIKE', "$letter%")->get();

        return response()->view('sitemap.posts.show', [
            'posts' => $posts,
        ])->header('Content-Type', 'text/xml');
    }
}
여기서, 우리는 이 범위 내의 $posts를 우리의 보기로 되돌려줍니다.

showblade 보기를 만듭니다.


현재, 이 응용 프로그램을 만드는 데 필요한 최종 사이트 지도입니다.참고 자료/보기/사이트 지도/게시물에 새 파일을 만듭니다:show.칼날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>{{ route('posts.show', $post->id) }}</loc>
            <lastmod>{{ $post->updated_at->tz('UTC')->toAtomString() }}</lastmod>
            <changefreq>weekly</changefreq>
            <priority>0.6</priority>
        </url>
    @endforeach
</urlset>
이 페이지에서 우리는 모든 게시물 페이지를 훑어보고 게시물 페이지의 URL을 생성할 것입니다!

결론


좋습니다. 이것이 바로 수천 개의 기록이 있는 사이트를 위해 사용자 정의 사이트 지도를 만드는 방법입니다.필요에 따라 가능한 한 많은 사이트 지도/컨트롤러를 구축하고 모든 것이 메인 사이트 지도에서 연결되는지 확인하십시오.
당신이 이 점을 좋아하면 당신을 도울 수 있기를 바랍니다. 왜냐하면 당신은 당신의 다음 사이트를 구축하고 있기 때문입니다.

엑스트라


완성되면 구글 검색 컨트롤러에 가서 사이트 지도를 제출하면 구글이 그 존재를 알게 될 것이다.
나는 최초로 이 문장 을 발표했다.

좋은 웹페이지 즐겨찾기