If you enjoy this plugin and want to support me you can buy me a beer.
Manage subpages in the content area.
This plugin includes the sortable
, modules
and redirect
field.
The following animation shows the modules
field in combination with the modules-plugin.
In addition to the three fields the plugin has its own registry. A short overview of the fields.
The core field. It is the base for the modules
field.
Change appereance in the blueprint or build your own field based on this one.
The modules
field is an extended sortable
field. Bundled with the modules-plugin it is a very powerful tool. You can find further informations here.
To disable the field add c::get('sortable.field.modules', false);
to your config.php
.
Redirect a user to the parent of the currently visited panel page. Useful for pages that act as a container. You can find further informations here.
To disable the field add c::get('sortable.field.redirect', false);
to your config.php
.
To install the plugin, please put it in the site/plugins
directory.
The plugin folder must be named sortable
.
site/plugins/
sortable/
sortable.php
...
You can download the latest version of the plugin from https://github.com/lukaskleinschmidt/kirby-sortable/releases/latest
If you are familiar with Git, you can clone this repository from Github into your plugins folder.
git clone https://github.com/lukaskleinschmidt/kirby-sortable.git sortable
After installing the plugin you can use the new field types.
This blueprint shows all available options of the sortable
field.
fields:
title:
label: Title
type: text
sortable:
label: Sortable
type: sortable
layout: base
variant: null
limit: false
parent: null
prefix: null
options:
limit: false
...
Load a registerd layout. The layout defines how a entry is rendered. Learn how to register your own layout.
Load a registerd variant. A variant is used to change the naming of the field from page to modules for example. Learn how to register your own variant.
Limit he number of visible pages. Example blueprint from the modules
field.
modules:
label: Modules
type: modules
# Allow 5 visible modules overall
limit: 5
# Template specific option
options:
# Allow only 3 modules per template (applies to all templates)
limit: 3
module.gallery:
# Allow only 1 visible gallery module (overwrites the current limit of 3)
limit: 1
Uid to use when looking for the container page. If left empty the field will look for subpages in the current page.
Template prefix to filter available subpages.
With the new registry you are now able to customize the visual appearance and modify or add custom functionality. The registry makes it possible to register layouts, actions, variants and translations.
// site/plugins/product-variants/product-variants.php
// Make sure that the sortable plugin is loaded
$kirby->plugin('sortable');
if(!function_exists('sortable')) return;
$kirby->set('field', 'variants', __DIR__ . DS . 'fields' . DS . 'variants');
$sortable = sortable();
$sortable->set('action', 'stock', __DIR__ . DS . 'actions' . DS . 'stock');
$sortable->set('layout', 'variant', __DIR__ . DS . 'layouts' . DS . 'variant');
$sortable->set('variant', 'variants', __DIR__ . DS . 'variants' . DS . 'variants');
As you can see in this example of a product variant field, the plugin can take care of registering all kinds of extensions, which will then be available in the sortable
field or any field based on that.
These are all possible registry extensions you can register this way:
// The layout directory must exist and it must have a PHP file with the same name in it
sortable()->set('layout', 'mylayout', __DIR__ . DS . 'mylayout');
Have a look at the base layout or the module layout.
// The action directory must exist and it must have a PHP file with the same name in it
sortable()->set('action', 'myaction', __DIR__ . DS . 'myaction');
Have a look at the available actions.
// The variant directory must exist and can have multiple tranlation files
sortable()->set('variant', 'myvariant', __DIR__ . DS . 'myvariant');
Have a look at the modules variant or the sections variant.
// The translation file must exist at the given location
sortable()->set('translation', 'en', __DIR__ . DS . 'en.php');
sortable()->set('translation', 'sv_SE', __DIR__ . DS . 'sv_SE.php');
Have a look at the available translations.
Currently you can have a look at the modules
field within this plugin. Since the field is included in the plugin all parts are registered within the plugin.
Also check out the demo branch. I will try to update the demo with a more meaningful example soon.
- PHP 5.4+
- Kirby 2.3+
- Kirby Modules Plugin 1.3+
when you want to use themodules
field