【发布时间】:2010-06-15 13:52:30
【问题描述】:
如何在 Drupal 核心搜索结果页面显示自定义 CCK 字段(文本或图像字段)?
【问题讨论】:
如何在 Drupal 核心搜索结果页面显示自定义 CCK 字段(文本或图像字段)?
【问题讨论】:
您需要在您的主题中覆盖 search-result-tpl.php。将其从 modules/search 复制到您的主题目录,清除主题缓存,然后您就设置好了。您会看到主题文件中有一个名为“result”的数组可用,其中包含一堆数据,包括一个节点对象。所以你的文件变成这样:
<dt class="title">
<a href="<?php print $url; ?>"><?php print $title; ?></a>
</dt>
<dd>
<?php
// Here is the change
print $result['node']->field_name_of_cck_field['view'];
?>
<?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>
祝你好运!
【讨论】:
1 将 search-result.tpl.php 文件从 modules/search 复制到您的主题文件夹
2 对于 CCK 文本字段添加:
<?php if ($result['node']->field_name[0]['value']): ?>
<h4><?php print($result['node']->field_name[0]['value']); ?></h4>
<?php endif; ?>
3 对于带有图像缓存的图像字段:
<?php if ($result['node']->field_logo[0]['filename']): ?>
<img src="/sites/default/files/imagecache/path_to_file/<?php print $result['node']->field_logo[0]['filename']; ?>" />
<?php endif; ?>
接下来是 4 个 CSS 样式。
感谢 cam8001 和 googletorp!
【讨论】:
这取决于您如何进行搜索。
如果您使用视图来构建搜索,您可以自行决定要显示的内容。
如果您使用其他一些搜索机制,您可以结合使用 proprocess 挂钩、主题功能、模板来获得所需的输出。您应该有可用的节点对象,因此显示 CCK 应该很容易。
编辑:
对于 Drupal 核心搜索模块,您需要覆盖主题中的 search-result.tpl.php,以更改搜索结果的打印方式。您可以在此处添加或删除信息。如果您需要更多变量,您可以创建它们以在process hook 中的模板中使用。这是基本的 Drupal 主题,请查看 handbook。
【讨论】: