pickone / blog
A library of Blog System
Requires
- guzzlehttp/guzzle: ^6.5|^7.0
- illuminate/support: ^5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0|^13.0
- intervention/image: ^2.7
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-28 07:36:26 UTC
README
pickone/blog 是嵌入 Laravel 專案的部落格套件,提供文章前台與管理後台,使用專案自己的資料庫儲存內容,並沿用專案的登入系統。
功能
- 文章新增與編輯,使用 TinyMCE 編輯 HTML 內容。
- 草稿、立即發布、排程發布及隱藏文章。
- 文章標籤、相關文章、縮圖及 SEO 描述/關鍵字。
- 前台文章列表、分頁與閱讀頁面,提供
webmag、default主題。 - 以登入使用者的 Email 白名單限制後台存取。
- 圖片上傳至 Imgur;前台閱讀頁面整合 Disqus 留言。
相容性
v1.2.0 支援 Laravel 11、12、13。
安裝
若套件未在你的 Composer 套件來源中提供,先在專案的 composer.json 加入原始碼倉庫(請使用你實際可存取的倉庫網址):
{
"repositories": [
{
"type": "vcs",
"url": "https://bitbucket.org/pickone/laravel-blog.git"
}
]
}
安裝套件:
composer require pickone/blog
套件透過 Laravel Package Discovery 載入 Service Provider。發布設定、畫面與靜態資源,再建立資料表:
php artisan vendor:publish --provider="Pickone\Blog\BlogServiceProvider"
php artisan migrate
發布內容包含:
| 路徑 | 用途 |
|---|---|
config/blog.php | 套件設定 |
resources/views/vendor/pickone | 可客製的 Blade 畫面 |
public/vendor/pickone | 編輯器、JavaScript、CSS 與字型 |
更新套件後請比對已發布檔案;既有客製畫面會優先於套件內的畫面。
Migration 會建立 pickone_blog_posts、pickone_blog_tags、pickone_blog_post_tag、pickone_blog_related_post 四張資料表。
設定
在專案 .env 設定管理員與主題:
BLOG_ADMIN_EMAILS=admin@example.com,editor@example.com
BLOG_THEME=webmag
DISQUS_SHORTNAME=your-disqus-shortname
管理員 Email 使用逗號分隔,勿在逗號前後加入空白。請明確設定自己的白名單;專案需先有可用的 Laravel 登入流程及 auth guard。
DISQUS_SHORTNAME 用於 Disqus 留言;使用留言功能前需設定自己的 Disqus 站台。
config/blog.php 的主要設定:
| 設定 | 預設值 | 用途 |
|---|---|---|
route | blog | 前台路由前綴 |
admin-route | admin/blog | 後台路由前綴 |
theme | webmag | webmag 或 default |
admin-emails | 由環境變數讀入,未設定時有內建預設 Email | 管理員白名單,請自行設定 |
per-page | 12 | 前台列表每頁文章數 |
目前部分畫面與重新導向仍寫死 /blog 或 /admin/blog。若修改路由前綴,也需同步調整這些連結。
Middleware 版本差異
v1.2.0 以前的版本,需要在專案 app/Http/Kernel.php 的 $routeMiddleware 或 $middlewareAliases(依專案結構)註冊:
'blog.admin' => \Pickone\Blog\Http\Middleware\AdminMiddleware::class,
自 v1.2.0 起,套件由 Service Provider 自動註冊 blog.admin,不需手動註冊。
使用方式
- 以白名單中的帳號登入專案,開啟
/admin/blog。 - 新增文章,填寫內容、縮圖、標籤與 SEO 欄位。
- 選擇發布狀態並儲存;可在文章設定頁管理相關文章。
- 開啟
/blog查看公開文章,文章閱讀網址為/blog/view/{id}。
| 狀態 | 公開條件 |
|---|---|
| 草稿 | 未設定發布時間時不公開;設定時間後,超過該時間才公開 |
| 已發布 | 立即公開 |
| 隱藏 | 不公開 |
排程發布在讀取文章時判斷,不需額外啟動 Scheduler 或 Queue。發布時間應配合專案的時區設定。
自 v1.1.1 起,僅允許已登入的白名單管理員使用 /blog/view/{id}?preview=1 預覽草稿。
圖片上傳需可連線至 Imgur,縮圖處理預設使用 PHP GD 擴充。目前 Imgur Client ID 寫在 Controller 中,尚未提供設定欄位;替換上傳服務需修改實作。
在程式中讀取文章
$blog = app('blog');
$posts = $blog->getPosts(); // 全部文章,依建立時間倒序
$publishedPosts = $blog->getPublishedPosts(); // 公開文章,包含已到期的排程草稿
$post = \Pickone\Blog\Post::findOrFail($id);
$tags = $post->tags;
$relatedPosts = $post->relatedPosts;
上述兩個列表方法均回傳 Collection,會先載入全部文章,並非資料庫分頁查詢。
需要其他詳情資訊請見 docs。