it-swarm.asia

كيف يمكنني حذف جميع مراجعات العقدة / الحقول؟

لدي drupal 7 مواقع ، حيث تحتفظ بمراجعات العقدة والحقل. أحتفظ بمراجعات للحالة حيث يتم حفظ نسخة خاطئة جديدة عن طريق الخطأ وأريد العودة مرة أخرى.

ولكن ، الآن أريد تنظيف قاعدة البيانات وتحسينها حتى تأخذ مساحة أقل في القرص الصلب.

ما هي بعض طرق حذف جميع المراجعات ماعدا المراجعات الحالية لجميع العقد/حقول الموقع؟

17
john

استخدم حذف العقدة الوحدة لحذف وإدارة المراجعات الخاصة بك. (أنا المشرف على الوحدة).

تتيح لك وحدة Node Revision Delete إدارة المراجعات من Node وفقًا لاختيارك. وهي تساعدك في الاحتفاظ بعدد معين من المراجعات للعقدة . توفر لك هذه الوحدة المرونة لتطبيق حذف المراجعة لنوع المحتوى المحدد وتشغيله في وقت محدد. يمكنك إدارة إعداداتك من Node Revision Delete Administration Page.

13
Kaushal Kishore

لا يوجد بعد إصدار مستقر لـ حذف المراجعة لكن منفذ D7 في طريقه (لست متأكدًا مما إذا كان يعمل على الإطلاق).

في هذا الموضوع اقترح شخص ما استخدام VBO لعزل المراجعات وحذفها.

إذا كنت تشعر بالراحة مع واجهة برمجة التطبيقات ، فقم بإجراء حلقة عبر جميع عقدك ، واسترجع المراجعات باستخدام 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';
15
tostinni

في نفس الحالة استخدمت الرمز أدناه:

foreach (node_load_multiple($nids) as $node) {
  // Delete sub revisions.
  foreach (node_revision_list($node) as $vid => $revision) {
    node_revision_delete($vid);
  }
  // Delete archived revisions.
  revisioning_delete_archived_revisions($node);
}
2
mrded

لقد أجريت هذا لأصحاب 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);
1
Merrick

Node Revision Delete الوحدة الآن لديها إصدار مستقر.

تتيح لك وحدة Node Revision Delete تتبع وتعقب المراجعات القديمة لأنواع المحتوى.

  • حدد الحد الأقصى لعدد المراجعات التي يجب الاحتفاظ بها لكل نوع محتوى.
  • تشغيل على Drush ، أو تشغيل cron أو في فترة مختلفة (يوميًا ، أسبوعيًا ، إلخ).
0
Juampy NR