akiraz2 / yii2-blog
Simple, configurable blog module for Yii2 (post, comment, nested category, tags). + frontend, backend. + SEO! (Opengraph, Schema.org)
Installs: 4 295
Dependents: 0
Suggesters: 0
Security: 0
Stars: 91
Watchers: 15
Forks: 23
Open Issues: 3
Type:yii2-extension
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/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.