您在這裡

是否可以在view中建立一個到另一個view的鏈接

say2sky's 的頭像
say2sky 在 2008-06-27 (週五) 06:08 發表

使用情景和功能構想:
1)各個用戶都有自己的view,反應各自在不同方面的資訊和狀態,在用戶的view上有一個字段(field)是預留給一個指導者角色(role)的, 指導者在查看了用戶view上的資訊和狀態後在預留的字段(field)上給予點評和指導。
2)給指導者建立了一個新的view來過濾(filter)並顯示來自所有用戶還沒有點評過的用戶反饋列表(table)
3)指導者的點評和指導需要根據多次用戶反饋的前後對比後做出, 就是需要查看原始用戶資訊的view.

已做的嘗試:
1)在建立指導者用的view時,可以添加與原始node相關的資訊作為field, 也可以將其作為過濾(filter)條件
2)不能將一個到另一個view的鏈接作為字段(field)加入到view

我的問題:
如何能在指導者用的等待點評的view列表上添加到原始用戶資訊view的鏈接。以使指導者能夠方便查看原始資訊。

感想:
創建view時的field候選項是固定的,不知是否可能在一定條件下的自己定義和更改

是的, 通過自己寫模組來呈現對數據庫表的query結果是一個好辦法。

下面是我的步驟和一個不清楚的地方

1)建立菜單項和相關路徑


function waiting_queue_menu($may_cache) {
global $user;
$items = array();
if ($may_cache) {
$items[] = array('path' => 'view/all/content_waitingqueue' ,
'title' => t('等待指導'),
'type' => MENU_NORMAL_ITEM,
'weight'=> 3,
'access' => user_access('view waiting queue'));
}
return $items;
}

2)對數據庫的操作和table的呈現是通過覆蓋現有的主題函數來達到

vim themes/garland/template.php添加
function phptemplate_xxx_xxx($arg1, ...) {
return _phptemplate_callback('xxx_xxx', ...));
}

vim xxx_xxx..tpl.php
相關
$data_fields = db_query(....);
while( $data_field = db_fetch_object($data_fields)){
.....
填充數據
}

我這裏不清楚的是
上面自己建立的菜單項和相關的路徑,在主題中是要與那個
主題函數相關呢?也就是這裏 phptemplate_xxx_xxx 要覆蓋那個現有的主題函數呢?

利用 theme_table 來輸出 drupal 樣式的表格

<?php

function waiting_queue_menu($may_cache) {
global $user;
$items = array();
if ($may_cache) {
$items[] = array(
'path' => 'view/all/content_waitingqueue' ,
'title' => t('等待指導'),
'type' => MENU_NORMAL_ITEM,
'weight'=> 3,
'access' => user_access('view waiting queue'),
'callback' => 'waiting_queue_list'
);
}
return $items;
}

function waiting_queue_list(){
$header = array(
'field1',
'field2',
'field3'
);

$data_fields = db_query(....);
while( $data_field = db_fetch_object($data_fields)){
$rows[] = array(
$data_field->field1,
$data_field->field2,
$data_field->field3,
);
}

$output = theme('table', $header, $rows);
return $output;
}
?>

theme_table 的詳細說明可以看
http://api.drupal.org/api/function/theme_table/5
可以用來輸出跟 使用者列表 一樣格式的 table

另外還有分頁以及欄位排序等進階用法

分頁需要搭配 pager_query($query, $limit = 10, $element = 0, $count_query = NULL)
欄位排序需要搭配 tablesort_sql($header, $before = '')