web-dev-qa-db-ja.com

検索結果ページにcckノードフィールドの値を表示する方法

電話番号、住所などの特定のcckフィールドを検索結果ページに表示する必要があります。

私が見るようにsearch-result.tpl.php、ありません$node->...では、ノードフィールドを検索結果ページに取り込むにはどうすればよいですか?

5
Drupal guy

[並べ替え]

うわー、その単純な:)

search-result.tpl.php

<?php if ($result['node']->field_name[0]['value']): ?>
  <h4><?php print($result['node']->field_name[0]['value']); ?></h4>
<?php endif; ?>
1
Drupal guy

あなたのテーマでは、 template_preprocess_search_result() を使用できます

_function YOURTHEME_preprocess_search_result(&$variables) {
  if ($variables['type'] == 'node') {
    $node =& $variables['result']['node'];
    //Do something here
  }
}
_

または、_$op = 'search result'_のカスタムモジュールに hook_nodeapi() を実装することもできます。 hook_nodeapi($node, 'search result')の結果は、_$info_split_テンプレートの_search-result.tpl.php_で利用できます。

3
Pierre Buyle

一度カスタム検索を作成する必要がありました。カスタムクエリをデータベースに書き込むだけでなく、表示する金額の種類も選択できるカスタムモジュールを作成しました。モジュールで hook_search にフックしました。あなたにアイデアを与えるために:

function yourmodule_search($op = 'search', $keys = NULL) {

switch ($op) {
   //some code, basically a stripped version from what the API shows us
    case 'search':

      $find = do_event_search($keys); //the actual search

      // Load results.
      $results = array();

      foreach ($find as $item) { 

        //iteration and adding certain elements to $resuls needned by Drupal
      }
      return $results;
  }
}

あなたにとって興味深い部分は、do_event_searchが行う検索結果の取得です。

//all data comes from a queries to the database
$search_result[] = array ('link' => trim($link),
                    'snippet' => trim_text(i18n_get_lang() == "en" ? $row->description_en : $row->description_de),
                    'head' => trim_text(i18n_get_lang() == "en" ? $row->title_en : $row->title_de),
                    'type' => $type
                );

ご覧のとおり、snippetには検索ページに表示するテキストが含まれており、カスタムデータベースから特定の$rowを選択します。 APIの例は、結果を正しく表示するために必要なすべてのフィールドを示しています。

1
DrColossos

別の可能性は Display Suite を使用することです。これにより、ノードのインデックス付けと検索結果の表示をオーバーライドできます。

1
Attiks

template_preprocess_search_result(&$ variables)関数(検索モジュールからコピーしてテーマのtemplate.phpファイルに配置)を使用し、$ variables変数(var_dump it)を使用してノード情報を取得して印刷できます

0
30equals