Skip to main content
Display plugins let you inject custom HTML blocks — banners, carousels, promotional widgets, trust badges, or any storefront component — into the page layout via shortcodes. You can ship a plugin as part of the application source (a built-in plugin) or drop it into the root /plugins/ directory without touching core files (a drop-in plugin). Both approaches implement the same DisplayPlugin interface.

The DisplayPlugin Interface

Every display plugin must implement the following contract:
The $params array carries any inline shortcode attributes, and the $plugin model gives you access to the persisted plugin settings configured in the admin panel.

Creating a Built-in Plugin

Built-in plugins live inside the application source tree and are registered through the service provider.
1

Create the Plugin Class

Add your class to app/Plugins/Display/, implementing DisplayPlugin:
2

Register in PluginServiceProvider

Open app/Providers/PluginServiceProvider.php and register your class inside the boot() method:
3

Add the Database Record and Options

Add a seeder entry for your plugin in database/seeders/PluginSeeder.php, then run:
This inserts the plugin record and its configurable option fields into the plugins, plugin_options, and plugin_settings tables.

Creating a Drop-in Plugin

Drop-in plugins live in the root /plugins/ directory and require no changes to application source files. The PluginManager discovers them automatically on boot.
The PluginManager scans /plugins/*/plugin.json on every boot. As soon as you add a valid plugin directory with a plugin.json file, the platform detects it, syncs its settings to the database, and registers its shortcode — no restart or cache clear needed in development.

Directory Structure

plugin.json Schema

The plugin.json manifest describes your plugin and declares its configurable options:

Plugin PHP Class

Place your class file alongside plugin.json in the plugin directory:

Plugin Model Helper Methods

The Plugin model injected into render() provides convenience methods for reading and writing plugin settings. All three are available to both built-in and drop-in plugins.
Usage examples:

Database Tables

Site Store Pro uses three tables to manage plugin state:

Live Search API

Site Store Pro exposes a public JSON endpoint that powers the storefront’s real-time search typeahead. You can call this endpoint directly from custom frontend components or headless integrations.
Example request:
Example response:
The endpoint searches across product names and returns an array of matching product objects. It is unauthenticated and rate-limited by the standard Laravel throttle middleware. For full-text search configuration options, see Search & Events.