Чтобы получить связанные заголовки, вам нужно использовать функцию l()
.
глядя на код, который вы указали, я не совсем уверен, как вы получаете какие-либо результаты, поскольку вы сохраняете заголовки в $resultArray
, но используете $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 или teaser, а затем добавить его в свои строки следующим образом:
$rows[$nodeobj->nid] = array(
$count++,
'<h2>'. l($nodeobj->title, 'node/'.$nodeobj->nid) .'</h2>'. $nodeobj->teaser
);
при условии, что вы получите тизер.
EDIT
предыдущий ответ остается в силе. Вы также можете немного упростить код, обрабатывая $ строки прямо в цикле $ noderesults.
функция query_results ($ searchstring, $ datefrom) {
$ tidresult = db_query ("SELECT tid FROM {term_data} WHERE LOWER (name) = '% s'", strtolower ($ searchstring));
$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);
}
1025 * -ИЛИ- *
переместить все в одном запросе (примечание: у меня не было возможности проверить это, но я обычно делаю это правильно с первого раза):
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);
}