Yii2 Super Blog is simple, configured yii2 Module with frontend and backend, cloned from unmaintained repo funson86/yii2-blog, fully reorganized and improved.
- 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
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",
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
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
- 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
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!
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`)
],
],
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']
],
],
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();
}
}
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
- 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
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
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
Yii2-Blog is released under the MIT License. See the bundled LICENSE.md for details.