Ich habe mir kurz Zeit genommen, und die Indizierung der Powersearch Extension für tt_news umgesetzt:
/powersearch/lib/class.PowerSearch.php anfügen:
const TTNEWS = 8;
/powersearchindexlucene/ext_conf_template.txt anfügen:
# cat=basic/enable; type=string; label=tt_news detailpage tt_newsPage = 3594
/powersearchindexlucene/lib/class.PowerSearchIndexerTTnews.php neu:
class PowerSearchIndexerTTnews extends PowerSearchIndexerBase { public function run($extConf) { $dbh = PowerSearchFactory::createPDO(); $stmt = 'SELECT tt_news.uid, tt_news.datetime, tt_news.crdate, tt_news.title, tt_news.short, tt_news.bodytext FROM tt_news WHERE tt_news.hidden + tt_news.deleted=0'; $res = $dbh->query($stmt); foreach ($res as $news) { $title = trim(iconv("UTF-8","ISO-8859-1", str_replace('ß','ss',$news['title']))); $bodytext = trim(iconv("UTF-8","ISO-8859-1", str_replace('ß','ss',$news['bodytext']))); $crdate = (intval($news['datetime'])>0?intval($news['datetime']):intval($news['crdate'])); $news_id = $news['uid']; if (trim($bodytext) != '') { $elements = array( 'ref' => $extConf['tt_newsPage'].'#'.$news_id.'#'.$crdate, 'type' => PowerSearch::TTNEWS, 'text' => $this->prepareText($bodytext . ' ' . $title), 'extract' => PowerSearchUtils::limit($this->prepareText($bodytext), $extConf['index_limit_extract']), 'title' => PowerSearchUtils::limit($this->prepareText($title), $extConf['index_limit_title']), 'crdate' => $crdate ); $doc = $this->createDocument($elements); $this->addDocument($doc); } } } }
/powersearchui/pi1/template.html anfügen:
<div class="news-list-container"> <div class="news-list-item"><span class="news-latest-date">###DATE###</span> <div class="clear"></div> <h3><a href="###LINK###">###TITLE###</a></h3><p>###EXTRACT###</p> </div> </div>
/powersearchui/lib/class.PowerSearchUITemplateTTnews.php neu:
class PowerSearchUITemplateTTnews extends PowerSearchUITemplateBase implements PowerSearchUITemplateInterface { protected $template = ''; public function setTemplate( &$template ) { $this->template = $this->t3base->cObj->getSubpart( $template, '###RESULTTTNEWS###' ); } public function getString( array &$items, array &$list ) { $format = '%A, %d. %B %Y'; foreach( $items as $key => $item ) { list($page,$ttnewsid,$crdate) = explode('#',$key,3); $item[1]['###DATE###'] = strftime ($format,$crdate); $baseurl = ($GLOBALS['TSFE']->tmpl->setup['config.']['baseURL'] ? $GLOBALS['TSFE']->tmpl->setup['config.']['baseURL'] : 'http://'.$_SERVER['HTTP_HOST'].'/'); $item[1]['###LINK###'] = $this->t3base->pi_getPageLink($page,'',array('tx_ttnews[tt_news]'=>$ttnewsid,'tx_ttnews[year]'=>strftime('%Y',$crdate),'tx_ttnews[month]'=>strftime('%m',$crdate),'tx_ttnews[day]'=>strftime('%d',$crdate))); $list[$item[0]] = $this->t3base->cObj->substituteMarkerArray( $this->template, $item[1] ); } } }
/powersearchui/lib/class.PowerSearchUIFactory.php anfügen:
case PowerSearch::TTNEWS: $class = 'PowerSearchUITemplateTTnews'; break;
Habe mich an diese Anleitung gehalten um tt_news zu indizieren.
Aber irgendetwas scheint nicht zu funktionieren und ich finde den Fehler nicht.
– const TTNEWS = nach Typoweb eingetragen;
– tt_newsPage = Nach Typoweb eingetragen;
– Klassen in vorgegebener Struktur angelegt.
Ich weiß nicht ob noch was fehlt oder wo der Fehler liegen kann.
Bei den News wird nur die Übersichtseite, aber nicht die Detailseite gefunden.
Kann jemand helfen.