Hi,
ich würde an deiner Stelle einfach im Inhaltselement einen weiteren Wrapper (div) hinzufügen. Das ist wesentlich einfacher & auch logischer. In einem Artikel können ja mehrere Inhaltselemente angezeigt werden.
Contao stellt auch zuerst den Artikel bereit & danach die sich darin befindenden Inhaltselemente. Du kannst also (soweit ich weiß) im Inhaltselement nicht mehr den Artikel ändern, weil es einfach zu spät ist.
Aber ich zeige dir trotzdem mal eine Möglichkeit mit dem bisher nicht dokumentierten Hook "getArticle". Ich weiß allerdings nicht wie sich das auf die Performance auswirkt, da in dem Fall bei jedem Artikel nochmal geschaut wird, ob es ein Inhaltselement von deinem Typ beinhaltet.
In deinem Modulordner/config/config.php:
PHP-Code:
$GLOBALS['TL_HOOKS']['getArticle'][] = array('MyClass','myGetArticle');
Autloader nicht vergessen.
In deiner MyClass.php:
PHP-Code:
<?php
class MyClass extends \Frontend
{
public function myGetArticle($objArticle)
{
$ceType = 'image'; // hier müsste dann der Name bzw. Typ deines Inhaltelementes rein.
$newCssClass = 'deineNeueKlasse'; // und das ist der Name deiner zusätzlichen Klasse für das mod_article Template.
// jetzt suchen wir bei jedem Artikel bevor die Inhaltselemente im Artikel geladen werden bereits die zugehörigen Inhaltselemente, die zu deinem CE-Type passen & der parent Table "tl_article" angehören.
$objContentElements = \ContentModel::findAll(
array
(
'column' => array('pid=?','type=?','ptable=?'),
'value' => array($objArticle->id, $ceType, 'tl_article')
)
);
if (!$objContentElements)
{
return '';
}
// hier setzen wir die neue CSS Klasse mit hinein.
if(is_array($objArticle->classes))
{
$objArticle->classes = array_merge($objArticle->classes, array($newCssClass));
}else{
$objArticle->classes = array($newCssClass);
}
}
}
Ich hab echt keine Ahnung, ob das so schlau ist. Vielleicht kann jemand anderes was dazu sagen?
Funktioniert aber auf jeden Fall ;-)