Dynamic dropdown custom template variable for MODX Revolution.
With this MODX Revolution custom template variable related dropdown template variables could be used. Each dynamic dropdown template variable could have one or more child dynamic dropdown template variables which are updated on selection of the parent dynamic dropdown template variable.
MODX Package Management
Create three Dynamic Dropdown template variables:
Tab | Option | Value |
---|---|---|
General Information | Name | dynamic0 |
Input Options | Input Type | Dynamic Dropdown |
Input Options | Parent Dropdown | |
Input Options | Dynamic Dropdown Group | dynamicGroup |
Input Options | Where | {"parent":"0"} |
Tab | Option | Value |
---|---|---|
General Information | Name | dynamic1 |
Input Options | Input Type | Dynamic Dropdown |
Input Options | Parent Dropdown | dynamic0 |
Input Options | Dynamic Dropdown Group | dynamicGroup |
Input Options | Where | {"parent":"[[+dynamic0:default=`999999999999999`]]"} |
Tab | Option | Value |
---|---|---|
General Information | Name | dynamic2 |
Input Options | Input Type | Dynamic Dropdown |
Input Options | Parent Dropdown | dynamic1 |
Input Options | Dynamic Dropdown Group | dynamicGroup |
Input Options | Where | {"parent":"[[+dynamic1:default=`999999999999999`]]"} |
The names dynamicX
and dynamicGroup
are just examples and could be changed.
This example will add three dropdown select TVs, where you can choose MODX resources. After selecting a resource in the first TV dynamic0, the dropdown select of the second TV dynamic1 will show the childs of this resource. After selecting a resource in the second TV dynamic1, the dropdown select of the third TV dynamic2 will show the childs of this resource. If you select again a resource in the first TV dynamic0 all children of this Dynamic Dropdown TV (dynamic1 and dynamic2) will be resetted.
Create two Dynamic Dropdown template variables:
Tab | Option | Value |
---|---|---|
General Information | Name | dynamic0 |
Input Options | Input Type | Dynamic Dropdown |
Input Options | Dynamic Dropdown Group | dynamicGroup |
Input Options | Input Option Values | `TEST1==1 |
Tab | Option | Value |
---|---|---|
General Information | Name | dynamic1 |
Input Options | Input Type | Dynamic Dropdown |
Input Options | Dynamic Dropdown Group | dynamicGroup |
Input Options | Input Option Values | `1::TEST1a==1a |
The names dynamicX
and dynamicGroup
are just examples and could be changed.
This example will add two dropdown select TVs, where you can different values. After selecting a value in the first TV dynamic0, the dropdown select of the second TV dynamic1 will show related values. If you select again a value in the first TV dynamic0 all children of this Dynamic Dropdown TV (dynamic1) will be reseted.
The format for the input option values is:
Parentvalue::Key==Value||…||Key==Value##Parentvalue::Key==Value||…||Key==Value
Creating a new line after the ##
is allowed.
Create three Dynamic Dropdown template variables:
Tab | Option | Value |
---|---|---|
General Information | Name | resource_level0 |
Input Options | Parent Dropdown | |
Input Options | Dynamic Dropdown Group | resource_levels |
Tab | Option | Value |
---|---|---|
General Information | Name | resource_level1 |
Input Options | Parent Dropdown | resource_level0 |
Input Options | Dynamic Dropdown Group | resource_levels |
Tab | Option | Value |
---|---|---|
General Information | Name | resource_level2 |
Input Options | Parent Dropdown | resource_level1 |
Input Options | Dynamic Dropdown Group | resource_levels |
This example will also add three dropdown select TVs, where you can choose MODX resources. After selecting a resource in the first TV resource_level0, the dropdown select of the second TV resource_level1 will show the childs of this resource. After selecting a resource in the second TV resource_level1, the dropdown select of the third TV resource_level2 will show the childs of this resource. If you select again a resource in the first TV resource_level0 all children of this Dynamic Dropdown TV (resource_level1 and resource_level2) will be resetted.
The above example uses the example processors in
/core/components/dynamicdropdowntv/processors/mgr/resource_levels
.
If you want to create your own processors, choose a group name and create a new
folder in /core/components/dynamicdropdowntv/processors/mgr/your-own-group-name
.
Then create processor files for each dynamic dropdown template variable with
names like getoptions.your-dynamic-dropdown-tv-name.php
.
All child Dynamic Dropdown TVs will send the name and the selected value of the parent Dynamic Dropdown TV as request parameter pair to the processor.
If no folder with the group name exists in
/core/components/dynamicdropdowntv/processors/mgr
the default processors are used (as in example 1).
Create two Dynamic Dropdown template variables
Tab | Option | Value |
---|---|---|
General Information | Name | album0 |
Input Options | Input Type | Dynamic Dropdown |
Input Options | Parent Dropdown | |
Input Options | Dynamic Dropdown Group | gallery_albums |
Tab | Option | Value |
---|---|---|
General Information | Name | album1 |
Input Options | Input Type | Dynamic Dropdown |
Input Options | Parent Dropdown | album0 |
Input Options | Dynamic Dropdown Group | gallery_albums |
This example will also add two dropdown select TVs, where you can choose MODX gallery albums. After selecting a gallery album in the first TV album0, the dropdown select of the second TV album1 will show the child albums of this album. If you select again a album in the first TV album0 the child of this Dynamic Dropdown TV (album1) will be resetted.
- Create all Dynamic Dropdown from up to down!
- To work correctly, each Dynamic Dropdown TV needs to know all its parents and childs. There is a plugin in onTvFormSave, which collects all parents and children Dynamic Dropdown TVs of the same Dynamic Dropdown group and stores them in input-properties for each TV after saving the TV.
- You can live search in dropdown select options if you set Enable Type-Ahead to Yes and set Force Selection to List to Yes.