Поиск по полю created_by_alias в Joomla! содержание

Есть ли модуль для расширения поисковой системы в Joomla! искать также по автору (created_by) и псевдониму автора (created_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


person pQB    schedule 29.12.2011    source источник
comment
Я уверен, что вы, вероятно, уже делаете это, но в качестве меры предосторожности убедитесь, что вы используете переопределения шаблонов для достижения этой цели и не изменяете ядро, чтобы в будущих обновлениях ваша работа не была уничтожена! Я знаю, что это немного не по теме, но решил, что чем больше информации, тем лучше! Что касается конкретно вашей темы, боюсь, я мало чем могу помочь, извините!   -  person Hanny    schedule 29.12.2011
comment
@ Ханни, я это имел в виду. Сейчас я работаю с сервером разработки. Итак, я хотел бы знать, возможно ли это, прежде чем читать о переопределении шаблонов. Спасибо за ваш отзыв!   -  person pQB    schedule 30.12.2011


Ответы (1)


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

$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» в список полей выбора

person Anand    schedule 29.12.2011
comment
я попробовал это, и это работает для меня. не могли бы вы показать свой код. - person Anand; 30.12.2011
comment
Отлично :) Я пропустил эту часть. Спасибо! - person pQB; 30.12.2011