edit: Für Contao < 3.5.4:
Ich musste jetzt auch gerade in einem Projekt verhindern, dass für die Listenansicht der Events die tl_content ausgelesen wird. Die Ladezeit der Startseite, auf der 10 Events angezeigt werden verringerte sich durch den Eingriff von 12 auf 4 Sekunden, obwohl eigentlich nur Textelemente und Einzelbilder auf den Detailseiten der Events vorhanden sind.
SgdModuleEventlist.php:
PHP-Code:
/**
* Class SgdModuleEventlist
* This class was introduced, because Events->addEvent(...) took too long to load all content
* elements, although those elements are not needed in the event lists
*
* it is connected to lists via config.php:
* $GLOBALS['FE_MOD']['events']['eventlist'] = "SgdModuleEventlist";
*
* @package Sgd
*/
class SgdModuleEventlist extends ModuleEventlist
{
/**
* Add an event to the array of active events
* @param object
* @param integer
* @param integer
* @param string
* @param integer
* @param integer
* @param integer
*/
protected function addEvent($objEvents, $intStart, $intEnd, $strUrl, $intBegin, $intLimit, $intCalendar)
{
if($objEvents->source == 'default') {
$objEvents->source = 'fake'; // 2016-06-14 ME: normally, source is 'default', and this 'fake' prevents addEvent from loading tl_content
}
parent::addEvent($objEvents, $intStart, $intEnd, $strUrl, $intBegin, $intLimit, $intCalendar);
}
}
ich wollte hier mal meine Lösung für Contao 3.4 rein stellen, falls jemand auch sowas braucht.
Man muss seine Klasse natürlich dem ClassLoader über die autoload.php bekannt machen und in der config.php die Originalklasse zur Handhabung von Eventliste-Modulen ersetzen, was natürlich nur geht, wenn man in seinem Projekt angibt, dass das Veranstaltungsmodul vorher geladen werden soll.
config.php:
PHP-Code:
$GLOBALS['FE_MOD']['events']['eventlist'] = "SgdModuleEventlist";
autoload.ini:
PHP-Code:
requires[] = "calendar"
autoload.php:
PHP-Code:
/**
** Register the classes
**/
ClassLoader::addClasses(array
(
'Sgd\SgdModuleEventlist'=> 'system/modules/sgd/classes/SgdModuleEventlist.php'
));