[FEATURE] Make hardcoded parameters configurable via TS 97/20197/7
authorRalf Hettinger <ng@ralfhettinger.de>
Fri, 26 Apr 2013 17:33:35 +0000 (19:33 +0200)
committerGeorg Ringer <georg.ringer@gmail.com>
Thu, 8 Oct 2015 05:05:37 +0000 (07:05 +0200)
The following TS properties now configure former php defined parameters:
[plugin.tx_indexedsearch.results.]
* titleCropAfter = 50
* titleCropSignifier = ...
* summaryCropAfter = 180
* summaryCropSignifier =
* hrefInSummaryCropAfter = 60
* hrefInSummaryCropSignifier = ...
* markupSW_summaryMax = 300
* markupSW_postPreLgd = 60
* markupSW_postPreLgd_offset = 5
* markupSW_divider = ...
Every TS property has the stdWrap property, too.
Default settings do not change old behaviour.

Resolves: #20875
Releases: master
Change-Id: I01f4807cab208631233bf219dd987ba69da61344
Reviewed-on: http://review.typo3.org/20197
Reviewed-by: Tymoteusz Motylewski <t.motylewski@gmail.com>
Tested-by: Tymoteusz Motylewski <t.motylewski@gmail.com>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
typo3/sysext/core/Documentation/Changelog/master/Feature-20875-MakeHardcodedIndexedSearchParametersConfigurableViaTS.rst [new file with mode: 0644]
typo3/sysext/indexed_search/Classes/Controller/SearchController.php
typo3/sysext/indexed_search/Classes/Controller/SearchFormController.php
typo3/sysext/indexed_search/Configuration/TypoScript/setup.txt
typo3/sysext/indexed_search/ext_typoscript_setup.txt

diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-20875-MakeHardcodedIndexedSearchParametersConfigurableViaTS.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-20875-MakeHardcodedIndexedSearchParametersConfigurableViaTS.rst
new file mode 100644 (file)
index 0000000..8e0701a
--- /dev/null
@@ -0,0 +1,30 @@
+==============================================================================
+Feature: #20875 - Make hardcoded indexed_search parameters configurable via TS
+==============================================================================
+
+Description
+===========
+
+The following TS properties can now be configured for indexed search
+
+.. code-block:: [typoscript]
+
+       [plugin.tx_indexedsearch.results. || plugin.tx_indexedsearch.settings.results.]
+       titleCropAfter = 50
+       titleCropSignifier = ...
+       summaryCropAfter = 180
+       summaryCropSignifier =
+       hrefInSummaryCropAfter = 60
+       hrefInSummaryCropSignifier = ...
+       markupSW_summaryMax = 300
+       markupSW_postPreLgd = 60
+       markupSW_postPreLgd_offset = 5
+       markupSW_divider = ...
+
+Every TS property has the stdWrap property, too.
+
+
+Impact
+======
+
+Default settings do not change old behaviour.
index 4f1b144..3bd9426 100644 (file)
@@ -158,6 +158,9 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                if (!is_array($searchData)) {
                        $searchData = array();
                }
+
+               $this->loadSettings();
+
                // setting default values
                if (is_array($this->settings['defaultOptions'])) {
                        $searchData = array_merge($this->settings['defaultOptions'], $searchData);
@@ -406,6 +409,7 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                        }
                }
                $title = $resultData['item_title'] . $resultData['titleaddition'];
