it-swarm.asia

كيفية تعطيل التعليقات في النهاية على نوع المحتوى؟

أحاول تعطيل التعليقات على نموذج الويب. جربت كل الإعدادات التي يمكنني العثور عليها ، ولكن:

  • رابط لنموذج التعليق لا يزال يظهر
  • حقل الاسم وزر الإرسال لا يزالان يظهران في نموذج التعليق

هل يمكن لأحد أن يعطيني أي نصيحة؟

12
Codium

كما كتب 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: مسح ذاكرة التخزين المؤقت

11
Dawid Tomaszewski

يؤدي تغيير إعدادات التعليق الافتراضية لنوع المحتوى ، كما هو مقترح من قبل uwe999 إلى تغيير الإعدادات الافتراضية الافتراضية لنوع المحتوى. وهذا يعني أنه لن يغير الإعدادات بأثر رجعي للمحتوى الحالي (حيث قد يؤدي ذلك إلى حذف التعليقات الموجودة).

سيكون عليك زيارة عرض تحرير العقدة لكل عقدة موجودة تحاول تعطيل التعليقات عليها وتحديث الإعدادات هناك. إذا قمت بتثبيت وحدة مثل أعمدة نموذج العقدة الوحدة ، التي تخفي/تزيل العناصر من صفحات إضافة/تحرير العقدة ، فسيتعين عليك تحديث تكوينها يظهر مربع إعدادات التعليق للعقد.

7
David Meister

في بعض الأحيان يكون أسهل استخدام SQL فقط. هذه ، في اعتقادي ، واحدة من تلك الحالات.

UPDATE node SET comment = 0 WHERE type = 'nocommentsforthistype';

0 = معطل

1 = للقراءة فقط

2 = قراءة/كتابة.

7
skomorokh

لم يعمل لي أي من الحلول المذكورة أعلاه. لا يزال نموذج التعليق معروضًا في العقد الحالية ما لم تقم بتحديث 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();
}
3
Juampy NR

يمكنك تعطيل التعليقات في "بنية/أنواع المحتوى/[اسم النوع]/إعدادات التعديل/التعليق. اضبط" إعداد التعليق الافتراضي للمحتوى الجديد "على مخفي.

إذا كانت لديك تعليقات حالية ، فيمكنك حذفها من "المحتوى/التعليقات" أو إلغاء نشرها فقط.

2
uwe

لست متأكدًا من مشكلتك ، ولكن الحيلة القذرة يمكن أن تكون إنشاء قالب خاص لنوع المحتوى الخاص بك وإزالة أجزاء التعليق.

1
tostinni

إن أبسط طريقة تعطيل التعليقات في نموذج الويب هي ببساطة الانتقال إلى EDIT webform وفي أسفل خيار EDIT يوجد خيار - إعدادات التعليقات.

عن طريق افتراضيًا دائمًا OPEN لذا اجعله مغلق و قسم التعليقات من نموذج الويب سوف تختفي ...

1
Nitesh Sethia

يمكنك استخدام CSS لإخفاء قسم التعليقات حتى لا تظهر التعليقات بأثر رجعي.

أضف رمز CSS إلى المسؤول> المظهر> متقدم> علامة التبويب CSS المخصصة. سيكون عليك إلقاء نظرة على أسماء فئات div لأنواع صفحات موقعك المحدد. إليك مثال من موقع الاختبار الخاص بي والذي يستخدم نوع صفحة عنصر الأخبار (اسم الجهاز "مقالة"):

.node-article .comment-wrapper{
 visibility: hidden;
 display: none;
 }
1
Emma

قم بتعطيل التعليقات هنا أولاً:

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' بنوع العقدة الخاص بك.

1
mrded

إنه مستقيم إلى الأمام ، اتبع الخطوات أدناه:

  1. انتقل إلى الهيكل> أنواع المحتوى> نموذج الويب
  2. ثم قم بتحرير نموذج الويب وانقر فوق إعدادات التعليق في إعدادات الجانب الأيسر.
  3. غيّر قيمة "إعداد التعليق الافتراضي للمحتوى الجديد" إلى "إغلاق" واحفظ الإعداد.

شكر

0
Sandesh Manghale

حدث هذا لحوالي 50000 سجل قمت باستيراده في 4 أنواع مختلفة من المحتوى. لم أكن أرغب في محو وإعادة استيراد أو العبث باستخدام استعلامات SQL في قاعدة البيانات. إذا كنت تريد إزالة وظيفة التعليق من جميع العقد ، فقط قم بتعطيل وحدة التعليقات.

0
MascotDB

استخدم العمليات المجمّعة في طرق العرض ، مع العملية الافتراضية: "تعديل/تغيير قيم الكيان". هنا يمكنك تعيين تعليق مغلق للعقد الموجودة.

0
giorgio79