Выводим изображение в результатах поиска Joomla

Многие сталкивались с ситуацией, когда необходимо выводить изображения материалов на странице результатов поиска в Joomla. К сожалению стандартными средствами вывести изображение не представляется возможным, приходится прибегать к помощи сторонних плагинов. Из этой статьи Вы узнаете метод, который позволит отобразить изображение в результатах поиска Joomla.

Важно: описанный ниже метод не идеален, а также он не предназначен для вывода первого изображения вставленного в текст материала.

Как это работает?

Для начала Вам необходимо определиться, какие изображения будут выводиться в результатах поиска. Перейдите в редактор материалов Joomla, справа в области настроек материала откройте вкладку «Изображения и ссылки» и загрузите изображение в одно из полей: «Изображение для вступительного текста» или «Изображение полного текста», всё зависит от Вашего метода наполнения сайта:

Выводим изображение в результатах поиска Joomla
Выводим изображение в результатах поиска Joomla

Сохраните материал после произведенных изменений.

Теперь нам необходимо немного отредактировать некоторые файлы Joomla. Откройте файл plugins/search/content/content.php и  найдите в нем строки:

$query->select('a.title AS title, a.metadesc, a.metakey, a.created AS created, a.language');

Замените эту строку на следующую:

$query->select('a.title AS title, a.metadesc, a.metakey, a.created AS created, a.language, a.images AS image');

Как видите, к текущему запросу мы добавили выборку изображения из базы a.images AS image. Важно помнить, что в случае обновления Joomla произведенные изменения в данном файле пропадут, поэтому будьте предельно внимательны.

Выборку мы сделали, теперь необходимо вывести само изображение на странице результатов поиска, поэтому откройте файл components/com_search/views/search/tmpl/default_results.php или templates/ИМЯ_ВАШЕГО_ШАБЛОНА/html/com_search/search/default_results.php если у Вас используется индивидуальный шаблон.

Совет: чтобы при обновлении Joomla изменения в данном файле не пропали, скопируйте содержимое директории components/com_search/views/search/tmpl/ в директорию templates/ИМЯ_ВАШЕГО_ШАБЛОНА/html/com_search/search/ и Вы сможете производить изменения не опасаясь.

Итак, в найденном файле необходимо добавить следующие строки:

<?php
	$image = json_decode($result->image)->image_intro;
	if (isset($image) && $image != '') {
		echo '<div style="float: left; margin: 5px 10px;" ><img src="/'. $image .'" alt="" /></div>';
	}
?>

Например, перед кратким описанием материала:

<?php echo $result->text; ?>

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

И последнее, что здесь необходимо, это сбросить выравнивание, для этого перед выводом даты создания материала:

<?php if ($this->params->get('show_date')) : ?>

Добавьте следующий код:

<?php if (isset($image) && $image != '') {
	echo '<div style="clear:both"></div>';
} ?>

Какой никакой, но всё же метод и он работает.

Комментарии

  • Покупатель
    Здравствуйте. делал все по инструкции, на joomla 2.5 не работает
    не выводится изображения в поиске
    прощу помочь, это очень сильно нужно

    спасибо жду ответа
    • Blog About
      Добрый день. Развернул Joomla 2.5 и проделал всё по инструкции слово в слово. Результат http://joxi.ru/eAOW3GEi9YpaPA
      Обратите внимание на вставку кода в шаблон default_results.php
      $image = json_decode($result->image)->image_intro;
      Здесь выводится вступительное изображение, если Вы для материала задаете изображение для полного текста, то строка должна быть следующей:
      $image = json_decode($result->image)->image_fulltext;
      Также убедитесь, что Вы редактируете верный шаблон результатов вывода, т.е. если он у Вас переопределен в шаблоне, то править файл нужно здесь /templates/ИМЯ_ВАШЕГО_ШАБЛОНА/html/com_search/search/default_results.php
      Либо если все действия приводят к какой-либо ошибке, напишите ее в комментариях. Также Вы можете отправить мне бекап сайта на info@blog-about.ru посмотрю что может быть не так.
  • Саня
    Спасибо, сегодня целый день с этим протрахался. Не допёр до plugins/search/content/content.php
    • Blog About
      Добрый день. Статья очень старая и была написана еще под Joomla 2.5. Судя по возникшим у Вас проблемам, используете одну из последних версий Joomla. Там код немного переделали.
      Откройте файл plugins/search/content/content.php и примерно в 287-ой строке найдите:
      $query->select('a.title AS title, a.metadesc, a.metakey, a.created AS created, a.language, a.catid')
      Замените эту строку на следующую:
      $query->select('a.title AS title, a.metadesc, a.metakey, a.created AS created, a.language, a.catid, a.images AS image')
      Здесь в конце добавили a.images AS image
      Протестировано, работает.
      Спасибо за Ваш отзыв, так бы не обратил внимание на изменения, надо будет обновить статью.

Добавить комментарий