my blueprint
title: Expose
fields:
title:
label: Titel
type: text
datenfelder:
label: Tabelle
type: structure
entry: >
{{dftitle}} {{dftext}}
default:
-
dftitle: Mietfläche
dftext: "7.000 {{m2}}"
-
dftitle: Grundriss
dftext: " "
fields:
dftitle:
label: Titel
type: text
required: true
dftext:
label: Text
type: textarea
buttons: false
required: true
in my site.php
function blueprintStructureFromPage($page) {
$yml = Yaml::decode(file_get_contents(kirby()->roots->blueprints() . DS . $page->template() . '.yml'));
if(!$yml || count($yml) == 0) return null;
$blueprint = new Structure($yml);
$blueprint->set('fields', new Structure($blueprint->fields()));
foreach ($blueprint->fields() as $fkey => $fval) {
$blueprint->get('fields')->set($fkey, new Structure($fval));
// NOTE: no more deeper nesting implemented
}
return $blueprint;
}
in my config.php
kirby()->hook('panel.page.create', function($page) {
if($page->template() == 'expose') {
$data = array();
$blue = blueprintStructureFromPage($page);
foreach ($blue->fields()->datenfelder()->default() as $default) {
$a = print_r(a::get($default, 'dftitle'), true);
$b = print_r(a::get($default, 'dftext'), true);
if($a && $b) array_push($data, ['dftitle' => $a, 'dftext' => $b]);;
}
try {
$page->update(['datenfelder' => yaml::encode($data)]);
}
catch(Exception $ex) {}
}
});