Hauptmenü

Werkzeuge

Kategorien

Archiv

TYPO3 Hook um den Untertitel (subtitle) anstatt des Titels (title) in den indexed_search Ergebnissen zu verwenden

Erstellt in Allgemein am 20. März 2016 vom Daschmi

Möchte man den Untertitel (subtitle) statt des Titels (title) in den Suchergebnissen der indexed_search TYPO3 Extension verwenden, so kann man nicht einfach ###TITLE### durch ###SUBTITLE### ersetzen. Das funktioniert leider nicht. Ich habe dieses Problem gelöst, in dem ich den Hook „prepareResultRowTemplateData_postProc“ verwendet habe. Hier die Hook Klasse (class.pihook.php):

<?php

  class tx_indexedsearch_pihook
  {

      var $pObj;  

      function prepareResultRowTemplateData_postProc($tmplContent, $row, $headerOnly)
      {

        $subtitle = '';

        if ($GLOBALS['TSFE']->sys_language_uid > 0)
        {

          $result = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows("subtitle", "pages_language_overlay", "
            sys_language_uid = ".$GLOBALS['TYPO3_DB']->quoteStr($GLOBALS['TSFE']->sys_language_uid, 'pages_language_overlay')." AND
            pid = ".$GLOBALS['TYPO3_DB']->quoteStr($row['page_id'], 'pages_language_overlay')." ".$this->pObj->cObj->enableFields('pages_language_overlay'));
          $subtitle = $result[0]['subtitle'];

        }
        else
        {

          $result = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows("subtitle", "pages", " uid = ".$GLOBALS['TYPO3_DB']->quoteStr($row['page_id'], 'pages')." ".$this->pObj->cObj->enableFields('pages'));
          $subtitle = $result[0]['subtitle'];

        }

        if (strlen(trim($subtitle)) > 0) $tmplContent['SUBTITLEIFSET'] = str_replace($row['item_title'], $subtitle, $tmplContent['title']);
        else $tmplContent['SUBTITLEIFSET'] = $tmplContent['title'];

        return $tmplContent;

      }    

  }

?>

Der Hook selbst muss dann in einer ext_localconf.php registriert werden:

$TYPO3_CONF_VARS['EXTCONF']['indexed_search']['pi1_hooks']['prepareResultRowTemplateData_postProc'] = 'fileadmin/class.pihook.php:&tx_indexedsearch_pihook';