أحاول تعطيل التعليقات على نموذج الويب. جربت كل الإعدادات التي يمكنني العثور عليها ، ولكن:
هل يمكن لأحد أن يعطيني أي نصيحة؟
كما كتب juampy ، يجب تحديث node_revision أيضًا. تحتاج إلى تنفيذ استعلامين:
الخطوة 1:
UPDATE node SET comment = 0 WHERE type = 'your_content_type'
الخطوة 2:
UPDATE node_revision nrev
INNER JOIN node nd ON nrev.nid = nd.nid AND nd.type = 'your_content_type'
SET nrev.comment = 0
الخطوة 3: مسح ذاكرة التخزين المؤقت
يؤدي تغيير إعدادات التعليق الافتراضية لنوع المحتوى ، كما هو مقترح من قبل uwe999 إلى تغيير الإعدادات الافتراضية الافتراضية لنوع المحتوى. وهذا يعني أنه لن يغير الإعدادات بأثر رجعي للمحتوى الحالي (حيث قد يؤدي ذلك إلى حذف التعليقات الموجودة).
سيكون عليك زيارة عرض تحرير العقدة لكل عقدة موجودة تحاول تعطيل التعليقات عليها وتحديث الإعدادات هناك. إذا قمت بتثبيت وحدة مثل أعمدة نموذج العقدة الوحدة ، التي تخفي/تزيل العناصر من صفحات إضافة/تحرير العقدة ، فسيتعين عليك تحديث تكوينها يظهر مربع إعدادات التعليق للعقد.
في بعض الأحيان يكون أسهل استخدام SQL فقط. هذه ، في اعتقادي ، واحدة من تلك الحالات.
UPDATE node SET comment = 0 WHERE type = 'nocommentsforthistype';
0 = معطل
1 = للقراءة فقط
2 = قراءة/كتابة.
لم يعمل لي أي من الحلول المذكورة أعلاه. لا يزال نموذج التعليق معروضًا في العقد الحالية ما لم تقم بتحديث node_revision أيضًا.
في ما يلي تطبيق hook_update_N () الذي نجح معي:
/**
* Implements hook_update_N().
*
* Disables comments in existing event nodes.
*/
function hook_update_7000(&$sandbox) {
$content_type = 'event';
// Update node table.
db_update('node')
->fields(array('comment' => 1))
->condition('type', $content_type)
->execute();
// Update node_revision table.
$nids = db_select('node', 'n')
->fields('n', array('nid'))
->condition('type', $content_type)
->execute()
->fetchCol();
db_update('node_revision')
->fields(array('comment' => 1))
->condition('nid', $nids)
->execute();
}
يمكنك تعطيل التعليقات في "بنية/أنواع المحتوى/[اسم النوع]/إعدادات التعديل/التعليق. اضبط" إعداد التعليق الافتراضي للمحتوى الجديد "على مخفي.
إذا كانت لديك تعليقات حالية ، فيمكنك حذفها من "المحتوى/التعليقات" أو إلغاء نشرها فقط.
لست متأكدًا من مشكلتك ، ولكن الحيلة القذرة يمكن أن تكون إنشاء قالب خاص لنوع المحتوى الخاص بك وإزالة أجزاء التعليق.
إن أبسط طريقة تعطيل التعليقات في نموذج الويب هي ببساطة الانتقال إلى EDIT webform وفي أسفل خيار EDIT يوجد خيار - إعدادات التعليقات.
عن طريق افتراضيًا دائمًا OPEN لذا اجعله مغلق و قسم التعليقات من نموذج الويب سوف تختفي ...
يمكنك استخدام CSS لإخفاء قسم التعليقات حتى لا تظهر التعليقات بأثر رجعي.
أضف رمز CSS إلى المسؤول> المظهر> متقدم> علامة التبويب CSS المخصصة. سيكون عليك إلقاء نظرة على أسماء فئات div لأنواع صفحات موقعك المحدد. إليك مثال من موقع الاختبار الخاص بي والذي يستخدم نوع صفحة عنصر الأخبار (اسم الجهاز "مقالة"):
.node-article .comment-wrapper{
visibility: hidden;
display: none;
}
قم بتعطيل التعليقات هنا أولاً:
structure->content types->{node_type}->edit->comment settings
لتحديث العقد ، لسوء الحظ ، يجب عليك إعادة حفظ كل عقدة. استخدم hook_update أدناه:
/**
* Disable comments on node_type
*/
function hook_update_N(&$sandbox) {
$content_type = 'node_type';
// Initialize batch.
if (!isset($sandbox['total'])) {
$query = db_select('node');
$query->addExpression('COUNT(*)');
$query->condition('type', $content_type);
$sandbox['total'] = $query->execute()->fetchField();
$sandbox['progress'] = 0;
if (empty($sandbox['total'])) {
$sandbox['#finished'] = 1;
return t('No %type nodes exist in database.', array('%type' => $content_type));
}
}
// Get and update nodes.
$nids = db_select('node')
->fields('node', array('nid'))
->condition('type', $content_type)
->range(0, 10)
->execute()
->fetchCol();
if (!empty($nids)) {
$nodes = node_load_multiple($nids, NULL, TRUE);
foreach ($nodes as $node) {
$node->comment = 1; // I set comments as 1 where value of 2 enables the comments.
node_save($node); // Re-save the node.
}
}
// Increment & check progress.
$sandbox['progress'] += count($nids);
if (empty($nids) || $sandbox['progress'] >= $sandbox['total']) {
$sandbox['#finished'] = 1;
return t('Updated @count nodes.', array('@count' => $sandbox['progress']));
}
else {
$sandbox['#finished'] = $sandbox['progress'] / $sandbox['total'];
}
}
لا تنس استبدال 'node_type' بنوع العقدة الخاص بك.
إنه مستقيم إلى الأمام ، اتبع الخطوات أدناه:
شكر
حدث هذا لحوالي 50000 سجل قمت باستيراده في 4 أنواع مختلفة من المحتوى. لم أكن أرغب في محو وإعادة استيراد أو العبث باستخدام استعلامات SQL في قاعدة البيانات. إذا كنت تريد إزالة وظيفة التعليق من جميع العقد ، فقط قم بتعطيل وحدة التعليقات.
استخدم العمليات المجمّعة في طرق العرض ، مع العملية الافتراضية: "تعديل/تغيير قيم الكيان". هنا يمكنك تعيين تعليق مغلق للعقد الموجودة.