首頁 > php框架 > Laravel > 主體

關於 laravel 分頁 seo淺談

藏色散人
發布: 2020-04-14 13:38:05
轉載
3585 人瀏覽過

laravel 的分頁是非常簡單易用的,但是有一點不是非常理想,

預設的分頁產生的連結是

users?page=1
登入後複製

這種形式對seo不是非常友善(理論上)

那麼我們可能就需要像

users/page/1
登入後複製

這種形式的分頁連結

那麼怎麼做呢?

我現在有兩種方式實現的方式

第一種是我之前專案中採用的,直接上正規

直接在blade中進行正規則替換

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

此正則應該有最佳化的空間,還望不吝賜教。

當然對應的路由也要對應的配置,很簡單,就不展開了。

這種方法效果是實現了,但是真的很沒有laravel的風格啊

laravel的風格是什麼? composer , package啊

所以來介紹第二種方法

laravel-paginateroute
登入後複製

使用方法非常簡單,以下摘自readme

##第一步 #

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

第二步

註冊,

// config/app.php
'providers' => [
    ...
    'Spatie\PaginateRoute\PaginateRouteServiceProvider',
];
'aliases' => [
    ...
    'PaginateRoute' => 'Spatie\PaginateRoute\PaginateRouteFacade',
];
登入後複製

第三步

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

使用

在路由中

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

這樣會產生兩條路由

/users
/users/page/{page}
登入後複製

然後在controller中正常按照laravel的分頁寫就可以

#在頁面中這樣使用,這個是simplePaginate的對應寫法

@if(PaginateRoute::hasPreviousPage())
  <a href="{{ PaginateRoute::previousPageUrl() }}">Previous</a>
@endif
@if(PaginateRoute::hasNextPage($users))
  <a href="{{ PaginateRoute::nextPageUrl($users) }}">Next</a>
@endif
登入後複製
推薦:《

laravel教學

以上是關於 laravel 分頁 seo淺談的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板