Search by

pickone / blog

treerful

A library of Blog System

v1.2.0 2026-10-28 07:20 UTC

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 的主要設定:

設定預設值用途
routeblog前台路由前綴
admin-routeadmin/blog後台路由前綴
themewebmagwebmag 或 default
admin-emails由環境變數讀入,未設定時有內建預設 Email管理員白名單,請自行設定
per-page12前台列表每頁文章數

目前部分畫面與重新導向仍寫死 /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,不需手動註冊。

使用方式

  1. 以白名單中的帳號登入專案,開啟 /admin/blog。
  2. 新增文章,填寫內容、縮圖、標籤與 SEO 欄位。
  3. 選擇發布狀態並儲存;可在文章設定頁管理相關文章。
  4. 開啟 /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。