Ищите поле made_by_alias в Joomla! содержание - PullRequest
1 голос
/ 29 декабря 2011

Есть ли модуль для расширения поисковика в Joomla! искать также по автору (creat_by) и автору псевдонима (созданный_by_alias) в статьях?

Я подумал сделать простое подключение для этого намерения, но сначала я попытался изменить файл plugins / search / content.php следующим образом:

case 'exact':
    $text           = $db->Quote( '%'.$db->getEscaped( $text, true ).'%', false );
    $wheres2        = array();
    $wheres2[]      = 'a.title LIKE '.$text;
    $wheres2[]      = 'a.introtext LIKE '.$text;
    $wheres2[]      = 'a.fulltext LIKE '.$text;
    $wheres2[]      = 'a.metakey LIKE '.$text;
    $wheres2[]      = 'a.metadesc LIKE '.$text;
    $wheres2[]      = 'a.created_by_alias LIKE '.$text; // added
    $where          = '(' . implode( ') OR (', $wheres2 ) . ')';
    break;

case 'all':
case 'any':
default:
    $words = explode( ' ', $text );
    $wheres = array();
    foreach ($words as $word) {
        $word           = $db->Quote( '%'.$db->getEscaped( $word, true ).'%', false );
        $wheres2        = array();
        $wheres2[]      = 'a.title LIKE '.$word;
        $wheres2[]      = 'a.introtext LIKE '.$word;
        $wheres2[]      = 'a.fulltext LIKE '.$word;
        $wheres2[]      = 'a.metakey LIKE '.$word;
        $wheres2[]      = 'a.metadesc LIKE '.$word;
        $wheres2[]      = 'a.created_by_alias LIKE '.$word; // added
        $wheres[]       = implode( ' OR ', $wheres2 );
    }
    $where = '(' . implode( ($phrase == 'all' ? ') AND (' : ') OR ('), $wheres ) . ')';
    break;

в точных и по умолчанию случаях, но без удачи. Он не возвращает результаты, как ожидалось, когда я ищу по псевдониму автора. Дело в том, что он возвращает те же результаты.

Нужно ли изменять другие файлы?

Заранее спасибо

PS: я использую Joomla! 1,5

1 Ответ

1 голос
/ 29 декабря 2011

попробуйте поставить это в случае по умолчанию

$ wheres2 [] = 'a.created_by_alias LIKE'. $ Word;

вам нужно сделать еще несколько модификаций ..

в конце файла вызывается как функция checkNoHTML искать строку, содержащую это if (searchHelper :: checkNoHTML ($ article, $ searchText, array ('text', 'title', 'metadesc', 'metakey')))

замените его на

if(searchHelper::checkNoHTML($article, $searchText, array('text', 'title', 'metadesc', 'metakey','created_by_alias')))   // just added created_by_alias in last array parameter

теперь во всех вышеперечисленных запросах добавьте «a.created_by_alias» в список выбора полей

...