定制 akiraz2/yii2-blog 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

akiraz2/yii2-blog

Composer 安装命令:

composer require akiraz2/yii2-blog

包简介

Simple, configurable blog module for Yii2 (post, comment, nested category, tags). + frontend, backend. + SEO! (Opengraph, Schema.org)

README 文档

README

Yii2 Super Blog is simple, configured yii2 Module with frontend and backend, cloned from unmaintained repo funson86/yii2-blog, fully reorganized and improved.

Features:

  • Blog Post with image banner, seo tags, imperavi redactor 2 widget
  • Blog Category (nested) with image banner, seo tags
  • Blog Tags
  • Blog Comment (can be disabled), with Math captcha (can be standard yii2-captcha OR ReCaptcha2)
  • email in comments are masked (a*i*a*@bk.ru)
  • all models has Status (Inactive, Active, Archive)
  • Inactive comments are truncated (and strip tags)
  • also added semantic OpenGraph (via yii2 component dragonjet/yii2-opengraph), Schema.org
  • backendControllers can be protected by your CustomAccessControl (roles or rbac)
  • frontend and backend are translated (i18n)
  • url rules with slug (for seo)

NOTE: Module is in initial development. Anything may change at any time. Currently develop new version v2.0 with many improvements and for yii2basic template. @develop branch

Table of Contents

  1. Installation
  2. Configuration
  3. Usage
  4. TODO
  5. Support
  6. Contributing

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist akiraz2/yii2-blog "~1.3"

or add

"akiraz2/yii2-blog": "~1.3"

to the require section of your composer.json file.

** Note ** If you got composer Error it does not match your minimum-stability, please change your composer settings to "minimum-stability": "dev",

Configuration

By default, all images from Imperavi-widget module are uploaded to dir @frontend/web/img/blog/upload. Be sure, this directory is created manually with proper file permissions (chmod).

Add 'bootstrap' => [\akiraz2\blog\Bootstrap::class], to your config (common/config/main.php)

Config common modules in common/config/main.php

    '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`)
        ],
     ],    

Config url rewrite in common/config/main.php (or separately frontend/backend apps)

    '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',
        ],
    ],

Config backend modules in backend/config/main.php

    'modules' => [
        'blog' => [
            'class' => 'akiraz2\blog\Module',
            'controllerNamespace' => 'akiraz2\blog\controllers\backend',
            //'adminAccessControl' => 'common\components\AdminAccessControl', // null - by default 
        ],
    ],

Config frontend modules in 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'
                ]
            ]
        ],
    ],

NOTE: Module Yii2-Blog use model common\models\User

Migration

NOTE: Module uses table {{%user}} with PK id (You can use own user model with table and PK) Make sure you have table before applying these migrations.

Migration run after config module

./yii migrate --migrationPath=@akiraz2/blog/migrations

or full path:

./yii migrate --migrationPath=@vendor/akiraz2/yii2-blog/migrations

Access Url

  1. backend : http://backend.you-domain.com/blog (Empty view)
  2. frontend : http://you-domain.com/blog

Usage

Overriding views

When you start using Yii2-blog you will probably find that you need to override the default views provided by the module. Although view names are not configurable, Yii2 provides a way to override views using themes. To get started you should configure your view application component as follows:

...
'components' => [
    'view' => [
        'theme' => [
            'pathMap' => [
                '@akiraz2/yii2-blog/views/frontend/default' => '@app/views/blog'
            ],
        ],
    ],
],
...

In the above pathMap means that every view in @akiraz2/yii2-blog/views/frontend/default will be first searched under @app/views/blog and if a view exists in the theme directory it will be used instead of the original view.

NOTE: Just copy all necessary views from @akiraz2/yii2-blog/views/frontend/default to @app/views/blog and change!

User model

You can use own user model, but need configure it in config.php

For example,

'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

How to change upload path Imperavi Redactor widget

Yii2 blog module use imperavi redactor 2 Module https://github.com/yiidoc/yii2-redactor with moduleName "redactorBlog".

NOTE: Embedded Module redactorBlog use own UploadController with AccessControl! and only in Backend! and only you don`t override default config

If you want change default config, you should add redactor module manually

Config backend modules in 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 for backend

For example, using dektrium/yii2-user

   'modules' => [
        'blog' => [
            'class' => akiraz2\blog\Module::class,
            ...
            'adminAccessControl' => 'common\components\AdminAccessControl',  
            ...      
        ],
    ], 

Create file 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

Please, add component dragonjet/yii2-opengraph to your project.

php composer.phar require --prefer-dist dragonjet/yii2-opengraph "dev-master"

Configuration common/config/main.php or frontend/config/main.php

  'components' => [
      'opengraph' => [
          'class' => 'dragonjet\opengraph\OpenGraph',
      ],
      //....
  ],

How to change captcha in Comments

Not yet... If you are using Recaptcha2 in your project with my yii2-blog, please PR me! By default, we use Math captcha

TODO

  • refactoring code (specially BlogCategory, BlogTag)
  • create widgets (for backend and frontend)
  • translate to many popular languages
  • create multilang models
  • change default design and styles for frontend blog
  • add config Captcha

Support

If you have any questions or problems with Yii2-Blog you can ask them directly by using following email address: akiraz@bk.ru.

Please translate to your language! Edit config (or copy to your path) @vendor/akiraz2/yii2-blog/src/messages/config.php, add your language and run script:

php ./yii message/extract @akiraz2/blog/messages/config.php

translate file will be in @vendor/akiraz2/yii2-blog/src/messages/ or your configured path

Contributing

If you'd like to contribute, please fork the repository and use a feature branch. Pull requests are warmly welcome. +PSR-2 style coding. I can apply patch, PR in 2-3 days! If not, please write me akiraz@bk.ru

Licensing

Yii2-Blog is released under the MIT License. See the bundled LICENSE.md for details.

akiraz2/yii2-blog 适用场景与选型建议

akiraz2/yii2-blog 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 7.89k 次下载、GitHub Stars 达 89, 最近一次更新时间为 2018 年 04 月 05 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「category」 「blog」 「module」 「extension」 「comments」 「seo」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 akiraz2/yii2-blog 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 akiraz2/yii2-blog 我们能提供哪些服务?
定制开发 / 二次开发

基于 akiraz2/yii2-blog 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 7.89k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 90
  • 点击次数: 33
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 89
  • Watchers: 14
  • Forks: 24
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-04-05