akiraz2/yii2-blog

为Yii2设计的简单、可配置的博客模块(文章、评论、嵌套分类、标签)。+ 前端,后端。+ SEO!(Opengraph,Schema.org)

安装次数: 4,088

依赖: 0

建议者: 0

安全: 0

星标: 91

关注者: 15

分支: 23

开放问题: 3

类型:yii2-extension

1.3.3 2021-01-22 09:50 UTC

This package is auto-updated.

Last update: 2024-09-11 05:10:07 UTC


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分支

目录

  1. 安装
  2. 配置
  3. 使用
  4. 待办事项
  5. 支持
  6. 贡献

安装

通过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

  1. 后端:http://backend.you-domain.com/blog(空视图)
  2. 前端: http://you-domain.com/blog

使用

覆盖视图

当您开始使用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.phpfrontend/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