yii2mod / yii2-cms

Simple CMS extension
MIT License
44 stars 23 forks source link
yii2 yii2-cms yii2-cms-module yii2-extension

Yii2 CMS Extension


This module provides a web interface for content management system and includes the following features:

Latest Stable Version Total Downloads License Build Status

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist yii2mod/yii2-cms "*"

or add

"yii2mod/yii2-cms": "*"

to the require section of your composer.json.

CONFIGURATION

Database Migrations

Before usage this extension, we'll also need to prepare the database.

$ php yii migrate --migrationPath=@vendor/yii2mod/yii2-comments/migrations
$ php yii migrate --migrationPath=@vendor/yii2mod/yii2-cms/migrations

Module Setup

To access the module, you need to configure the modules array in your application configuration:

'modules' => [
    'cms' => [
        'class' => 'yii2mod\cms\Module',
    ],
],

You can then access to management section through the following URL:

http://localhost/path/to/index.php?r=/cms/manage/index

Configure Url Manager

You need to configure the urlManager array in your application configuration:

 'components' => [
     'urlManager' => [
         'rules' => [
             ['class' => 'yii2mod\cms\components\PageUrlRule'],
         ]
     ],
 ],

Setup Page Action

Add to SiteController (or configure via $route param in urlManager):

public function actions()
{
    return [
        'page' => [
            'class' => 'yii2mod\cms\actions\PageAction',
        ]
    ];
}

Now you can use this module with all available features.

Features:

  1. By default this extension uses the froala editor for manage cms pages, you can change editor configuration by the following code:

List of options: https://www.froala.com/wysiwyg-editor/docs/options

Configuration example: https://github.com/froala/yii2-froala-editor#usage

'modules' => [
    'cms' => [
        'class' => 'yii2mod\cms\Module',
        'froalaEditorOptions' => [
            // your custom configuration
            'clientPlugins' => [
            ],
            'clientOptions' => [
            ],
            'excludedPlugins' => [
            ],
        ],
    ],
],
  1. Markdown Editor support:

    'modules' => [
    'cms' => [
        'class' => 'yii2mod\cms\Module',
        'enableMarkdown' => true,
        // List of options: https://github.com/NextStepWebs/simplemde-markdown-editor#configuration
        'markdownEditorOptions' => [
            'showIcons' => ['code', 'table'],
        ],
    ],
    ],
  2. You can insert your own widget on the page by the following steps:

namespace app\widgets;

use yii\base\Widget;

class MyWidget extends Widget
{
   /**
    * @inheritdoc
    */
   public function run()
   {
       parent::run();

       echo 'Text from widget';
   }

   /**
    * This function used for render the widget
    *
    * @return string
    */
   public static function show()
   {
       return self::widget();
   }
}
 [[\app\widgets\MyWidget:show]]
  1. You can use parameters in your page content, for example: {siteName}, {homeUrl}. For parsing this parameters you can use the baseTemplateParams property:
public function actions()
{
    return [
        'page' => [
            'class' => 'yii2mod\cms\actions\PageAction',
            'baseTemplateParams' => [
               'homeUrl' => 'your site home url',
               'siteName' => Yii::$app->name
            ]
        ],
    ];
}
  1. You can change comments module settings by the following code:
public function actions()
{
    return [
        'page' => [
            'class' => 'yii2mod\cms\actions\PageAction',
            'commentWidgetParams' => [
                'maxLevel' => 1,
                'dataProviderConfig' => [
                    'pagination' => [
                        'pageSize' => 10
                    ],
                ],
            ]
        ]
    ];
}

For detail information about comments module please visit the following page

Support us

Does your business depend on our contributions? Reach out and support us on Patreon. All pledges will be dedicated to allocating workforce on maintenance and new awesome stuff.