回答
假设你有一个节点对象$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