skeeks / cms-comments
评论组件
1.2.1.4
2019-09-16 11:25 UTC
Requires
- skeeks/cms: ^5.0 || dev-master
- yiidoc/yii2-timeago: ^2.0.0
README
安装
安装此扩展的首选方式是通过 composer.
运行以下命令之一
php composer.phar require --prefer-dist skeeks/cms-comments "*"
或添加
"skeeks/cms-comments": "*"
- 运行迁移
yii migrate --migrationPath=@skeeks/cms/comments/migrations/
如何使用(简单)
配置
- 在你的配置文件中
'bootstrap' => ['comments'], 'components' => [ 'i18n' => [ 'translations' => [ 'skeeks/comments' => [ 'class' => 'yii\i18n\PhpMessageSource', 'basePath' => '@skeeks/cms/comments/messages', 'fileMap' => [ 'skeeks/comments' => 'main.php', ], ] ], ], ], 'modules' => [ 'comments' => [ 'class' => 'skeeks\cms\comments\CommentsModule', //'maxNestedLevel' => 5 //'onlyRegistered' => false //'orderDirection' => SORT_DESC //'nestedOrderDirection' => SORT_ASC //'displayAvatar' => true //'commentsPerPage' => 5, 'on commentAdded' => function(\skeeks\cms\comments\events\CommentEvent $e) { /** * @var $comment \skeeks\cms\comments\models\CmsComment */ $comment = $e->comment; $comment->user; $comment->model; $comment->model_id; }, 'on commentDeleted' => function(\skeeks\cms\comments\events\CommentEvent $e) { //... } ] ]
- 在你的模型中 [可选]
public function behaviors() { return [ 'comments' => [ 'class' => 'skeeks\cms\comments\behaviors\CommentsBehavior' ] ]; }
- 内容元素属性更新评论计数
'on commentAdded' => function(\skeeks\cms\comments\events\CommentEvent $e) { /** * @var $comment \skeeks\cms\comments\models\CmsComment * @var $user \common\models\User * @var $element \skeeks\cms\models\CmsContentElement */ $comment = $e->comment; $user = $comment->user; /*$user->appUser->total_comments = $user->appUser->total_comments + 1; if (!$user->appUser->save()) { \Yii::error("Not update user total comments: {$user->id}", 'project'); }*/ \Yii::error(\skeeks\cms\models\CmsContentElement::tableName(), 'project'); \Yii::error(\yii\helpers\Json::encode($comment->toArray()), 'project'); if ($comment->model == \skeeks\cms\models\CmsContentElement::tableName()) { $element = \skeeks\cms\models\CmsContentElement::findOne($comment->model_id); if ($element && $element->relatedPropertiesModel->hasAttribute('comments')) { $totalComments = \skeeks\cms\comments\models\CmsComment::find()->where([ 'model_id' => $element->id, ])->andWhere(['model' => \skeeks\cms\models\CmsContentElement::tableName()])->count(); $element->relatedPropertiesModel->setAttribute('comments', $totalComments); //$element->relatedPropertiesModel->setAttribute('comments', ((int) $element->relatedPropertiesModel->getAttribute('comments') + 1)); if (!$element->relatedPropertiesModel->save()) { \Yii::error("Not update element total comments: {$element->id}", 'project'); } } else { \Yii::error("Element not found or not have property comments: {$element->id}", 'project'); } } }, 'on commentDeleted' => function(\skeeks\cms\comments\events\CommentEvent $e) { ....
用法
- 小部件命名空间
use skeeks\cms\comments\widgets\CommentsWidget;
- 使用(字符串)页面键在模型视图中添加评论小部件
echo Comments::widget(['model' => $pageKey]);
- 或使用模型名称和ID显示评论
echo Comments::widget(['model' => 'post', 'model_id' => 1]);
- 或使用模型行为显示评论
echo Post::findOne(10)->displayComments();
模块选项
使用此选项来配置评论模块
-
userModel
- 用户模型类名。 -
maxNestedLevel
- 允许的最大嵌套级别。 -
onlyRegistered
- 指示未注册用户是否可以发表评论。 -
orderDirection
- 评论排序方向。 -
nestedOrderDirection
- 回复排序方向。 -
userAvatar
- 显示用户头像的字段。如果此字段为NULL,则默认显示头像图像。还可以指定路径或使用可调用类型。
如果此属性指定为回调,则它应具有以下签名:
function ($user_id)
开发者
php yii lang/translate-app @skeeks/cms/comments/messages/ru/main.php @skeeks/cms/comments/messages/ main.php
SkeekS CMS (Yii2) — 快速,简单,高效!
skeeks.com | cms.skeeks.com | marketplace.cms.skeeks.com