diff --git a/core/components/simplesearch/docs/changelog.txt b/core/components/simplesearch/docs/changelog.txt index 1553e32..ccd5f71 100755 --- a/core/components/simplesearch/docs/changelog.txt +++ b/core/components/simplesearch/docs/changelog.txt @@ -1,5 +1,10 @@ Changelog for SimpleSearch. +- Added a new snippet property onlyFacet [#28] +- Add basic debug option [#27] +- Update Elastica [#33] +- Update exclude parameter to always be active and to use idType [#33] + SimpleSearch 1.9.2 ======================================================================== - Generate extract for whole search string, not just for last part diff --git a/core/components/simplesearch/elements/snippets/simplesearch.snippet.php b/core/components/simplesearch/elements/snippets/simplesearch.snippet.php index 37be7b7..484f0c8 100755 --- a/core/components/simplesearch/elements/snippets/simplesearch.snippet.php +++ b/core/components/simplesearch/elements/snippets/simplesearch.snippet.php @@ -38,20 +38,30 @@ $searchIndex = $modx->getOption('searchIndex',$scriptProperties,'search'); $toPlaceholder = $modx->getOption('toPlaceholder',$scriptProperties,false); $noResultsTpl = $modx->getOption('noResultsTpl',$scriptProperties,'SearchNoResults'); +$debug = (bool)$modx->getOption('debug', $scriptProperties, false); +$debug_output = ''; /* get search string */ if (empty($_REQUEST[$searchIndex])) { $output = $search->getChunk($noResultsTpl,array( 'query' => '', )); - return $search->output($output,$toPlaceholder); + + if ( $debug ) { + $debug_output .= '
No search in the URL request for searchIndex: '.$searchIndex; + } + return $debug_output.$search->output($output,$toPlaceholder); } $searchString = $search->parseSearchString($_REQUEST[$searchIndex]); if (!$searchString) { $output = $search->getChunk($noResultsTpl,array( 'query' => $searchString, )); - return $search->output($output,$toPlaceholder); + + if ( $debug ) { + $debug_output .= '
Search string was empty after parsing & sanitizing for searchIndex: '.$searchIndex; + } + return $debug_output.$search->output($output,$toPlaceholder); } /* setup default properties */ @@ -75,48 +85,66 @@ $postHooks = $modx->getOption('postHooks',$scriptProperties,''); $activeFacet = $modx->getOption('facet',$_REQUEST,$modx->getOption('activeFacet',$scriptProperties,'default')); $activeFacet = $modx->sanitizeString($activeFacet); +$onlyFacet = $modx->getOption('onlyFacet', $scriptProperties, null); $facetLimit = $modx->getOption('facetLimit',$scriptProperties,5); $outputSeparator = $modx->getOption('outputSeparator',$scriptProperties,"\n"); $addSearchToLink = intval($modx->getOption('addSearchToLink',$scriptProperties,"0")); $searchInLinkName = $modx->getOption('searchInLinkName',$scriptProperties,"search"); /* get results */ -$response = $search->getSearchResults($searchString,$scriptProperties); -$placeholders = array('query' => $searchString); -$resultsTpl = array('default' => array('results' => array(),'total' => $response['total'])); -if (!empty($response['results'])) { - /* iterate through search results */ - foreach ($response['results'] as $resourceArray) { - $resourceArray['idx'] = $idx; - if (empty($resourceArray['link'])) { - $ctx = !empty($resourceArray['context_key']) ? $resourceArray['context_key'] : $modx->context->get('key'); - $args = ''; - if ($addSearchToLink) { - $args = array($searchInLinkName => $searchString); - } - $resourceArray['link'] = $modx->makeUrl($resourceArray['id'],$ctx,$args); +if ( !is_null($onlyFacet) && $onlyFacet != 'default' ) { + $activeFacet = $onlyFacet; +} else { + $response = $search->getSearchResults($searchString, $scriptProperties); + $placeholders = array('query' => $searchString); + $resultsTpl = array('default' => array('results' => array(), 'total' => $response['total'])); + if (!empty($response['results'])) { + if ($debug) { + $debug_output .= '
Begin iterate through search results'; } - if ($showExtract) { - $extract = $searchString; - if (array_key_exists($extractSource, $resourceArray)) { - $text = $resourceArray[$extractSource]; - } else { - $text = $modx->runSnippet($extractSource, $resourceArray); + /* iterate through search results */ + foreach ($response['results'] as $resourceArray) { + $resourceArray['idx'] = $idx; + if ($debug) { + $debug_output .= '
Search found resource ID: ' . $resourceArray['id']; } - $extract = $search->createExtract($text,$extractLength,$extract,$extractEllipsis); - /* cleanup extract */ - $extract = strip_tags(preg_replace("#\