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'].': ' : '&nbsp;'; $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

Antwort per Email an