diff --git a/core/components/getrelated/elements/snippets/getrelated.properties.php b/core/components/getrelated/elements/snippets/getrelated.properties.php index 9e31faa..d651fab 100644 --- a/core/components/getrelated/elements/snippets/getrelated.properties.php +++ b/core/components/getrelated/elements/snippets/getrelated.properties.php @@ -24,6 +24,7 @@ return array( 'resource' => 'current', 'fields' => 'pagetitle:3,introtext:2', + 'wordDelimiter' => ' ', 'returnFields' => 'pagetitle,longtitle,introtext', 'returnTVs' => '', diff --git a/core/components/getrelated/model/getrelated.class.php b/core/components/getrelated/model/getrelated.class.php index 1d3d266..4512160 100644 --- a/core/components/getrelated/model/getrelated.class.php +++ b/core/components/getrelated/model/getrelated.class.php @@ -76,6 +76,9 @@ function __construct(modX &$modx,array $config = array()) { if (isset($a) && count($a) > 0) $this->config['parents'] = $a; $this->config['exclude'] = explode(',',$this->config['exclude']); + /* Delimiter used to explode each field */ + $this->config['wordDelimiter'] = isset($this->config['wordDelimiter']) ? $this->config['wordDelimiter'] : ' '; + $fields = explode(',',$this->config['fields']); foreach ($fields as $fld) { $tmp = explode(':',$fld); @@ -172,7 +175,13 @@ public function getMatchData() { /* Fetch resource data */ $resValues = $this->resource->get($this->fields); $resValues = (is_array($resValues)) ? implode(' ',$resValues) : $resValues; - $resValues = explode(' ',trim($resValues)); + if(!empty($this->config['wordDelimiter'])) { + $resValues = explode($this->config['wordDelimiter'],trim($resValues)); + } + else { + // Handle case where empty delimiter is passed. + $resValues = array(trim($resValues)); + } /* Combine the data and filter out duplicates, non-alphanum and stop words. */ $values = array_merge($values,$resValues);