How To Make Plugin For Newslooks

Newslooks have a plugin system to extend the CMS functionality with more awesome features. And you can build your own plugin and use it in the project. And also you can sell the plugin personally or through the marketplace.

If you want to create a new plugin, follow our folder structure.

Step By Step Guide:

1. Create a folder with the name of your plugin. In lowercase and no spaces. Like: custom-plugin.

2. The new folder must contain a JSON file named "plugin.json". Create the file and here you must have to put all the plugin information.
    Here is what a demo-plugin JSON looks like.

  {

      "name": "Demo Plugin",

      "location": "demo-plugin",

      "namespace": "Plugin\\DemoPlugin\\",

      "version": "1.0",

      "author": "Themelooks",

      "url": "http://www.themelooks.com/",

      "description": "Demo Plugin for NewsLooks",

      "license" : false,

      "license_api": ""

  }

      * Name: Here the name field is the full name of the plugin.

      * Location: Here the location will be the same as the plugin folder name. And it will be needed to check whether the plugin is active or not.

      * Namespace: The Namespace for the Plugin class file. You have to use the namespace for all the classes created in the plugin folder. Like controllers, Models, repositories, or others.   

      * Version: The Version of the plugin.

      * Author: You can give the original Author's name here.

      * url: You can give a Url here.

      * Description: A description of the plugin.

      * License: You have to provide a boolean value, True or False. If True, then to activate the plugin a verify purchase key field will appear, If False then it will activate without any license key.

      * License Api: If the License is true, then you can provide the API here to check the license verification. If the License is false then let the field just empty.

      These fields are important for the plugin to work.

3. routes. This is where all the route files should be available. api.php for the APIs and web.php for others.

    

4. src. Here are all the src files Like Http/Controller, Http/Request, Models, Repositories, Services, or Any Class File that should be situated. And remember all class files should have the Plugin Namespace to work.

     

5. views: All the Plugin view files should be here. You can get the view file like this - "plugin/your_plugin_location::rest_of_the_file_path". Example - "plugin/demo-plugin::home" OR "plugin/demo-plugin::page.index".

    Also if you want to show the plugin link in the sidebar you have to create a includes folder in views. And a navbar.blade.php in the includes folder. In the navbar file, you can write the nav item.

6. config (Optional): If you want to have a config file for your plugin-related data, you can create a config folder. And a config.php file. And to access the config file data - "config('plugin_location.data')". Example - config('demo-plugin.status.active') .This config folder is optional and not required to build a plugin.

      

7. helpers (Optional): If you need a helper function for your plugin, you can create a helpers folder and a helper.php file in the folder. All the functions in that folder will be autoloaded. You can follow the Core/helpers/helper file on how to write functions on this plugin helper. But this is also optional and not required for the plugin.

8. banner.png: You need to have a banner.png file to showcase the plugin image. preferred size 294 x 95 px.

9. data.sql (Optional): data.sql is a SQL file. This will be executed when installing the plugin. If your plugin needs a new table you can write the SQL in the data.sql file. But be cautious, about the SQL, and avoided deleting or modifying other tables. This file is also optional and use only when required.

10. delete.sql (Optional): delete.sql will be executed when deleting the plugin. When you delete the plugin and want to remove or modify the database you can write the SQL here. Again this is optional and use be cautious.

This was the step-by-step guide with folder and file structure. You can download our Demo Plugin to get an idea of how to build the structure. Download.

We have a Plugin helper function in Core/Helpers. You can use those functions to develop your plugin and avoid getting errors.
When you ready your Plugin then for the next install, you can follow this post.