Einzelnen Beitrag anzeigen
  #2  
Alt 21.06.07, 21:44
Benutzerbild von Cimmie
Cimmie Cimmie ist offline
Forum Aktivist
 
Registriert seit: 06.10.04
Beiträge: 86
Cimmie eine Nachricht über ICQ schicken
Beitrag

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...
Mit Zitat antworten