Aaaaaaalso...
ich hab da jetzt mal meine Erfahrung mit den tt_news Hooks gemacht. Nachfolgend mal mein Code, damit andere es leichter haben 🙂
<?php
function extraItemMarkerProcessor($markerArray,$row,$lConf,$parentObject) {
// will be read from conf[] :
$config_linkDesc = 0;
$config_emailPerson = 0;
$config_cacheme = 1;
// initialize stuff
$txdescription = '';
$txlink = '';
$txperson = '';
$txemail = '';
$txdescpart = '';
$txpersonpart = '';
//db access
$fields='*';
//$where='uid='.$row[uid];
$where='uid='.$this->getCat($row);
$table='tt_news_cat';
$result = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields,$table,$where);
$this->echolot($where);
if(!empty($result)) {
while ($line = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($result)) {
$txdescription=$line['tx_bbbcatlinks_description'];
$txlink=$line['tx_bbbcatlinks_link'];
$txperson=$line['tx_bbbcatlinks_person'];
$txemail=$line['tx_bbbcatlinks_email'];
$this->echolot('parsed');
}
}
// design stuff
if ($config_linkDesc)
$txdescpart = $this->linkIt($txdescription, $txlink);
else
$txdescpart = $txdescription;
if ($config_emailPerson)
$txpersonpart = $this->linkIt($txperson, $txemail);
else
$txpersonpart = $txperson;
// final approach
$markerArray['###BBB_DESC###']= $txdescpart;
$markerArray['###BBB_PERSON###']= $txpersonpart;
return $markerArray;
} ?>
Die Marker ###BBB_DESC### und ###BBB_PERSON### müssen im News-Template eingetragen werden, damit es Output gibt - ist klar.
Ich stelle mal zur Diskussion, dass bei ner Abfrage nach UID´s eine While-Schleife unnötig ist. Bin jedenfalls froh, dass ich den Hasen gefunden habe, der mir zwei Tage im Feld gelegen hat.
Um die Abfrage auf tt_news_cat machen zu können, braucht man die UID der Category. Und die tt_news liefert unter dem Feld nur die Tatsache, DASS eine Category verwendet wird -- nicht jedoch die UID dieser.
Das Ganze wird in tt_news_cat_mm verwaltet, und zwar im Feld uid_foreign.
Daher die Funktion getCat($row):
<?php
function getCat ($row) {
//db access
$fields='uid_foreign';
$where='uid_local='.$row[uid];
$table='tt_news_cat_mm';
$cat = 0;
$this->echolot($where.' from tt_news_cat_mm');
$result = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields,$table,$where);
if(!empty($result)) {
while ($line = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($result)) {
$cat=$line['uid_foreign'];
}
}
$this->echolot($cat);
return intval($cat);
}
?>
Man sieht dem Code eventuell an, dass das meine erste Extension ist und ich habe noch viele Fragen aber die stelle ich ein anderes Mal in diesem Forum 🙂
Zwei Stück stelle ich Euch, die sich den PHP Code anschauen aber dann doch:
-- Lässt sich die Query noch optimieren? Die DB rödelt halt echt, und der Output verzögert sich ein paar Sekunden, weil ich 70 Kategorien habe, und viele kategorisierte News auf einer Seite anzeige. PHP & SQL improving comments welcome.
best wishes & thx in advance,
bbb