ホームページ  >  記事  >  PHPフレームワーク  >  LaravelページングSEOについての簡単な話

LaravelページングSEOについての簡単な話

藏色散人
藏色散人転載
2020-04-14 13:38:053502ブラウズ

Laravel のページングは​​非常にシンプルで使いやすいですが、あまり理想的ではないことが 1 つあります。

デフォルトのページングによって生成されるリンクは

users?page=1

このフォームはあまり適切ではありませんSEO に優しい (理論) 上記)

次に、

users/page/1

の形式でページング リンクが必要になる場合があります。それでは、どうすればよいでしょうか?

これを実装するには 2 つの方法があります。

最初の方法は、前のプロジェクトで使用した、直接正規化です。

ブレード内で直接正規化するための余地があるはずです。

{!! preg_replace("~(/?)\?page=~", '/page/', $users->render()) !!}

を置き換える際の最適化。アドバイスをいただければ幸いです。

もちろん、対応するルーティングもそれに応じて設定する必要がありますが、非常に簡単なので、拡張しません。

このメソッドの効果は得られますが、実際には laravel のスタイルがありません。

laravel のスタイルとは何ですか?コンポーザー、パッケージ

それでは 2 番目の方法を紹介しましょう

laravel-paginateroute

使用方法は非常に簡単です。以下は Readme からの抜粋です。

最初のステップ

// 要注意对应版本,可到https://packagist.org 方便查看
composer require spatie/laravel-paginateroute

2 番目のステップ

登録、

// config/app.php
'providers' => [
    ...
    'Spatie\PaginateRoute\PaginateRouteServiceProvider',
];
'aliases' => [
    ...
    'PaginateRoute' => 'Spatie\PaginateRoute\PaginateRouteFacade',
];

3 番目のステップ

// app/Providers/RouteServiceProvider.php
use PaginateRoute;
// ...
public function boot(Router $router)
{
    PaginateRoute::registerMacros();
    parent::boot($router);
}

Use

ルーティングで

// app/Http/routes.php
// Generates /users & /users/page/{page}
Route::paginate('users', 'UsersController@index');

これにより2つのルートが生成されます

/users
/users/page/{page}

その後、コントローラー内で、laravelのページングに従って通常のように書くことができます

ページ内でこのように使用されます。これは、simplePaginate

@if(PaginateRoute::hasPreviousPage())
  <a href="{{ PaginateRoute::previousPageUrl() }}">Previous</a>
@endif
@if(PaginateRoute::hasNextPage($users))
  <a href="{{ PaginateRoute::nextPageUrl($users) }}">Next</a>
@endif

の対応する記述メソッドです。推奨: "laraveltutorial"

以上がLaravelページングSEOについての簡単な話の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。