We’re writing a plugin that is going create Virtual Pages from a third-party API. We’re using a few different Page Models, and thought that if we created a
/models folder inside the plugin folder it would be picked up automagically by Kirby. But apparently, it isn’t.
Our plugin directory has folders like this:
myplugin/ index.php blueprints/ templates/ models/ products.php product.php ....
index.php, we are trying to load the Page Models as shown in the docs:
... 'pageModels' => [ 'product' => 'ProductPage', 'products' => 'ProductsPage' ] ...
…but the Page Model classes don’t load.
We experimented and seem to have found that we need to explicitly include the ‘models’ files before declaring the ‘pageModels’ - for example, like this:
'models' => [ 'product' => include(__DIR__ . '/models/product.php'), 'products' => include(__DIR__ . '/models/products.php') ], 'pageModels' => [ 'product' => 'ProductPage', 'products' => 'ProductsPage' ]
If we merely ‘include’ the model files without also declaring ‘pageModels’, it doesn’t work either. We seem to need to do both: include the ‘models’ files, then declare the ‘pageModels’ in the plugin’s
index.php. Is that how it’s supposed to be done?
I haven’t been able to find an example in the docs that shows where to save model files for a plugin, or any mention that we need to explicitly load them. So, I am wondering whether this is the ‘kirby way’ to do this, or whether we’ve overlooked something really obvious…