Powersearch Indizierung von tt_news

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;
Veröffentlicht unter TYPO3 Extensions
Ein Kommentar auf “Powersearch Indizierung von tt_news
  1. Stephan Kästner sagt:

    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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*