akiraz2 / yii2-blog
为Yii2设计的简单、可配置的博客模块(文章、评论、嵌套分类、标签)。+ 前端,后端。+ SEO!(Opengraph,Schema.org)
README
Yii2超级博客是一个简单、配置好的yii2模块,具有前端和后端,从未维护的代码库funson86/yii2-blog克隆而来,完全重新组织和改进。
功能
- 带有图片横幅、SEO标签的博客文章、imperavi redactor 2小部件
- 带有图片横幅、SEO标签的博客分类(嵌套)
- 博客标签
- 博客评论(可以禁用),带有数学验证码(可以是标准的yii2-captcha或ReCaptcha2)
- 评论中的电子邮件被隐藏(
a*i*a*@bk.ru
) - 所有模型都有状态(不活跃、活跃、存档)
- 不活跃的评论将被截断(并删除标签)
- 还添加了语义化的OpenGraph(通过yii2组件dragonjet/yii2-opengraph),Schema.org
- 后端控制器可以通过你的自定义访问控制(角色或rbac)进行保护
- 前端和后端已翻译(i18n)
- 带有slug的URL规则(用于SEO)
注意:模块处于初始开发阶段。任何内容都可能随时更改。目前正在开发新版本v2.0,包含许多改进,并适用于yii2basic模板。@develop分支
目录
安装
通过composer安装此扩展是首选方式。
运行
php composer.phar require --prefer-dist akiraz2/yii2-blog "~1.3"
或添加
"akiraz2/yii2-blog": "~1.3"
到你的composer.json
文件的require部分。
** 注意 ** 如果你收到composer错误
它不符合你的最小稳定性
,请将你的composer设置更改为"minimum-stability": "dev",
配置
默认情况下,Imperavi-widget模块的所有图片都上传到目录 @frontend/web/img/blog/upload
。请确保手动创建此目录并设置适当的文件权限(chmod)。
将'bootstrap' => [\akiraz2\blog\Bootstrap::class],
添加到你的配置(common/config/main.php)
在common/config/main.php
中配置common模块
'modules' => [ 'blog' => [ 'class' => akiraz2\blog\Module::class, 'urlManager' => 'urlManager',// 'urlManager' by default, or maybe you can use own component urlManagerFrontend 'imgFilePath' => '@frontend/web/img/blog/', 'imgFileUrl' => '/img/blog/', 'userModel' => \common\models\User::class, 'userPK' => 'id', //default primary key for {{%user}} table 'userName' => 'username', //uses in view (may be field `username` or `email` or `login`) ], ],
在common/config/main.php
中配置URL重写(或分别在前端/后端应用程序中)
'timeZone' => 'Europe/Moscow', //time zone affect the formatter datetime format 'components' => [ 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ], 'formatter' => [ //for the showing of date datetime 'dateFormat' => 'yyyy-MM-dd', 'datetimeFormat' => 'yyyy-MM-dd HH:mm:ss', 'decimalSeparator' => '.', 'thousandSeparator' => ' ', 'currencyCode' => 'EUR', ], ],
在backend/config/main.php
中配置后端模块
'modules' => [ 'blog' => [ 'class' => 'akiraz2\blog\Module', 'controllerNamespace' => 'akiraz2\blog\controllers\backend', //'adminAccessControl' => 'common\components\AdminAccessControl', // null - by default ], ],
在frontend/config/main.php
中配置前端模块
//'defaultRoute' => 'blog', //set blog as default route 'modules' => [ 'blog' => [ 'class' => 'akiraz2\blog\Module', 'controllerNamespace' => 'akiraz2\blog\controllers\frontend', 'blogPostPageCount' => 6, 'blogCommentPageCount' => 10, //20 by default 'enableComments' => true, //false by default 'schemaOrg' => [ // empty array [] by default! 'publisher' => [ 'logo' => '/img/logo.png', 'logoWidth' => 191, 'logoHeight' => 74, 'name' => 'My Company', 'phone' => '+1 800 488 80 85', 'address' => 'City, street, house' ] ] ], ],
注意:Yii2-Blog模块使用模型
common\models\User
迁移
注意:模块使用具有PK
id
的表{{%user}}
(你可以使用自己的用户模型和表以及PK)在应用这些迁移之前,请确保你有这个表。
在配置模块后运行迁移
./yii migrate --migrationPath=@akiraz2/blog/migrations
或完整路径
./yii migrate --migrationPath=@vendor/akiraz2/yii2-blog/migrations
访问URL
使用
覆盖视图
当您开始使用Yii2-Blog时,您可能会发现需要覆盖模块提供的默认视图。尽管视图名称不可配置,但Yii2提供了一种使用主题覆盖视图的方法。要开始,您应该按照以下方式配置视图应用程序组件:
... 'components' => [ 'view' => [ 'theme' => [ 'pathMap' => [ '@akiraz2/yii2-blog/views/frontend/default' => '@app/views/blog' ], ], ], ], ...
在上面的pathMap
中,意味着@akiraz2/yii2-blog/views/frontend/default
中的每个视图将首先在@app/views/blog
下搜索,如果主题目录中存在视图,则将使用该视图而不是原始视图。
注意:只需将所有必要的视图从
@akiraz2/yii2-blog/views/frontend/default
复制到@app/views/blog
并更改即可!
用户模型
您可以使用自己的用户模型,但需要在config.php中进行配置。
例如,
'modules' => [ 'blog' => [ 'class' => akiraz2\blog\Module::class, 'userModel' => \common\models\User::class, 'userPK' => 'id', //default primary key for {{%user}} table 'userName' => 'username', //uses in view (may be field `username` or `email` or `login`) ], ],
Imperavi Redactor
如何更改Imperavi Redactor小部件的上传路径
Yii2 blog模块使用imperavi redactor 2模块 https://github.com/yiidoc/yii2-redactor,模块名称为"redactorBlog"。
注意:嵌入的模块
redactorBlog
使用自己的UploadController并具有访问控制!仅限于后端!仅当您未覆盖默认配置时。
如果您想更改默认配置,您应该手动添加redactor模块。
在backend/config/main.php中配置后端模块
'modules' => [ 'blog' => [ 'class' => 'akiraz2\blog\Module', 'controllerNamespace' => 'akiraz2\blog\controllers\backend', 'redactorModule' => 'redactor' // 'redactorBlog' - default, maybe you want use standard module 'redactor' with own config ], 'redactor' => [ 'class' => 'yii\redactor\RedactorModule', 'uploadDir' => '@frontend/web/img/upload/', 'uploadUrl' => $params['frontendHost'] . '/img/upload', 'imageAllowExtensions' => ['jpg', 'png', 'gif', 'svg'] ], ],
后端CustomAdminAccessControl
例如,使用dektrium/yii2-user
'modules' => [ 'blog' => [ 'class' => akiraz2\blog\Module::class, ... 'adminAccessControl' => 'common\components\AdminAccessControl', ... ], ],
创建文件common\components\AdminAccessControl.php
namespace common\components; use yii\filters\AccessControl; class AdminAccessControl extends AccessControl { public function init() { $this->rules[] =[ 'allow' => true, 'roles' => ['@'], 'matchCallback' => function () { return \Yii::$app->user->identity->getIsAdmin(); } ]; parent::init(); } }
Opengraph
请,将组件dragonjet/yii2-opengraph添加到您的项目中。
php composer.phar require --prefer-dist dragonjet/yii2-opengraph "dev-master"
配置common/config/main.php
或frontend/config/main.php
'components' => [ 'opengraph' => [ 'class' => 'dragonjet\opengraph\OpenGraph', ], //.... ],
如何更改评论中的验证码
尚未...如果您在我的yii2-blog项目中使用Recaptcha2,请向我提交PR!默认情况下,我们使用Math captcha
待办事项
- 重构代码(特别是BlogCategory,BlogTag)
- 创建小部件(用于后端和前端)
- 翻译成多种流行语言
- 创建多语言模型
- 更改前端博客的默认设计和样式
- 添加配置验证码
支持
如果您对Yii2-Blog有任何问题或遇到问题,可以直接使用以下电子邮件地址提问:akiraz@bk.ru
。
请翻译成您的语言!编辑配置(或复制到您的路径)@vendor/akiraz2/yii2-blog/src/messages/config.php
,添加您的语言并运行脚本
php ./yii message/extract @akiraz2/blog/messages/config.php
翻译文件将在@vendor/akiraz2/yii2-blog/src/messages/
或您配置的路径中
贡献
如果您想贡献,请分叉存储库并使用功能分支。Pull requests非常受欢迎。+PSR-2编码风格。我可以在2-3天内应用补丁,PR!如果不这样做,请写信给我 akiraz@bk.ru
许可
Yii2-Blog在MIT许可证下发布。有关详细信息,请参阅捆绑的LICENSE.md。