Choices is a plugin for Kirby 3 that provides methods to manage field options
in the frontend. For any field – like select, multiselect or checkboxlist – that offers options
settings in the blueprint, this plugin will load and return the readable text values for the keys stored in the content file. It works with static options directly set in the blueprint as well as dynamic ones loaded via query
or api
settings.
fields:
fruits:
label: Fruits
type: select
options:
apple: Apple
pear: Pear
banana: Banana
Title: Choices example
----
Fruits: apple, pear
// Return selected fruits: "Apple Pear"
foreach ($page->fruits()->toChoices() as $fruit) {
echo $fruit;
}
// Return selected fruits in flipped order: "Pear Apple"
foreach (
$page
->fruits()
->toChoices()
->flip()
as $fruit
) {
echo $fruit;
}
Download and copy this repository to /site/plugins/choices
.
git submodule add https://github.com/hananils/kirby-choices.git site/plugins/choices
composer require hananils/kirby-choices
Converts the field value to a Choices collection featuring the text values of the selected options:
$page->fruits()->toChoices();
If the method is passed an optional value of true
, it will return text values for all options specified in the blueprint:
$page->fruits()->toChoices(true);
The Choices collection can be used to loop over all given options and return their values. It offers all methods known to the default Kirby collection like first()
, last()
, shuffle()
, sort()
and the like. Additionally, it provides three methods to simplify content output:
The join method concatenates all field value by a given separator.
$separator
: optional separator, uses,
as default.
// Will return: Apple, Pear
$page
->fruits()
->toChoices()
->join();
If you want to have more control on how to join values – e. g. to have the last item joined by and
– have a look at the List methods plugin.
The missing method compare the current field values with an array of required values and return the missing ones.
$required
: array of required values to be checked.
// Will return: Banana
$page
->fruits()
->toChoices()
->missing(['Apple', 'Banana']);
The average method will calculate the average of all selected value, useful when handling numeric values.
$decimals
: the number of decimals to return.
This plugin is provided freely under the MIT license by hana+nils · Büro für Gestaltung.
We create visual designs for digital and analog media.