Drupal 6 如何在Drupal中链接自定义结果

Drupal 6 如何在Drupal中链接自定义结果,drupal-6,linker,Drupal 6,Linker,我第一次来这里是一个Drupal和编程新手 所以我有个问题需要帮助 function query_results($searchstring, $datefrom) { $tidresult = db_query("SELECT tid FROM {term_data} WHERE LOWER(name) = '%s'", strtolower($searchstring)); $resultarray = array(); while ($obj = db_f

我第一次来这里是一个Drupal和编程新手

所以我有个问题需要帮助

    function query_results($searchstring, $datefrom) {
    $tidresult = db_query("SELECT tid FROM {term_data} WHERE LOWER(name) = '%s'", strtolower($searchstring));

    $resultarray = array();
    while ($obj = db_fetch_object($tidresult)) {
        $tid = $obj->tid;

        $noderesults = db_query("SELECT n.nid, n.title FROM {node} n
                                                        INNER JOIN {term_node} tn ON tn.nid = n.nid
                                                            WHERE tn.tid='%s'", $tid);
        while ($nodeobj = db_fetch_object($noderesults)) {
            $resultarray[$nodeobj->nid] = $nodeobj->title;
        }
    }


        $header = array(
        array('data' => 'Nr.'),
        array('data' => 'Name'),
    );

$rows = array();
    $i = 0;

    foreach($resultarray as $nid => $title) {
        $i++;
        $rows[] = array('data' =>
          array(
                $i,
                $title,
            ),
        );

    }


    $output = theme('table', $header, $rows);
    print theme("page", $output);
}
这让我抓狂,我不想把所有的搜索代码都放进去,但它需要数据库中的分类标签(你在文本框中输入自动完成的“$searchstring”)和日期(你选择一个时间线,比如一天,昨天等,“$datefrom”)

例如,当您单击“搜索”时,可以这样说

我不能发布我的一张照片,但我只给了我标题(如上所述,但没有列出),我不能点击它来引导我找到内容

但我不会让它看起来像是内容(故事),所以你们有一个可点击的标题和一些描述,像这样 上面写着lorem ipsum和下面的文字


如果很难在图片中找到类似的内容,有人能告诉我如何将不可点击的标题变成可点击的链接(如第一张图片中所示),从而引导我找到内容

要获取链接标题,您需要使用
l()
函数

查看您提供的代码,我不完全确定您是如何获得任何结果的,因为您将标题保存在
$resultaray
中,但在呈现表格时使用
$rows

除非在其他地方指定了$rows,
$resultarray[$nodeobj->nid]=$nodeobj->title应该变成
$rows[$nodeobj->nid]=$nodeobj->title
要使其与表格标题匹配,需要为数字列添加另一个“单元格”

$rows[$nodeobj->nid] = array(
  $count++,
  l($nodeobj->title, 'node/'.$nodeobj->nid)
);
为了提供摘录,您需要加入node_revisions表并获取body或trister列,然后将其添加到行中,如下所示:

$rows[$nodeobj->nid] = array(
  $count++,
  '<h2>'. l($nodeobj->title, 'node/'.$nodeobj->nid) .'</h2>'. $nodeobj->teaser
);
-或-

在一个查询中移动它(注意:我没有机会测试这个,但我通常第一次就做对了):


嗨,谢谢你的回答,我把丢失的代码放在这里了。我粘贴了一个旧版本的代码,所以完整的代码现在就在上面了。
    $rows   = array();
    $count  = 0;

    while ($obj = db_fetch_object($tidresult)) {
      $tid = $obj->tid;

      $noderesults = db_query("SELECT n.nid, n.title FROM {node} n "
                             ."INNER JOIN {term_node} tn ON tn.nid = n.nid "
                             ."WHERE tn.tid='%s'", $tid);

      while ($nodeobj = db_fetch_object($noderesults)) {
        $rows[] = array(
          ++$count,
          l($nodeobj->title, 'node/'. $nodeobj->title)
        );
      }
    }

    $header = array(
      array('data' => 'Nr.'),
      array('data' => 'Name'),
    );


    $output = theme('table', $header, $rows);
    print theme("page", $output);
}
function query_results($searchstring, $datefrom) {

  $rows   = array();
  $count  = 0;

  $results = db_query("SELECT n.nid, n.title 
                       FROM {node} n 
                       INNER JOIN {term_node} tn ON tn.nid = n.nid 
                       WHERE tn.tid IN (SELECT tid FROM {term_data} WHERE LOWER(name) = '%s')", strtolower($searchstring));


  while ($nodeobj = db_fetch_object($results)) {
    $rows[] = array(
      ++$count,
      l($nodeobj->title, 'node/'. $nodeobj->title)
    );
  }

  $header = array(
    array('data' => 'Nr.'),
    array('data' => 'Name'),
  );


  $output = theme('table', $header, $rows);
  print theme("page", $output);
}