回答
假設你有一個節點對象$node
,您可以使用下面的代碼來獲得以前的版本。
$previous_vid = db_result(
db_query('SELECT MAX(vid) AS vid FROM {node_revisions} WHERE vid < %d AND nid = %d', $node->vid, $node->nid)
);
一旦你有以前的版本,你可以用node_load(array('nid' => $node-nid, 'vid' => $previous_vid))
加載新的節點對象。
代碼應檢查db_result()
是否返回FALSE
,如果沒有以前的修訂版本。 要注意,字段vid
對於每個節點都是全局的;它不包含不同節點的相同值。
我給出的答覆是有效的,如果你的意思是「以前的版本(修訂版)」。你寫了「預覽版(修訂版)」。 – kiamlaluno 2010-07-25 23:53:26
謝謝。我在文中改變以備將來參考。 – gagarine 2010-07-26 11:09:56
以上是針對Drupal 6的。這是一個Drupal 7版本:$ previous_vid = db_query(「SELECT MAX(vid)AS vid FROM {node_revision} WHERE vid <:vid AND nid =:nid」,array(':vid'= > $ node-> vid,':nid'=> $ node-> nid)) - > fetchField();如果(isset($ previous_vid)){prev = node_load($ node-> nid,$ previous_vid); } – 2015-05-19 22:46:09
如果我明白你想要做什麼;你想在某人提交更改後獲得節點的預覽?
預覽按鈕有其自己的提交處理程序node_form_build_preview()
。在那裏,它使用$form_state
中的數據創建一個新的節點對象,並運行node_preview()
,它返回預覽的標記。
如果希望當用戶點擊預覽按鈕,以捕獲預覽,您需要使用hook_form_alter
添加另一個提交處理程序的預覽按鈕:
$['form']['buttons']['preview']['#submit'][] = 'mymodule_custom_preview';
其中mymodule_custom_preview的名稱是你的自定義提交功能。看看node_form_build_preview()
指導,但你的提交功能,將會是這個樣子:
function mymodule_custom_preview($form, &$form_state) {
$node = node_form_submit_build_node($form, $form_state);
$preview = node_preview($node);
}
而且看看node_form()
,它給你的節點形式是如何構成的一個想法。當您完成所有操作後,你將有你的代碼模塊中,看起來是這樣的:
function mymodule_form_alter(&$form, $form_state, $form_id) {
if (strstr($form_id, '_node_form') !== FALSE) {
$['form']['buttons']['preview']['#submit'][] = 'mymodule_custom_preview';
}
}
function mymodule_custom_preview($form, &$form_state) {
$node = node_form_submit_build_node($form, $form_state);
$preview = node_preview($node);
// Do what you will with $preview.
}
不,我的意思是以前的修訂節點。抱歉。但是,謝謝我學到別的東西:) – gagarine 2010-07-26 11:07:35
謝謝大家。
我還發現了一個其他的解決辦法:
$revisions = node_revision_list($node); next($revisions); if ($preview_key = key($revisions)) { $preview_revision = $revisions[$preview_key]; $old_node = node_load($node->nid, $preview_revision->vid); }
但是,如果你有很多的版本,你得到一個大陣。
您是否指節點的前一個版本(作爲下一個版本)? – kiamlaluno 2010-07-25 23:54:10