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
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 PKid(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
- backend : http://backend.you-domain.com/blog (Empty view)
- Category : http://backend.you-domain.com/blog/blog-category (create first category)
- Post : http://backend.you-domain.com/blog/blog-post
- Comment : http://backend.you-domain.com/blog/blog-comment
- Tag : http://backend.you-domain.com/blog/blog-tag
- 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/defaultto@app/views/blogand 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
redactorBloguse 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 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 akiraz2/yii2-blog 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Laravel package for opinionated blog implementation
Display your categories and products on front end of your website
taxonomy term implementation in php
taxonomy term implementation in Yii2
Ready to use blog package
Import an RSS-feed into blog
统计信息
- 总下载量: 7.89k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 90
- 点击次数: 33
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-04-05