Появилась задача на странице результатов поиска выводить изображения к найденным статьям. Подразумевается, что изображения к материалам были прикреплены с помощью модуля CCK.
Итак, для этого нам понадобиться поправить файл template.php, который лежит в папке с нашей темой. Если этого файла нет — создавайте.
Для примера: у нас есть два типа материалов (Заведение, Событие). У каждого из них есть поле CCK, в которое создатель ноды будет грузить изображение. Запоминаем имена этих полей. field_placeavatar и field_eventavatar.
Теперь возвращаемся к нашему файлу template.php, добавляем в нем следующие строки:
function mytheme_preprocess_search_result(&$vars, $hook) { $n = node_load($vars['result']['node']->nid); $n && ($vars['node'] = $n); } |
mytheme — меняем на название своей темы.
Копируем файл search-result.tpl.php из папки \www\modules\search\ в папку с нашей темой.
И начинаем смотреть его.
<dt class="title"> <a href="<?php print $url; ?>"><?php print $title; ?></a> </dt> <dd> <?php if ($snippet) : ?> <p class="search-snippet"><?php print $snippet; ?></p> <?php endif; ?> <?php if ($info) : ?> <p class="search-info"><?php print $info; ?></p> <?php endif; ?> </dd> |
Переменная $snippet хранит текст, в котором найдено совпадение из поискового запроса, но в ней нет картинки. Сейчас добавим свой кусок кода.
<? if (isset($node->field_placeavatar[0]['filepath'])) { ?> <a href="<?php print $url; ?>" class="imagecache"> <?php print theme('imagecache', 'image100', $node->field_placeavatar[0]['filepath']); ?> </a> <?php } ?> |
Проверяем есть ли загруженная картинка у статьи. Если да, то обрамляем ее в ссылку на эту самую статью, а картинку выводим с помощью модуля Imagecache, с заранее подготовленным презетом (image100).
Этот код можно оформить в свои блоки, и облагородить вывод результатов поиска.
Ни фига не работает.
На форме пусто и файл «search-result.tpl.php» из каталога темы не подхватывается системой.
Может дело в версии друпала. В статье для 6 версии.