epmdev/chatter

此软件包已被废弃,不再维护。未建议替代软件包。
此软件包最新版本(0.3.1)的许可证信息不可用。

为您的Laravel应用程序提供的简单论坛软件包 - 分支

0.3.1 2020-02-11 15:47 UTC

README

logo.png

Build Status Build Status Total Downloads Latest Stable Version License

Laravel论坛软件包 - Chatter

安装

快速笔记:如果是新项目,请确保安装Laravel提供的默认用户身份验证。 php artisan make:auth

  1. 将软件包包含到您的项目中

     composer require "epmdev/chatter=0.2.*"
    
  2. 将服务提供者添加到您的 config/app.php 提供者数组中

    如果您正在安装Laravel 5.5+,请跳过此步骤

     EpmDev\Chatter\ChatterServiceProvider::class,
    
  3. 通过运行以下命令发布供应商资产文件

     php artisan vendor:publish --provider="EpmDev\Chatter\ChatterServiceProvider"
    
  4. 现在我们已经将一些新文件发布到我们的应用程序中,我们需要使用以下命令重新加载它们

     composer dump-autoload
    
  5. 运行迁移

     php artisan migrate
    

    快速提示:请确保您已创建数据库并在您的 .env 文件中添加了数据库凭据。

  6. 最后,运行种子文件以在数据库中填充一些数据

     php artisan db:seed --class=ChatterTableSeeder
    
  7. 在您的 master.blade.php 文件中包含一个头部和尾部输出。在 master 或 app.blade.php 的头部添加以下内容

     @yield('css')
    

    然后,在 master 文件的 </body> 标签上方添加以下内容

     @yield('js')
    

现在,访问您的 site.com/forums,您应该会看到您的新论坛出现在您面前!

升级

请确保您的 composer.json 文件需要最新的 chatter 版本

"devdojo/chatter": "0.2.*"

然后您将运行

composer update

接下来,您可能希望重新发布 chatter 资产、chatter 配置和 chatter 迁移,运行以下命令

php artisan vendor:publish --tag=chatter_assets --force
php artisan vendor:publish --tag=chatter_config --force
php artisan vendor:publish --tag=chatter_migrations --force

接下来,为了确保您有最新的数据库模式,请运行

php artisan migrate

您将更新到最新版本 :)

Markdown编辑器

如果您打算使用Markdown编辑器而不是tinymce,您需要在 config/chatter.php 中进行更改

'editor' => 'simplemde',

为了正确显示帖子,您需要包含 Laravel 的 graham-campbell/markdown

composer require graham-campbell/markdown

Trumbowyg编辑器

如果您打算使用Trumbowyg作为首选编辑器,您需要在 config/chatter.php 中进行更改

'editor' => 'trumbowyg',

Trumbowyg需要包含jQuery >= 1.8。

视频

Chatter的介绍和安装

配置

当您发布供应商资产时,您在 config 文件夹中添加了一个新文件,该文件称为 config/chatter.php。此文件包含了一堆可用于配置论坛的配置项

自定义

自定义CSS

如果您想添加额外的样式更改,您可以在 master 文件头部的 @yield('css') 语句末尾添加另一个样式表。为了仅在用户访问您的论坛时加载此文件,您可以在以下 if 语句中包含您的样式表

@if(Request::is( Config::get('chatter.routes.home') ) || Request::is( Config::get('chatter.routes.home') . '/*' ))
    <!-- LINK TO YOUR CUSTOM STYLESHEET -->
    <link rel="stylesheet" href="/assets/css/forums.css" />
@endif

SEO友好的页面标题

由于论坛使用您的 master 布局文件,您需要包含必要的代码以显示您页面的SEO友好标题。以下代码需要添加到 master 文件的 <head>

@if( Request::is( Config::get('chatter.routes.home')) )
    <title>Title for your forum homepage -  Website Name</title>
@elseif( Request::is( Config::get('chatter.routes.home') . '/' . Config::get('chatter.routes.category') . '/*' ) && isset( $discussion ) )
    <title>{{ $discussion->category->name }} - Website Name</title>
@elseif( Request::is( Config::get('chatter.routes.home') . '/*' ) && isset($discussion->title))
    <title>{{ $discussion->title }} - Website Name</title>
@endif

覆盖视图

为了覆盖Chatter的内置视图,您只需在您的 vendor 视图文件夹中创建一个名为 chatter 的文件夹,例如 ROOT/resources/views/vendor/chatter。然后,只需放入您想覆盖的Chatter视图文件即可。

论坛的自定义功能钩子

有时您可能希望在用户创建新的讨论或添加新的回复时添加一些额外的功能。好吧,您可以在脚本中创建一些内置函数来访问此功能。

在用户添加新的讨论之前 在您的脚本中创建一个名为

function chatter_before_new_discussion($request, $validator){}

注意:每个webhook都会传递带有用户输入的$request对象。如果您想使用它,请随意。如果不使用,请放心,只需添加您的自定义功能。

在用户添加新的讨论之后 在您的脚本中创建一个名为

function chatter_after_new_discussion($request){}

在用户添加新的回复之前 在您的脚本中创建一个名为

function chatter_before_new_response($request, $validator){}

在用户添加新的回复之后 在您的脚本中创建一个名为

function chatter_after_new_response($request){}

Laravel 事件用于论坛

此包提供了一系列事件,允许您在用户动作发生时做出响应

事件可用属性描述
ChatterBeforeNewDiscussionIlluminate\Http\Request ($request), Illuminate\Validation\Validator ($validator)此事件在讨论经过验证和创建之前被触发
ChatterAfterNewDiscussionIlluminate\Http\Request ($request), Models::discussion() ($discussion), Models::post() ($post)此事件在讨论经过验证和创建之后被触发
ChatterBeforeNewResponseIlluminate\Http\Request ($request), Illuminate\Validation\Validator ($validator)此事件在回复经过验证和创建之前被触发
ChatterAfterNewResponseIlluminate\Http\Request ($request), Models::post() ($post)此事件在回复经过验证和创建之后被触发

监听事件

要为这些事件注册监听器,请参考Laravel注册事件和监听器文档。例如,要注册对“before new discussion”事件的监听器,请将以下内容添加到您的EventServiceProvider

protected $listen = [
    'EpmDev\Chatter\Events\ChatterBeforeNewDiscussion' => [
        'App\Listeners\HandleNewDiscussion',
    ],
];

其中App\Listeners\HandleNewDiscussion是您应用程序中的一个类,它在事件被触发时处理该事件。

您可以在监听器中使用以下方法访问触发事件的对象

    public function handle(ChatterAfterNewDiscussion $event)
    {
        // $event->discussion
        // $event->post
    }

    public function handle(ChatterAfterNewResponse $event)
    {
        // $event->post
    }

屏幕截图