+               $title = $GLOBALS['TSFE']->csConvObj->crop('utf-8', $title, $this->settings['results.']['titleCropAfter'], $this->settings['results.']['titleCropSignifier']);
                // If external media, link to the media-file instead.
                if ($row['item_type']) {
                        if ($row['show_resume']) {
@@ -437,7 +441,11 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                $resultData['title'] = $title;
                $resultData['icon'] = $this->makeItemTypeIcon($row['item_type'], '', $specRowConf);
                $resultData['rating'] = $this->makeRating($row);
-               $resultData['description'] = $this->makeDescription($row, $this->searchData['extResume'] && !$headerOnly ? 0 : 1);
+               $resultData['description'] = $this->makeDescription(
+                       $row,
+                       (bool)!($this->searchData['extResume'] && !$headerOnly),
+                       $this->settings['results.']['summaryCropAfter']
+               );
                $resultData['language'] = $this->makeLanguageIndication($row);
                $resultData['size'] = GeneralUtility::formatSize($row['item_size']);
                $resultData['created'] = $row['item_crdate'];
@@ -635,13 +643,13 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                                $res = $this->getDatabaseConnection()->exec_SELECTquery('*', 'index_fulltext', 'phash=' . (int)$row['phash']);
                                if ($ftdrow = $this->getDatabaseConnection()->sql_fetch_assoc($res)) {
                                        // Cut HTTP references after some length
-                                       $content = preg_replace('/(http:\\/\\/[^ ]{60})([^ ]+)/i', '$1...', $ftdrow['fulltextdata']);
+                                       $content = preg_replace('/(http:\\/\\/[^ ]{' . $this->settings['results.']['hrefInSummaryCropAfter'] . '})([^ ]+)/i', '$1...', $ftdrow['fulltextdata']);
                                        $markedSW = $this->markupSWpartsOfString($content);
                                }
                                $this->getDatabaseConnection()->sql_free_result($res);
                        }
                        if (!trim($markedSW)) {
-                               $outputStr = $GLOBALS['TSFE']->csConvObj->crop('utf-8', $row['item_description'], $length);
+                               $outputStr = $GLOBALS['TSFE']->csConvObj->crop('utf-8', $row['item_description'], $length, $this->settings['results.']['summaryCropSignifier']);
                                $outputStr = htmlspecialchars($outputStr);
                        }
                        $output = $outputStr ?: $markedSW;
@@ -672,10 +680,10 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
                // Split and combine:
                $parts = preg_split('/' . $regExString . '/i', ' ' . $str . ' ', 20000, PREG_SPLIT_DELIM_CAPTURE);
                // Constants:
-               $summaryMax = 300;
-               $postPreLgd = 60;
-               $postPreLgd_offset = 5;
-               $divider = ' ... ';
+               $summaryMax = $this->settings['results.']['markupSW_summaryMax'];
+               $postPreLgd = $this->settings['results.']['markupSW_postPreLgd'];
+               $postPreLgd_offset = $this->settings['results.']['markupSW_postPreLgd_offset'];
+               $divider = $this->settings['results.']['markupSW_divider'];
                $occurencies = (count($parts) - 1) / 2;
                if ($occurencies) {
                        $postPreLgd = MathUtility::forceIntegerInRange($summaryMax / $occurencies, $postPreLgd, $summaryMax / 2);
@@ -1373,4 +1381,44 @@ class SearchController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControlle
        protected function getDatabaseConnection() {
                return $GLOBALS['TYPO3_DB'];
        }
+
+
+       /**
+        * Load settings and apply stdWrap to them
+        */
+       protected function loadSettings() {
+               if(!is_array($this->settings['results.'])) {
+                       $this->settings['results.'] = array();
+               }
+               $typoScriptArray = $this->typoScriptService->convertPlainArrayToTypoScriptArray($this->settings['results']);
+
+               $this->settings['results.']['summaryCropAfter'] = MathUtility::forceIntegerInRange(
+                       $GLOBALS['TSFE']->cObj->stdWrap($typoScriptArray['summaryCropAfter'], $typoScriptArray['summaryCropAfter.']),
+                       10, 5000, 180
+               );
+               $this->settings['results.']['summaryCropSignifier'] = $GLOBALS['TSFE']->cObj->stdWrap($typoScriptArray['summaryCropSignifier'], $typoScriptArray['summaryCropSignifier.']);
+               $this->settings['results.']['titleCropAfter'] = MathUtility::forceIntegerInRange(
+                       $GLOBALS['TSFE']->cObj->stdWrap($typoScriptArray['titleCropAfter'], $typoScriptArray['titleCropAfter.']),
+                       10, 500, 50
+               );
+               $this->settings['results.']['titleCropSignifier'] = $GLOBALS['TSFE']->cObj->stdWrap($typoScriptArray['titleCropSignifier'], $typoScriptArray['titleCropSignifier.']);
+               $this->settings['results.']['markupSW_summaryMax'] = MathUtility::forceIntegerInRange(
+                       $GLOBALS['TSFE']->cObj->stdWrap($typoScriptArray['markupSW_summaryMax'], $typoScriptArray['markupSW_summaryMax.']),
+                       10, 5000, 300
+               );
+               $this->settings['results.']['markupSW_postPreLgd'] = MathUtility::forceIntegerInRange(
+                       $GLOBALS['TSFE']->cObj->stdWrap($typoScriptArray['markupSW_postPreLgd'], $typoScriptArray['markupSW_postPreLgd.']),
+                       1, 500, 60
+               );
+               $this->settings['results.']['markupSW_postPreLgd_offset'] = MathUtility::forceIntegerInRange(
+                       $GLOBALS['TSFE']->cObj->stdWrap($typoScriptArray['markupSW_postPreLgd_offset'], $typoScriptArray['markupSW_postPreLgd_offset.']),
+                       1, 50, 5
+               );
+               $this->settings['results.']['markupSW_divider'] = $GLOBALS['TSFE']->cObj->stdWrap($typoScriptArray['markupSW_divider'], $typoScriptArray['markupSW_divider.']);
+               $this->settings['results.']['hrefInSummaryCropAfter'] = MathUtility::forceIntegerInRange(
+                       $GLOBALS['TSFE']->cObj->stdWrap($typoScriptArray['hrefInSummaryCropAfter'], $typoScriptArray['hrefInSummaryCropAfter.']),
+                       10, 400, 60
+               );
+               $this->settings['results.']['hrefInSummaryCropSignifier'] = $GLOBALS['TSFE']->cObj->stdWrap($typoScriptArray['hrefInSummaryCropSignifier'], $typoScriptArray['hrefInSummaryCropSignifier.']);
+       }
 }
index 9b74f5a..9884176 100755 (executable)
@@ -17,6 +17,8 @@ namespace TYPO3\CMS\IndexedSearch\Controller;
 use TYPO3\CMS\Core\Html\HtmlParser;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\IndexedSearch\Utility;
+use TYPO3\CMS\Core\Utility\MathUtility;
+use TYPO3\CMS\Lang\LanguageService;
 
 /**
  * Index search frontend
@@ -229,7 +231,10 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin {
                if ($this->piVars['sword_prev_include'] && $this->piVars['sword_prev']) {
                        $this->piVars['sword'] = trim($this->piVars['sword_prev']) . ' ' . $this->piVars['sword'];
                }
-               $this->piVars['results'] = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($this->piVars['results'], 1, 100000, $this->defaultResultNumber);
+               $this->piVars['results'] = MathUtility::forceIntegerInRange($this->piVars['results'], 1, 100000, $this->defaultResultNumber);
+               // Make sure that some cropping and markup constants used later are defined
+               $this->loadSettings();
+
                // Selector-box values defined here:
                $this->optValues = array(
                        'type' => array(
@@ -534,7 +539,7 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin {
                if ($res) {
                        $totalSearchResultCount = $this->databaseConnection->sql_num_rows($res);
                        // Total search-result count
-                       $currentPageNumber = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($this->piVars['pointer'], 0, floor($totalSearchResultCount / $this->piVars['results']));
+                       $currentPageNumber = MathUtility::forceIntegerInRange($this->piVars['pointer'], 0, floor($totalSearchResultCount / $this->piVars['results']));
                        // The pointer is set to the result page that is currently being viewed
                        // Initialize result accumulation variables:
                        $positionInSearchResults = 0;
@@ -663,7 +668,7 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin {
                        if ($resData['count']) {
                                $this->internal['res_count'] = $resData['count'];
                                $this->internal['results_at_a_time'] = $this->piVars['results'];
-                               $this->internal['maxPages'] = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($this->conf['search.']['page_links'], 1, 100, 10);
+                               $this->internal['maxPages'] = MathUtility::forceIntegerInRange($this->conf['search.']['page_links'], 1, 100, 10);
                                $resultSectionsCount = count($this->resultSections);
                                $addString = $resData['count'] && $this->piVars['group'] == 'sections' && $freeIndexUid <= 0 ? ' ' . sprintf($this->pi_getLL(($resultSectionsCount > 1 ? 'inNsections' : 'inNsection')), $resultSectionsCount) : '';
                                $browseBox1 = $this->pi_list_browseresults(1, $addString, $this->printResultSectionLinks(), $freeIndexUid);
@@ -1595,13 +1600,13 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin {
                // Initializing variables:
                $pointer = (int)$this->piVars['pointer'];
                $count = (int)$this->internal['res_count'];
-               $results_at_a_time = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($this->internal['results_at_a_time'], 1, 1000);
+               $results_at_a_time = MathUtility::forceIntegerInRange($this->internal['results_at_a_time'], 1, 1000);
                $pageCount = (int)ceil($count / $results_at_a_time);
 
                $links = array();
                // only show the result browser if more than one page is needed
                if ($pageCount > 1) {
-                       $maxPages = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($this->internal['maxPages'], 1, $pageCount);
+                       $maxPages = MathUtility::forceIntegerInRange($this->internal['maxPages'], 1, $pageCount);
 
                        // Make browse-table/links:
                        if ($pointer > 0) {
@@ -1705,7 +1710,11 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin {
                $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['description'] = $this->makeDescription(
+                       $row,
+                       !($this->piVars['extResume'] && !$headerOnly),
+                       $this->conf['results.']['summaryCropAfter']
+               );
                $tmplContent = $this->makeInfo($row, $tmplContent);
                $tmplContent['access'] = $this->makeAccessIndication($row['page_id']);
                $tmplContent['language'] = $this->makeLanguageIndication($row);
@@ -1855,7 +1864,7 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin {
                                break;
                        case 'rank_first':
                                // Close to top of page
-                               return ceil(\TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange((255 - $row['order_val']), 1, 255) / 255 * 100) . '%';
+                               return ceil(MathUtility::forceIntegerInRange((255 - $row['order_val']), 1, 255) / 255 * 100) . '%';
                                break;
                        case 'rank_flag':
                                // Based on priority assigned to <title> / <meta-keywords> / <meta-description> / <body>
@@ -1864,14 +1873,14 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin {
                                        // (3 MSB bit, 224 is highest value of order_val1 currently)
                                        $freqNumber = $row['order_val2'] / $this->firstRow['order_val2'] * pow(2, 12);
                                        // 15-3 MSB = 12
-                                       $total = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($base + $freqNumber, 0, 32767);
+                                       $total = MathUtility::forceIntegerInRange($base + $freqNumber, 0, 32767);
                                        return ceil(log($total) / log(32767) * 100) . '%';
                                }
                                break;
                        case 'rank_freq':
                                // Based on frequency
                                $max = 10000;
-                               $total = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($row['order_val'], 0, $max);
+                               $total = MathUtility::forceIntegerInRange($row['order_val'], 0, $max);
                                return ceil(log($total) / log($max) * 100) . '%';
                                break;
                        case 'crdate':
@@ -1896,10 +1905,11 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin {
         * @param int $lgd String length
         * @return string HTML string
         */
-       public function makeDescription($row, $noMarkup = 0, $lgd = 180) {
+       public function makeDescription($row, $noMarkup = FALSE, $lgd = 180) {
                if ($row['show_resume']) {
+                       $markedSW = '';
+                       $outputStr = '';
                        if (!$noMarkup) {
-                               $markedSW = '';
                                if (\TYPO3\CMS\IndexedSearch\Utility\IndexedSearchUtility::isTableUsed('index_fulltext')) {
                                        $res = $this->databaseConnection->exec_SELECTquery('*', 'index_fulltext', 'phash=' . (int)$row['phash']);
                                } else {
@@ -1908,14 +1918,14 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin {
                                if ($res) {
                                        if ($ftdrow = $this->databaseConnection->sql_fetch_assoc($res)) {
                                                // Cut HTTP references after some length
-                                               $content = preg_replace('/(http:\\/\\/[^ ]{60})([^ ]+)/i', '$1...', $ftdrow['fulltextdata']);
+                                               $content = preg_replace('/(http:\\/\\/[^ ]{' . $this->conf['results.']['hrefInSummaryCropAfter'] . '})([^ ]+)/i', '$1...', $ftdrow['fulltextdata']);
                                                $markedSW = $this->markupSWpartsOfString($content);
                                        }
                                        $this->databaseConnection->sql_free_result($res);
                                }
                        }
                        if (!trim($markedSW)) {
-                               $outputStr = $this->frontendController->csConvObj->crop('utf-8', $row['item_description'], $lgd);
+                               $outputStr = $this->frontendController->csConvObj->crop('utf-8', $row['item_description'], $lgd, $this->conf['results.']['summaryCropSignifier']);
                                $outputStr = htmlspecialchars($outputStr);
                        }
                        $output = $this->utf8_to_currentCharset($outputStr ?: $markedSW);
@@ -1945,13 +1955,13 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin {
                // Split and combine:
                $parts = preg_split('/' . $regExString . '/ui', ' ' . $str . ' ', 20000, PREG_SPLIT_DELIM_CAPTURE);
                // Constants:
-               $summaryMax = 300;
-               $postPreLgd = 60;
-               $postPreLgd_offset = 5;
-               $divider = ' ... ';
+               $summaryMax = $this->conf['results.']['markupSW_summaryMax'];
+               $postPreLgd = $this->conf['results.']['markupSW_postPreLgd'];
+               $postPreLgd_offset = $this->conf['results.']['markupSW_postPreLgd_offset'];
+               $divider = $this->conf['results.']['markupSW_divider'];
                $occurencies = (count($parts) - 1) / 2;
                if ($occurencies) {
-                       $postPreLgd = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($summaryMax / $occurencies, $postPreLgd, $summaryMax / 2);
+                       $postPreLgd = MathUtility::forceIntegerInRange($summaryMax / $occurencies, $postPreLgd, $summaryMax / 2);
                }
                // Variable:
                $summaryLgd = 0;
@@ -2012,7 +2022,7 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin {
                                $add = ', ' . $this->pi_getLL('word_page') . ' ' . $pp[0];
                        }
                }
-               $outputString = $this->frontendController->csConvObj->crop('utf-8', $row['item_title'], 50, '...');
+               $outputString = $this->frontendController->csConvObj->crop('utf-8', $row['item_title'], $this->conf['results.']['titleCropAfter'], $this->conf['results.']['titleCropSignifier']);
                return $this->utf8_to_currentCharset($outputString) . $add;
        }
 
@@ -2384,4 +2394,41 @@ class SearchFormController extends \TYPO3\CMS\Frontend\Plugin\AbstractPlugin {
        public function getJoinPagesForQuery() {
                return (bool)$this->join_pages;
        }
+
+       /**
+        * Load settings and apply stdWrap to them
+        */
+       protected function loadSettings() {
+               if(!is_array($this->conf['results.'])) {
+                       $this->conf['results.'] = array();
+               }
+               $this->conf['results.']['summaryCropAfter'] = MathUtility::forceIntegerInRange(
+                       $this->cObj->stdWrap($this->conf['results.']['summaryCropAfter'], $this->conf['results.']['summaryCropAfter.']),
+                       10, 5000, 180
+               );
+               $this->conf['results.']['summaryCropSignifier'] = $this->cObj->stdWrap($this->conf['results.']['summaryCropSignifier'], $this->conf['results.']['summaryCropSignifier.']);
+               $this->conf['results.']['titleCropAfter'] = MathUtility::forceIntegerInRange(
+                       $this->cObj->stdWrap($this->conf['results.']['titleCropAfter'], $this->conf['results.']['titleCropAfter.']),
+                       10, 500, 50
+               );
+               $this->conf['results.']['titleCropSignifier'] = $this->cObj->stdWrap($this->conf['results.']['titleCropSignifier'], $this->conf['results.']['titleCropSignifier.']);
+               $this->conf['results.']['markupSW_summaryMax'] = MathUtility::forceIntegerInRange(
+                       $this->cObj->stdWrap($this->conf['results.']['markupSW_summaryMax'], $this->conf['results.']['markupSW_summaryMax.']),
+                       10, 5000, 300
+               );
+               $this->conf['results.']['markupSW_postPreLgd'] = MathUtility::forceIntegerInRange(
+                       $this->cObj->stdWrap($this->conf['results.']['markupSW_postPreLgd'], $this->conf['results.']['markupSW_postPreLgd.']),
+                       1, 500, 60
+               );
+               $this->conf['results.']['markupSW_postPreLgd_offset'] = MathUtility::forceIntegerInRange(
+                       $this->cObj->stdWrap($this->conf['results.']['markupSW_postPreLgd_offset'], $this->conf['results.']['markupSW_postPreLgd_offset.']),
+                       1, 50, 5
+               );
+               $this->conf['results.']['markupSW_divider'] = $this->cObj->stdWrap($this->conf['results.']['markupSW_divider'], $this->conf['results.']['markupSW_divider.']);
+               $this->conf['results.']['hrefInSummaryCropAfter'] = MathUtility::forceIntegerInRange(
+                       $this->cObj->stdWrap($this->conf['results.']['hrefInSummaryCropAfter'], $this->conf['results.']['hrefInSummaryCropAfter.']),
+                       10, 400, 60
+               );
+               $this->conf['results.']['hrefInSummaryCropSignifier'] = $this->cObj->stdWrap($this->conf['results.']['hrefInSummaryCropSignifier'], $this->conf['results.']['hrefInSummaryCropSignifier.']);
+       }
 }
index 81fb68b..779b2df 100644 (file)
@@ -38,6 +38,21 @@ plugin.tx_indexedsearch {
                exactCount = 0
                forwardSearchWordsInResultLink = 0
 
+               # various crop/offset settings for single result items
+               results {
+                       titleCropAfter = 50
+                       titleCropSignifier = ...
+                       summaryCropAfter = 180
+                       summaryCropSignifier =
+                       hrefInSummaryCropAfter = 60
+                       hrefInSummaryCropSignifier = ...
+                       markupSW_summaryMax = 300
+                       markupSW_postPreLgd = 60
+                       markupSW_postPreLgd_offset = 5
+                       markupSW_divider = ...
+                       markupSW_divider.noTrimWrap = | | |
+               }
+
                # Blinding of option-selectors / values in these (advanced search)
                blind {
                        searchType = 0
index 40b9502..0000535 100644 (file)
@@ -61,6 +61,20 @@ plugin.tx_indexedsearch {
                targetPid.data = TSFE:id
        }
 
+       # various crop/offset settings for single result items
+       results {
+               titleCropAfter = 50
+               titleCropSignifier = ...
+               summaryCropAfter = 180
+               summaryCropSignifier =
+               hrefInSummaryCropAfter = 60
+               hrefInSummaryCropSignifier = ...
+               markupSW_summaryMax = 300
+               markupSW_postPreLgd = 60
+               markupSW_postPreLgd_offset = 5
+               markupSW_divider = ...
+               markupSW_divider.noTrimWrap = | | |
+       }
        result_link_target =
 /*
        flagRendering = CASE