FastComments.com

Add Comments to Your Laravel App


这是 FastComments 的官方 Laravel 包。

为您的 Laravel 应用添加实时评论、聊天等功能。

仓库

在 GitHub 上查看


要求 Internal Link


  • PHP 8.1+
  • Laravel 10, 11, 或 12

安装 Internal Link

composer require fastcomments/laravel

发布配置文件:

php artisan vendor:publish --tag=fastcomments-config

将凭据添加到 .env

FASTCOMMENTS_TENANT_ID=your-tenant-id
FASTCOMMENTS_API_KEY=your-api-key

对于欧盟区域:

FASTCOMMENTS_REGION=eu

Blade 组件 Internal Link


评论小部件

<x-fastcomments />

{{-- With options --}}
<x-fastcomments
    url-id="my-page-id"
    url="https://example.com/my-page"
    locale="en_us"
    :has-dark-background="true"
    default-sort-direction="MR"
/>

实时聊天

<x-fastcomments-live-chat url-id="chat-room-1" />

评论计数

<x-fastcomments-comment-count url-id="my-page-id" />
<x-fastcomments-comment-count url-id="my-page-id" :number-only="true" />

单点登录 Internal Link


在你的 .env 中启用 SSO:

FASTCOMMENTS_API_KEY=your-api-key
FASTCOMMENTS_SSO_ENABLED=true
FASTCOMMENTS_SSO_MODE=secure

API 密钥是 secure SSO 所必需的 —— 它用于对 SSO 有效负载进行签名。

基于配置的映射

config/fastcomments.php 中,将 FastComments 字段映射到你的 User 模型属性:

'sso' => [
    'enabled' => true,
    'mode' => 'secure',
    'user_map' => [
        'id' => 'id',
        'email' => 'email',
        'username' => 'name',
        'avatar' => 'profile.avatar_url', // 支持点表示法
    ],
    'is_admin' => fn ($user) => $user->hasRole('admin'),
    'is_moderator' => fn ($user) => $user->hasRole('moderator'),
],

基于接口的映射

若需更精细的控制,在你的 User 模型上实现 MapsToFastCommentsUser 接口:

use FastComments\Laravel\SSO\Contracts\MapsToFastCommentsUser;

class User extends Authenticatable implements MapsToFastCommentsUser
{
    public function toFastCommentsUserData(): array
    {
        return [
            'id' => (string) $this->id,
            'email' => $this->email,
            'username' => $this->display_name,
            'avatar' => $this->avatar_url,
            'is_admin' => $this->hasRole('admin'),
        ];
    }
}

当实现该接口时,它会优先于基于配置的映射。

Blade 中的 SSO

当启用 SSO 时,<x-fastcomments /> 组件会自动为已认证用户注入 SSO 数据。

API 访问 Internal Link

通过 Facade

use FastComments\Laravel\Facades\FastComments;

// 管理 API (需要 API 密钥)
$comments = FastComments::admin()->getComments('tenant-id');

// 公共 API
$comments = FastComments::publicApi()->getCommentsPublic('tenant-id', 'url-id');

// 单点登录 (SSO)
$ssoPayload = FastComments::sso()->forWidget();
$token = FastComments::sso()->tokenFor($user);

通过依赖注入

use FastComments\Laravel\FastCommentsManager;

class CommentController extends Controller
{
    public function index(FastCommentsManager $fc)
    {
        $comments = $fc->admin()->getComments($fc->tenantId());
        // ...
    }
}

直接访问 SDK

use FastComments\Client\Api\DefaultApi;

class CommentController extends Controller
{
    public function index(DefaultApi $api)
    {
        $comments = $api->getComments('tenant-id');
        // ...
    }
}

配置参考 Internal Link


环境变量 默认值 描述
tenant_id FASTCOMMENTS_TENANT_ID '' 您的 FastComments 租户 ID
api_key FASTCOMMENTS_API_KEY '' 用于服务器端调用的 API 密钥
region FASTCOMMENTS_REGION null null (US) 或 'eu'
sso.enabled FASTCOMMENTS_SSO_ENABLED false 启用 SSO
sso.mode FASTCOMMENTS_SSO_MODE 'secure' 'secure''simple'
sso.login_url FASTCOMMENTS_SSO_LOGIN_URL null 登录 URL (回退到 Laravel 路由)
sso.logout_url FASTCOMMENTS_SSO_LOGOUT_URL null 登出 URL (回退到 Laravel 路由)
widget_defaults [] 默认 widget 配置选项
---

自定义视图 Internal Link

要自定义 Blade 模板:

php artisan vendor:publish --tag=fastcomments-views

模板将发布到 resources/views/vendor/fastcomments/

需要帮助?

如果您在使用 Laravel 包时遇到任何问题或有疑问,请:

贡献

欢迎贡献!请访问 GitHub 仓库 查看贡献指南。