MetaInfos nur für bestimmte Ebenen einblenden
REDAXO bietet aktuell zwar die Möglichkeit Meta-Felder ab einer bestimmten Kategorie darzustellen, mit der nachfolgenden Lösung ist es jedoch möglich, Metafelder nur in einem festgelegten Level der Struktur anzuzeigen. Zur Steuerung der Dartsellung werden hier Fieldsets verwendet, die nur eingeblendet werden, wenn man sich im gewünschten Level befindet.
Achtung! Die Felder werden nur per CSS ausgeblendet. Es sollten ggf. Maßnahmen ergriffen werden ein Autofill zu vermeiden.
Metainfo
MetaInfo
Feld legend
anlegen mit den Feldattributen data-hide-levels data-show-level="1"
Damit sagt man, dass alles was in diesem fieldset
liegt, nur auf der ersten Ebene angezeigt wird.
Bei anderen Ebenen entsprechend das Level anpassen.
Wichtig:
Ganz am Ende ein Feld legend
anlegen damit der Button Metadaten aktualisieren
nicht verschwindet sobald die MetaInfos versteckt werden.
CSS
CSS-Datei meta-info.css
im Assets-Ordner des Projekt-AddOns anlegen.
.rex-main-sidebar [data-hide-levels],
.rex-main-sidebar [data-hide-levels] ~ * {
display: none;
}
[data-structure-level="1"] .rex-main-sidebar [data-show-level="1"],
[data-structure-level="1"] .rex-main-sidebar [data-show-level="1"] ~ * {
display: block;
}
[data-structure-level="2"] .rex-main-sidebar [data-show-level="2"],
[data-structure-level="2"] .rex-main-sidebar [data-show-level="2"] ~ * {
display: block;
}
[data-structure-level="3"] .rex-main-sidebar [data-show-level="3"],
[data-structure-level="3"] .rex-main-sidebar [data-show-level="3"] ~ * {
display: block;
}
[data-structure-level="4"] .rex-main-sidebar [data-show-level="4"],
[data-structure-level="4"] .rex-main-sidebar [data-show-level="4"] ~ * {
display: block;
}
[data-structure-level="5"] .rex-main-sidebar [data-show-level="5"],
[data-structure-level="5"] .rex-main-sidebar [data-show-level="5"] ~ * {
display: block;
}
boot.php
Den nachfolgenden Code in der boot.php des project-AddOns einsetzen.
if (\rex::isBackend()) {
if (\rex_be_controller::getCurrentPage() == 'content/edit') {
\rex_view::addCssFile($this->getAssetsUrl('css/meta-info.css'));
\rex_extension::register('OUTPUT_FILTER', function(\rex_extension_point $ep) {
$article = \rex_article::get(rex_request('article_id', 'int'));
if ($article) {
$level = count($article->getPathAsArray());
$ep->setSubject(
str_replace(
'class="rex-main-frame"',
'class="rex-main-frame" data-structure-level="' . $level . '"',
$ep->getSubject()
)
);
}
});
}
}