1. Запускаем миграцию: php yii migrate --migrationPath=common/modules/comment/migrations 2. Добавляем модуль в конфиг модуль: 'modules' => [ ... 'artbox-comment' => [ 'class' => 'common\modules\comment\Module', ], ], 3. Добавляем в конфиг переводы: 'i18n' => [ 'translations' => [ ... 'artbox-comment' => [ 'class' => 'yii\i18n\PhpMessageSource', 'basePath' => '@common/modules/comment/messages', ], ], ], 4. Для управления добавляем в конфиги админки карту контроллера: 'controllerMap' => [ ... 'artbox-comments' => [ 'class' => 'common\modules\comment\controllers\ManageController', 'viewPath' => '@common/modules/comment/views/manage', ], ], 5. В конфиге админке поменять пользователя на покупателя: 'modules' => [ ... 'artbox-comment' => [ 'class' => 'common\modules\comment\Module', 'userIdentityClass' => 'common\models\Customer', ], ], 6. Вывод виджета: echo CommentWidget::widget([ 'model' => $product, ]); 7. Добавляем в нужную модель методы: public function getComments() { return $this->hasMany(CommentModel::className(), ['entity_id' => 'product_id'])->where(['artbox_comment.entity' => self::className(), 'artbox_comment.status' => CommentModel::STATUS_ACTIVE, 'artbox_comment.artbox_comment_pid' => NULL]); } /** Не обязательно для рейтинга PG ONLY **/ public function recalculateRating() { $average = $this->getComments()->joinWith('rating')->select(['average' => 'avg(artbox_comment_rating.value)::float'])->scalar(); if(!$average) { $average = 0; } $averageRating = $this->averageRating; if(!empty($averageRating)) { $averageRating->value = $average; } else { $averageRating = new ProductToRating(['product_id' => $this->product_id, 'value' => $average]); // Заменить модель } if($averageRating->save()) { return true; } else { return false; } } public function getAverageRating() { return $this->hasOne(ProductToRating::className(), ['product_id' => 'product_id']); // Заменить модель }