Kirby UpdateID
Automatically update references to a page id
## About
- Sometimes you need to reference pages to each other, usually by the page ID
- When you update a page URI, the ID can change and references to this page from other page/fields can be lost.
- This plugin automatically updates selected fields when a referenced ID change.
## Installation
Use one of the alternatives below.
### 1. Using [`kirby-webpack`](https://github.com/brocessing/kirby-webpack)
Simply use the built-in **Kirby Package Manager** by running:
```sh
$ npm run kirby:add
$ [?] Git URL: https://github.com/brocessing/kirby-updateid
$ [?] Module name: updateid
$ [?] Category: plugins
```
### 2. Kirby CLI
If you are using the [Kirby CLI](https://github.com/getkirby/cli) you can install this plugin by running the following commands in your shell:
```sh
$ cd path/to/kirby
$ kirby plugin:install brocessing/kirby-updateid
```
### 3. Clone or download
1. [Clone](https://github.com/brocessing/kirby-updateid.git) or [download](https://github.com/brocessing/kirby-updateid/archive/master.zip) this repository.
2. Unzip the archive if needed and rename the folder to `updateid`.
**Make sure that the plugin folder structure looks like this:**
```text
site/plugins/updateid/
```
### 4. Git Submodule
If you know your way around Git, you can download this plugin as a submodule:
```sh
$ cd path/to/kirby
$ git submodule add https://github.com/brocessing/kirby-updateid site/plugins/updateid
```
## Setup & Usage
**Use `c::set('plugin.updateid', array $config)` to specify which fields can be updated.**
##### Basic configuration:
```php
c::set('plugin.updateid', array(
// On the homepage, page ids from the field featured_works will be auto-updated
array(
'pages' => 'home',
'fields' => 'featured_works'
),
// You can add other pages
// And use arrays to specify multiple pages & multiple fields to update
array(
'pages' => ['about', 'contact'],
'fields' => ['emails', 'authors']
)
));
```
##### You can also use a function to select a collection of pages
```php
c::set('plugin.updateid', array(
// Auto-update client ID on each project page
array(
'pages' => function () { return site()->find('work')->children(); },
'fields' => 'client'
)
));
```
## Requirements
- [**Kirby**](https://getkirby.com/) 2.3+
## Disclaimer
This field is provided "as is" with no guarantee. Use it at your own risk and always test it yourself before using it in a production environment. If you find any issues, please [create a new issue](https://github.com/brocessing/kirby-updateid/issues/new).
## License
[MIT](https://opensource.org/licenses/MIT)
It is discouraged to use this field in any project that promotes racism, sexism, homophobia, animal abuse, violence or any other form of hate speech.