Answers:
使用“ 节点修订版本删除”模块来删除和管理您的修订。(我是模块的维护者。)
节点修订删除模块允许您根据选择管理节点的修订。它可以帮助您保留节点的特定修订版本数。该模块为您提供了针对特定内容类型应用修订删除并在特定时间运行它的灵活性。您可以从“节点修订删除管理页面”管理设置。
目前还没有用于版本删除的稳定版本,但是D7端口正在使用中(不确定其功能是否全部可用)。
在该线程中,有人建议使用VBO隔离修订并删除它们。
如果您对API感到满意,请遍历所有节点,使用检索修订node_revision_list()
,然后使用删除修订node_revision_delete()
。
作为最后的选择,如果您喜欢弄乱数据库(就像我一样),则可以在field_revision_*
和node_revision
表中删除修订的行。尝试这个:
警告:未经测试!
DELETE FROM field_revision_body
WHERE NOT EXISTS (
SELECT NULL
FROM node
WHERE vid = revision_id
);
DELETE FROM node_revision
WHERE NOT EXISTS (
SELECT NULL
FROM node
WHERE node.vid = node_revision.vid
);
您可以在information_schema
数据库中找到修订表的完整列表:
SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME LIKE 'field_revision%'
AND TABLE_SCHEMA = 'your_database';
WHERE node.vid = node_revision.vid
。错误原样。也许还要在field_revision_body查询中指定表?
我是为VBO人员制作的(执行任意PHP),它将删除所有修订(当前版本除外)。这取决于内置的排序顺序node_revision_list()
,因此在使用实时数据之前,请备份数据库并测试所需的结果。
krumo($entity);
$revision_array = node_revision_list($entity);
$revision_array_ASC = array_reverse($revision_array, TRUE);
krumo($revision_array_ASC);
krumo(count($revision_array_ASC));
foreach ($revision_array_ASC as $vid => $node) {
$count = count($revision_array_ASC);
if ($count > 1) {
node_revision_delete($vid);
}
}
$revision_array = node_revision_list($entity);
krumo($revision_array);