ok, nachdem ich mir die Routine im Quelltext angeschaut habe, habe ich eine Erklärung für das Verhalten.
Die Routine sucht sich min-date und max-date aus der Datenbank und macht dann für jedes Intervall eine DB-Abfrage wieviele Einträge es in dem jeweiligen Intervall gibt. Da mein Menu bereits 12 Jahre zurück liegt sind das fette 140 DB-Abfragen!!
Aber nicht nur das - nebenbei hatte ich noch 6 undatierte Einträge - die das min-val auf den 01.01.1970 gesetzt haben. so kam es, dass zum Aufbau des Menus volle 440 DB-Abfragen gestellt werden mussten - kein Wunder, dass es nicht fix läuft
da ich davon ausgehe, dass meine Redakteure jeden Monat Beiträge einstellen - und ich auf die Zahl der Beiträge im Menu nicht so scharf bin, habe ich die Intervall-DB-Abfragen einfach rausgenommen und lasse mir nun alle Monate zwischen min-date und max-date ausgeben.
class.tx_ttnews.php ~ Zeile 410:
PHP-Code:
while (list($k, $v) = each($dateArr)) {
if (!isset($dateArr[$k + 1])) {
break;
}
$periodInfo = array();
$periodInfo['start'] = $dateArr[$k];
/* $periodInfo['stop'] = $dateArr[$k + 1]-1;
$periodInfo['HRstart'] = date('d-m-Y', $periodInfo['start']);
$periodInfo['HRstop'] = date('d-m-Y', $periodInfo['stop']);
$periodInfo['quarter'] = floor(date('m', $dateArr[$k]) / 3) + 1;
// execute a query to count the archive periods
$selectConf['selectFields'] = 'count(distinct(uid))';
$selectConf['where'] = $selectConf2['where'] . ' AND datetime>=' . $periodInfo['start'] . ' AND datetime<' . $periodInfo['stop'];
$res = $this->exec_getQuery('tt_news', $selectConf);
$row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
$periodInfo['count'] = $row[0];
*/
$periodInfo['count']=1;
if (!$this->conf['archiveMenuNoEmpty'] || $periodInfo['count']) {
$periodAccum[] = $periodInfo;
}
}
Soviel zur Lösung...