Hi zusammen,
hab mich jetzt dazu entschlossen, das Ganze via XCLASS zu machen.
Hier ist also meine Klasse in meiner Extension:
class ux_tx_indexedsearch extends tx_indexedsearch {
var $prefixId = 'ux_tx_indexedsearch'; // Same as
class name
var $scriptRelPath = 'class.ux_tx_indexedsearch.php'; // Path to this
script relative to the extension dir.
var $extKey = 'tx_cbmorelink'; // The extension key.
var $pi_checkCHash = true;
/**
* The main method of the PlugIn
*
* @param string $content: The PlugIn content
* @param array $conf: The PlugIn configuration
* @return The content that is displayed on the website
*/
function prepareResultRowTemplateData($row, $headerOnly) {
// Initialize:
$specRowConf = $this->getSpecialConfigForRow($row);
$CSSsuffix =
$specRowConf['CSSsuffix']?'-'.$specRowConf['CSSsuffix']:'';
// If external media, link to the media-file instead.
if ($row['item_type']) { // External media
if ($row['show_resume']) { // Can link
directly.
$title = '<a
href="'.htmlspecialchars($row['data_filename']).'">'.htmlspecialchars($this->makeTitle($row)).'</a>';
// INSERTED BY CHRIS
$more = '<a
href="'.htmlspecialchars($row['data_filename']).'">Mehr</a>';
} else { // Suspicious, so linking to page instead...
$copy_row = $row;
unset($copy_row['cHashParams']);
$title =
$this->linkPage($row['page_id'],htmlspecialchars($this->makeTitle($row)),$copy_row);
// INSERTED BY CHRIS
$more =
$this->linkPage($row['page_id'],htmlspecialchars($this->makeTitle($row)),$copy_row);
}
} else { // Else the page:
// Prepare search words for markup in content:
if ($this->conf['forwardSearchWordsInResultLink']) {
$markUpSwParams = array('no_cache' => 1);
foreach ($this->sWArr as $d) {
$markUpSwParams['sword_list'][] =
$d['sword'];
}
} else {
$markUpSwParams = array();
}
$title =
$this->linkPage($row['data_page_id'],htmlspecialchars($this->makeTitle($row)),$row,$markUpSwParams);
// INSERTED BY CHRIS
$more =
$this->linkPage($row['data_page_id'],'Mehr',$row,$markUpSwParams);
}
$tmplContent = array();
$tmplContent['title'] = $title;
// INSERTED BY CHRIS
$tmplContent['morelink'] = $more;
$tmplContent['result_number'] = $this->conf['show.']['resultNumber'] ?
$row['result_number'].': ' : ' ';
$tmplContent['icon'] =
$this->makeItemTypeIcon($row['item_type'],'',$specRowConf);
$tmplContent['rating'] = $this->makeRating($row);
$tmplContent['description'] =
$this->makeDescription($row,$this->piVars['extResume'] && !$headerOnly?0:1);
$tmplContent = $this->makeInfo($row,$tmplContent);
$tmplContent['access'] =
$this->makeAccessIndication($row['page_id']);
$tmplContent['language'] = $this->makeLanguageIndication($row);
$tmplContent['CSSsuffix'] = $CSSsuffix;
// Post processing with hook.
if ($hookObj =
$this->hookRequest('prepareResultRowTemplateData_postProc')) {
$tmplContent =
$hookObj->prepareResultRowTemplateData_postProc($tmplContent, $row,
$headerOnly);
}
return $tmplContent;
}
}
In meiner ext_localconf.php steht folgendes:
<?php
if (!defined ('TYPO3_MODE')) {
die ('Access denied.');
}
$TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/indexed_search/pi/class.tx_indexedsearch.php']
= t3lib_extMgm::extPath($_EXTKEY).'class.ux_tx_indexedsearch.php';
?>
Wenn ich nun die Extension installiere, bleibt der Bildschirm nach
erfolgter Suche leer. Hat vielleicht jemand ne Idee, wie man die
prepareResultRowTemplateData Funktion überschreiben kann?
Rein theoretisch müsste es ja so funktionieren...
Vielen Dank und beste Grüße,
Chris
Am 01.02.2010 13:56, schrieb Chris Bernhard:
Hi mal wieder :-)
Hab jetzt die ganze Sache folgendermaßen gelöst. Quick and dirty:
function prepareResultRowTemplateData($row, $headerOnly) {
// Initialize:
$specRowConf = $this->getSpecialConfigForRow($row);
$CSSsuffix = $specRowConf['CSSsuffix']?'-'.$specRowConf['CSSsuffix']:'';
// If external media, link to the media-file instead.
if ($row['item_type']) { // External media
if ($row['show_resume']) { // Can link directly.
$title = '<a
href="'.htmlspecialchars($row['data_filename']).'">'.htmlspecialchars($this->makeTitle($row)).'</a>';
// INSERTED BY CHRIS
$more = '<a href="'.htmlspecialchars($row['data_filename']).'">Mehr</a>';
} else { // Suspicious, so linking to page instead...
$copy_row = $row;
unset($copy_row['cHashParams']);
$title =
$this->linkPage($row['page_id'],htmlspecialchars($this->makeTitle($row)),$copy_row);
// INSERTED BY CHRIS
$more =
$this->linkPage($row['page_id'],htmlspecialchars($this->makeTitle($row)),$copy_row);
}
} else { // Else the page:
// Prepare search words for markup in content:
if ($this->conf['forwardSearchWordsInResultLink']) {
$markUpSwParams = array('no_cache' => 1);
foreach ($this->sWArr as $d) {
$markUpSwParams['sword_list'][] = $d['sword'];
}
} else {
$markUpSwParams = array();
}
$title =
$this->linkPage($row['data_page_id'],htmlspecialchars($this->makeTitle($row)),$row,$markUpSwParams);
// INSERTED BY CHRIS
$more = $this->linkPage($row['data_page_id'],'Mehr',$row,$markUpSwParams);
}
$tmplContent = array();
$tmplContent['title'] = $title;
// INSERTED BY CHRIS
$tmplContent['morelink'] = $more;
.....
Bei nem Update von Typo3 ist die Sache natürlich wieder futsch.
Wie kann ich denn die
function prepareResultRowTemplateData
mit nem Hook überschreiben? Das leuchtet mir jetzt noch nicht so ganz ein.
Vielen Dank und beste Grüße,
Chris
Am 31.01.2010 20:53, schrieb Chris Bernhard:
Hi zusammen,
ich möchte in die Suchergebnisliste von Indexed Search
einen "Mehr..." Link integrieren.
Mit Bordmitteln scheint das ja nicht möglich zu sein,
da der Marker ###TITLE### ja einen kompletten Link rendert.
Gibts für meine Zwecke bereits einen entsprechenden Marker,
den ich eventuell übersehen habe oder soll ich hierfür
einen kleinen Hook schreiben? Was schlagt Ihr denn vor?
Dankeschön und beste Grüße vom Chris
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german