Bist du schon weitergekommen damit? Ich hab mir das aus Interesse mal angesehen, aber weder in objPage noch in den globals was gefunden.
Dann dachte ich zuerst, dass es über Events gehen könnte, habe aber nichts passendes gefunden, das rechtzeitig ausgelöst wird und das Model liefert.
Ich hab dann mal diese Funktion geschrieben, die dir die Namen der eingebundenen Metamodels als Array zurückgibt.
Ist nicht besonders elegant geschrieben oder sorgfältig getestet, von daher Vorsicht - eher als proof of concept gedacht Lässt sich bestimmt eleganter lösen.
Es wird bisher überhaupt nicht darauf getestet, ob die Models den auto_item-Parameter verwenden. Das wär natürlich notwendig. Dazu müsste man die Filter direkt überprüfen - die PID (=MetaModel) hast du ja jetzt.
Wenn man Module oder Artikel mit Liste per insert-Tag einsetzt, wird es wahrscheinlich auch nicht funktionieren - das hab ich aber nicht getestet.
PHP-Code:
private function getCurrentMetamodel() {
global $objPage;
$curModel = [];
$layout = \LayoutModel::findByPk($objPage->layout);
$modules = unserialize($layout->modules);
foreach ($modules as $module) {
$objModule = ( \ModuleModel::findByPk($module['mod'] ));
if ($objModule->metamodel_layout) {
$factory = \MetaModels\Factory::getDefaultFactory();
$modelName = $factory->translateIdToMetaModelName($objModule->metamodel);
if ($modelName) $curModel[] = $modelName;
};
}
$sections = \Controller::getPageSections();
foreach ($sections as $section) {
$objArticles = \ArticleModel::findPublishedByPidAndColumn($objPage->id, "main");
if ($objArticles) {
foreach($objArticles as $article ) {
$contents = \ContentModel::findPublishedByPidAndTable($article->id, "tl_article");
if ($contents) {
foreach( $contents as $content ) {
$factory = \MetaModels\Factory::getDefaultFactory();
$modelName = $factory->translateIdToMetaModelName($content->metamodel);
if ($modelName) $curModel[] = $modelName;
};
}
}
};
}
return array_unique($curModel);
}
/Edit: Ja, auto_item in mehreren Models geht - deshalb gibt's im Moment ein Array zurück. Die Frage ist, inwiefern der Fall in der Praxis wirklich vorkommt - beide Models würden dann ja die gleichen Werte im alias benötigen.