niolabs / chatter
适用于您的Laravel应用的简单论坛包
Requires
- luketowers/purifier: ~3.0
Requires (Dev)
- illuminate/cache: ~5.1.20|5.2.*|5.3.*
- illuminate/console: ~5.1.20|5.2.*|5.3.*
- mockery/mockery: ^0.9.5
- phpunit/phpunit: ~5.7.14
- dev-master
- 0.3.0
- 0.2.8
- 0.2.7
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2
- 0.1.24
- 0.1.23
- 0.1.22
- 0.1.21
- 0.1.20
- 0.1.19
- 0.1.18
- 0.1.17
- 0.1.16
- 0.1.15
- 0.1.14
- 0.1.13
- 0.1.12
- 0.1.11
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1
- dev-set-last-reply-on-create
- dev-release/0.3
- dev-develop
- dev-analysis-zOxVG4
This package is not auto-updated.
Last update: 2024-09-23 15:15:38 UTC
README
Laravel 论坛包 - Chatter
安装
快速提示:如果这是一个新项目,请确保安装Laravel提供的默认用户身份验证。 php artisan make:auth
-
将包包含到您的项目中
composer require "devdojo/chatter=0.2.*"
-
将服务提供者添加到您的
config/app.php
提供者数组中DevDojo\Chatter\ChatterServiceProvider::class,
-
通过运行来发布Vendor Assets文件
php artisan vendor:publish
-
现在我们已经将一些新文件发布到我们的应用程序中,我们需要通过以下命令重新加载它们
composer dump-autoload
-
运行迁移
php artisan migrate
快速提示:确保您已创建数据库并在您的
.env
文件中添加了数据库凭据。 -
最后,运行种子文件以将少量数据填充到数据库中
php artisan db:seed --class=ChatterTableSeeder
-
在您的 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',
为了正确显示帖子,您需要包含 graham-campbell/markdown
库以用于 Laravel
composer require graham-campbell/markdown
Trumbowyg 编辑器
如果您打算使用 Trumbowyg 作为首选编辑器,您需要在 config/chatter.php 中更改它
'editor' => 'trumbowyg',
Trumbowyg 需要 jQuery >= 1.8
视频
配置
当您发布了 vendor 资产时,您在 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 论坛事件
此包提供了一系列事件,允许您在用户行为发生时做出响应
监听事件
要注册这些事件的监听器,请遵循Laravel 注册事件和监听器的文档。例如,要注册“before new discussion”事件的监听器,请将以下内容添加到您的EventServiceProvider
protected $listen = [ 'DevDojo\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 }