PHPackages                             phpworkers/cms - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. phpworkers/cms

ActiveLibrary[Admin Panels](/categories/admin)

phpworkers/cms
==============

laravel cms

v2.4.7(3y ago)305518MITPHP

Since Sep 24Pushed 3y ago2 watchersCompare

[ Source](https://github.com/shunnmugam/laravel-admin)[ Packagist](https://packagist.org/packages/phpworkers/cms)[ RSS](/packages/phpworkers-cms/feed)WikiDiscussions master Synced 4d ago

READMEChangelog (10)Dependencies (3)Versions (36)Used By (0)

Content Management System using laravel framework
=================================================

[](#content-management-system-using-laravel-framework)

Features:
---------

[](#features)

1. Cms
2. Admin interface
3. Module based app
4. Theme based
5. Plugins
6. Roles and Permissions
7. Menu creation
8. User Management
9. Page Creation
10. Mail configurations
11. Site Configuration,etc

Version
-------

[](#version)

Laravel VersionVersion5.41.0 to 2.05.5&gt;=2.15.6&gt;=2.15.7&gt;=2.15.8&gt;=2.26&gt;=2.37&gt;=2.38&gt;=2.4Change Logs
-----------

[](#change-logs)

### Version v2.4

[](#version-v24)

1. Data table version update
2. Seed command bug fix

### Version v2.2

[](#version-v22)

1. Data table version update
2. Bug fix

### Version v2.1.1

[](#version-v211)

1. CRUD Module added easy crud module with single command

- ##### `php artisan make:cms-module {module-name} {--crud}`

    [](#php-artisan-makecms-module-module-name---crud)

    eg: ```
    php artisan make:cms-module test --crud
    ```

2. CRUD view create crud views using artisan command

- ##### `php artisan make:cms-crudviews`

    [](#php-artisan-makecms-crudviews)

    it will create 2 file inside resources/views/admin

    `index.blade.php``edit.blade.php`

Install:
--------

[](#install)

```
composer require phpworkers/cms
```

Requiremments:
--------------

[](#requiremments)

1. Laravel 5.4 or later
2. laravelcollective/html: ~5.0
3. yajra/laravel-datatables-oracle: ~9.0
4. unisharp/laravel-filemanager: ^1.8

After Install:
--------------

[](#after-install)

```
// Add following Lines to `config/app.php` providers array
//html
Collective\Html\HtmlServiceProvider::class,
//datatable
Yajra\DataTables\DatatablesServiceProvider::class,
Ramesh\Cms\CmsServiceProvider::class,

// Add Following Lines to `config/app.php`  aliases array
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
'Cms' => Ramesh\Cms\Facades\Cms::class,
```

##### Then Run Following commands

[](#then-run-following-commands)

```
# Publishing css,js,config files,core modules,theme,etc
php artisan vendor:publish

# Publishing filemanager resources
php artisan vendor:publish --provider="UniSharp\LaravelFilemanager\LaravelFilemanagerServiceProvider"

composer dump-autoload

# Migrate our tables
php artisan cms-migrate

# Seeding
php artisan db:cms-seed

#register modules to table
php artisan update:cms-module

#register plugins
php artisan update:cms-plugins

#regiser menus
php artisan update:cms-menu
```

Open your `route/web.php` and remove rollowing lines(route)

```
Route::get('/', function () {
    return view('welcome');
});
```

then run

```
php artisan serve
```

and open localhost:8000/administrator

##### Username : admin

[](#username--admin)

##### Password : admin123

[](#password--admin123)

Documents
---------

[](#documents)

- Folder Structure
- Theme
- What is Module?
- Core
- Local
- List of core modules
- Create Own module
- Artisian Commands
- Skin
- Helper
- Core Helper functions
- Plugins

### Folder Structure

[](#folder-structure)

#### Main path

[](#main-path)

```
  cms (main)
    |
    |__core
    |  |
    |  |__core modules
    |
    |__local
        |
        |__themes
            |
            |__local modules

1.cms : cms path is the main path of our app,that contain

      1.1 : core
      1.2 : local

    1.1 : core : core path is core module path ,that contain number of core modules,avoid to write core modules

        1.1.1 : core modules -> core path contain number of core modules

    1.2 : local : local path contain theme,we can create multiple theme

      1.2.1 : local modules -> theme path contain number of local module(user create module)

```

#### Skin path

[](#skin-path)

```
  public
    public (main)
    |
    |_skin
        |
        |__theme name
                |
                |__css,js,vendor,fonts,etc

    1 : public ->public folder is default folder in laravel

        1.1 : skin -> skin folder is our assets folder

        1.1.1 : theme name -> folder name is theme name , that contain css, fonts ,js,etc

```

### Theme

[](#theme)

Theme is main part of our package,we can create multiple theme,our package is theme and moduler based,all theme is placed on cms-&gt;local folder
Default theme is **theme1**

#### Create Theme

[](#create-theme)

Just create new folder inside of cms-&gt;local

#### Change theme

[](#change-theme)

If you want to change theme?its very easy
Go to adminpanel-&gt;site configuration-&gt;change theme

### Modules

[](#modules)

Module is is a mechanism to group controller, views, modules, etc that are related, otherword module is pice of code or package of laravel

### Core

[](#core)

core is folder,that contain core modules **(pre-defind)** Module

> Note: Don't change any code of core module's

### Local

[](#local)

local folder contain local module,which is created by user

### Create own module

[](#create-own-module)

**php artisan make:cms-module {module-name}**

eg :

```
php artisan make:cms-module helloworld
```

helloworld module is created under current theme folder
then register our module to database for feature use
**php artisan update:cms-module**

##### Where is the entry point (provider) of the module?

[](#where-is-the-entry-point-provider-of-the-module)

open provider folder under cms/local/{module}
that provider is same as laravel provider so boot and register method is important and additionaly we have some functions
1. registerRoot -&gt; registerRoot method is used to registreing our custom module routes
2. registerAdminRoot -&gt; registerAdminRoot method is used to registering our custom module admin routes
3. registerViews -&gt; registerViews method is used to registering our custom module views

if you want to enable this method,just uncommands calls inside register method of your provider thats all :) ,lets see files in modules,
1. module.json -&gt;file
2. composer.json -&gt;file
3. menu.xml -&gt; file
4. routes.php -&gt; file
5. adminroutes -&gt; file
6. Controller -&gt; folder
7. Database -&gt;folder
8. Models -&gt; folder
9. config -&gt; folder
10. resourcesc-&gt; folder
11. Events -&gt; folder
12. Listeners -&gt; folder
13. Mail -&gt; folder
14. Middleware -&gt; folder
15. helpers -&gt;folder

#### module.json

[](#modulejson)

```
{
    "name": "helloworld",
    "version": "0.0.1",
    "type": "local",
    "providers": ["Providers\\HelloworldServiceProvider"]
}
```

    Parameter   Data type   Use   is optional?       name   string   name of the module   NO     version   string   version of the module   NO     type   string (core/local)   type of the module   NO     providers   Array   Provider of this module,provider is register point of our module   NO     plugins   string (relative path of plugin)   plugin path,that used to defind plugin   YES     helpers   object (relative path of helpers)   helpers path,that used to defind helpers,helpers contain common functions,we can use any where
 eg:
 `          "helpers" : {              "HelperName1":"cms\\core\\blog\\helpers\\Blog",              "HelperName2":"some path",              ....            }        `   YES     search   object (relative path of search class)   search path,that used to defind search helper,search class functions, this is used to make our module is searchable
 eg:
 `          "helpers" : {              "HelperName1":"cms\\core\\blog\\helpers\\Blog",              "HelperName2":"some path",              ....            }        `   YES    configuration string (view file path of configuration) configuration is used to view or edit module configuration eg:
 `          "configuration" : "user::admin.configuration.configuration",        `
 Above example is taken from user module,that mean user configuration is place on cms/core/user/admin/configuration/configuraion.blade.php   YES    configuration\_data string (configuration data function path) configuration data is get module configuration from function,its define function name,this function should return module configuration
 eg:
 `          "configuration_data" : "\\cms\\core\\user\\Controllers\\UserController@getConfigurationData"        `
 Above example is taken from user module,
 that mean user configuration function is place on **cms/core/user/controller/UserController.php **and function name is **getConfigurationData**
 `          /*            * configurations option           */          public function getConfigurationData()          {              $group = UserGroupModel::where('status',1)->where('id','!=',1)->orderBy('group','Asc')->pluck("group","id");              return ['user_group'=>$group];          }        `
 Above function return available user groups****   YES   #### composer.json

[](#composerjson)

`  {  "name": "cms/user",  "description": "",  "authors": [    {      "name": "Ramesh",      "email": "shunramit@gmail.com"    }  ],  "autoload": {    "psr-4": {         }  }}`
composer.json file is contain detail about module and author and that contain autoload
just leave it this one, we will add autoload feature in later
#### menu.xml

[](#menuxml)

menu.xml is used for add menu and menu group in adminpanel like joomla menu
```
  < ?xml version="1.0" encoding="utf-8"? >

```

    Tag   Use   Parent   Attributes       ``   menus tag is main tag of the menu.xml,that is bootstarp of menu.xml   NULL   NULL     ``   group tag is defind menu type,default type is general,you can create own group using name attribute   ``  - name
     name attribute is defind name of the menu type
     name is mandtory attribute
- order
     order attribute defind order of the menutype

     ``   menugroup tag is defind menu group for example user module menus is placed under user menugroup *Menugroup is optional*   ``  - name
     name attribute is defind name of the menu group
     name is mandtory attribute
- order
     order attribute defind order of the menu group

     ``   menu tag is used to give a link otherword its just clickable link   ` OR  `  - name
     name attribute is defind name of the menu group
     name is mandtory attribute
- icon
     icon attribute is used to add font awsome icon
- route
     route attribute is accept named route
     *if you want add url?just use **is\_url**  attribute
     eg :
     `                              `*
- is\_url
     is\_url attribute is used to identify given menu route is url or named route,if is\_url="1" means given route is url otherwise given route is named roue
- order
     order attribute defind order of the menu group

   ####  routes.php

[](#--routesphp)

routes.php file contain routes of the frontend app exclude admin routes
don't have routes.php?,just create it.. :)
if you don't like file name?
we have good solution for you
go to your module main provider and find registerRoot function then change it

#### adminroutes.php

[](#adminroutesphp)

 adminroutes.php file contain routes of the admin
 this file is include admin middlewares and admin route group with administrator prefix
 if you dont want admin middleware of current module
 go to your module provider and find registerAdminRoot method and remove middleware

#### Folders of the modules

[](#folders-of-the-modules)

    Name   Use   Sub-folders       Controller   controller folder contain controllers   -     Database   Database folder contain migrations and seeds   Migration -&gt; that contain migrations Seeds -&gt; that contain seeds    Models Models folder contain Models class -   helpers helpers folder contain helpers class -   providers providers folder contain providers class -   resources resources folder contain assets and views views,assets   Mail Mail folder contain Mail class -   Events Events folder contain Events class -   Listeners Listeners folder contain Listeners class -   Middleware Middleware folder contain Middleware class -   Console Console folder contain artisan comands Commands   config  config folder contain config array like roles (deprecated) and mailer configurations -  ### Artisian Commands

[](#artisian-commands)

we provide more artisan commands

imagin we have more than 30 artisan commands,its not remebarable,but you know default laravel commands so we have some idea,we added one common word for all laravel commands,thats it,now easily you can remember our commands

eg:
default command for creating laravel controller is
**php artisan make:controller {controller-name}**
our comand is
**php artisan make:cms-controller {controller-name} {module-name}**
deafult migrate command is
**php artisan migrate**our migrate command is
**php artisan cms-migrate**
and one more we have our own commands,its not high count,but very usefull #### List of our commands

[](#list-of-our-commands)

1. **php artisan make:cms-module {module-name}**
     this is used to make new module
2. **php artisan update:cms-menu**
     this command is used to update or register menus

#### create new artisan commands for your module

[](#create-new-artisan-commands-for-your-module)

if you want create new comand
**php artisan make:cms-command {command-name} {module-name}**
file is created under console/commands folder inside of your module
#### how to enable own commands?

[](#how-to-enable-own-commands)

open your module provider then create commands array
eg :
```
    /*
     * artisan command
     */
    protected $commands = [
        'cms\core\{module-name}\Console\Commands\{Commandclass}'
    ];
```

please replace module-name and commandclass like ```
    /*
     * artisan command
     */
    protected $commands = [
        'cms\core\menu\Console\Commands\AdminMenu'
    ];
```

then create method
```
    /*
     * register commands
     */
    protected function registerCommand()
    {
        $this->commands($this->commands);
    }
```

then add following line to register method ```
  $this->registerCommand();
```

eg: ```
  public function register()
  {
      $this->registerViews();
      $this->registerRoot();
      $this->registerAdminRoot();
      $this->registerCommand();
  }
```

What is next?
=============

[](#what-is-next)

 now i am working on moving this package to react,V3.O will release soon

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity27

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity75

Established project with proven stability

 Bus Factor1

Top contributor holds 99.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~52 days

Recently: every ~69 days

Total

34

Last Release

1424d ago

Major Versions

v0.0.9 → v1.0.02018-02-02

v1.0.1 → v2.02018-03-18

v1.0.3 → v2.1.22019-03-10

### Community

Maintainers

![](https://www.gravatar.com/avatar/cda3c7f930573b989abb5014cf613810ac7a897227844505559af34c1740e94b?d=identicon)[shunnmugam](/maintainers/shunnmugam)

---

Top Contributors

[![shunnmugam](https://avatars.githubusercontent.com/u/28820313?v=4)](https://github.com/shunnmugam "shunnmugam (175 commits)")[![Kamona-WD](https://avatars.githubusercontent.com/u/57622665?v=4)](https://github.com/Kamona-WD "Kamona-WD (1 commits)")

---

Tags

admin-dashboardadministration-interfaceadministration-paneladministratorartisan-commandchange-themecmslaravellaravel-admin-panellaravel-commandlaravel-frameworklaravel-theme-makerlaravel-themesmodulemodulesmodules-with-themephp-artisanthemetheme-folderthemeslaravelcmsmodulesthemepluginsadminLaravel CMS

### Embed Badge

![Health badge](/badges/phpworkers-cms/health.svg)

```
[![Health](https://phpackages.com/badges/phpworkers-cms/health.svg)](https://phpackages.com/packages/phpworkers-cms)
```

###  Alternatives

[dwij/laraadmin

LaraAdmin is a Open source Laravel Admin Panel / CMS which can be used as Admin Backend, Data Management Tool or CRM boilerplate for Laravel with features like CRUD Generation, Module Manager, Media, Menus, Backups and much more

1.6k68.7k](/packages/dwij-laraadmin)[arbory/arbory

Administration interface for Laravel

4752.8k3](/packages/arbory-arbory)[alexstack/laravel-cms

Simple Bootstrap Laravel CMS. Can integrate to any existing Laravel project. Only add few database tables with prefix, not effect your existing database tables. Support Laravel 8.x &amp; 7.x &amp; Laravel 6.x &amp; Laravel 5.x - Amila Laravel CMS

1084.3k5](/packages/alexstack-laravel-cms)[serverfireteam/blog

A nice blog system with laravel and laravelpanel

523.1k](/packages/serverfireteam-blog)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
