Register legacy comment migrations through console configuration and Composer config-plugin metadata. Migration identities remain unchanged.
Сайт и SEO
Комментарии
Комментарии к публикациям.
Установка
Подключите пакет в корне проекта на SkeekS Платформе, затем примените миграции проекта.
composer require skeeks/cms-comments
Зависимости
- SkeekS CMS
skeeks/cms^6.0 || dev-master - yiidoc/yii2-timeago^2.0.0
Инструкция из репозитория
Comments
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist skeeks/cms-comments "*"
or add
"skeeks/cms-comments": "*"
- Run migrations
yii migrate --migrationPath=@skeeks/cms/comments/migrations/
How to use (simple)
Configuration
- In your config file
'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)
{
//...
}
]
]
- In you model [optional]
public function behaviors()
{
return [
'comments' => [
'class' => 'skeeks\cms\comments\behaviors\CommentsBehavior'
]
];
}
- Content element property update count comments
'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)
{
....
Usage
Widget namespace
use skeeks\cms\comments\widgets\CommentsWidget;Add comment widget in model view using (string) page key :
echo Comments::widget(['model' => $pageKey]);
- Or display comments using model name and id:
echo Comments::widget(['model' => 'post', 'model_id' => 1]);
- Or display comments using model behavior:
echo Post::findOne(10)->displayComments();
Module Options
Use this options to configurate comments module:
userModel- User model class name.maxNestedLevel- Maximum allowed nested level for comment's replies.onlyRegistered- Indicates whether not registered users can leave a comment.orderDirection- Comments order direction.nestedOrderDirection- Replies order direction.userAvatar- The field for displaying user avatars.Is this field is NULL default avatar image will be displayed. Also it can specify path to image or use callable type.
If this property is specified as a callback, it should have the following signature:
function ($user_id)
For dev
php yii lang/translate-app @skeeks/cms/comments/messages/ru/main.php @skeeks/cms/comments/messages/ main.php
SkeekS CMS (Yii2) — fast, simple, effective!
skeeks.com | cms.skeeks.com | marketplace.cms.skeeks.com
Поддержка
Вопросы по установке и работе решения можно задать командой SkeekS или завести обращение в репозитории.
