답변:
사용 노드 개정 삭제 삭제하고 개정을 관리하는 모듈. (나는 모듈의 관리자입니다.)
노드 개정 삭제 모듈을 사용하면 원하는대로 노드 개정을 관리 할 수 있습니다. 노드의 특정 개정 수를 유지하는 데 도움이됩니다. 이 모듈은 특정 컨텐츠 유형에 대해 개정 삭제를 적용하고 특정 시간에 실행할 수있는 유연성을 제공합니다. 노드 개정판 삭제 관리 페이지에서 설정을 관리 할 수 있습니다.
개정판 삭제에 대한 안정적인 릴리스는 아직 없지만 D7 포트 가 나옵니다 (기능이 제대로 작동하는지 확실하지 않음).
이 스레드에서 누군가 VBO 를 사용하여 개정을 격리하고 삭제하도록 제안 했습니다.
API에 익숙한 경우 모든 노드를 반복하고를 사용하여 개정을 검색 한 후를 사용 node_revision_list()
하여 삭제하십시오 node_revision_delete()
.
최후의 수단으로 ( 내가하는 것처럼 ) DB를 엉망으로 만들고 싶다면 개정판의 행 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()
, 그래서 라이브 데이터를 사용하기 전에 원하는 결과에 대한 귀하의 DB 및 테스트를 백업 .
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);