ในที่สุดวิธีการปิดการใช้งานความคิดเห็นในประเภทเนื้อหา?


12

ฉันพยายามปิดการใช้งานความคิดเห็นในเว็บฟอร์ม ฉันลองการตั้งค่าทั้งหมดที่ฉันสามารถหาได้ แต่:

  • ลิงก์ไปยังแบบฟอร์มความคิดเห็นยังคงปรากฏอยู่
  • ฟิลด์ชื่อและปุ่มส่งยังคงปรากฏในแบบฟอร์มแสดงความคิดเห็น

ใครช่วยแนะนำฉันได้ไหม

คำตอบ:


11

ตามที่juampyเขียนไว้ node_revision ควรได้รับการอัพเดตเช่นกัน คุณต้องดำเนินการ 2 แบบสอบถาม:

ขั้นตอนที่ 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: ล้างแคช


1
UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0และถ้าคุณเพิ่งติดตั้งสิ่งที่ต้องการสอบแล้วคุณสามารถทำงานได้เพียงแค่ ทำงานให้ฉัน :-)
Nux

หากคุณต้องการลบความคิดเห็นออกจากโหนดทุกประเภทให้ใช้เคียวรี @Nux
albertski

7

บางครั้งมันง่ายที่สุดในการใช้ SQL ฉันคิดว่านี่เป็นหนึ่งในกรณีเหล่านั้น

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

0 = ปิดใช้งาน

1 = อ่านอย่างเดียว

2 = อ่าน / เขียน


2
0 = ปิดใช้งาน 1 = อ่านได้อย่างเดียว 2 = อ่าน / เขียน ผมคิดว่านี่เป็นคำตอบที่ดีที่สุด :)
AyeshK

@ AyeshK ดีฉันได้แก้ไขคำตอบ
niksmac

ถ้าคุณรู้วิธีการเขียน / ดำเนินการแบบสอบถามเช่นนี้คุณอาจไม่ได้พยายามที่จะคิดออกวิธีการแสดงความคิดเห็นในทางกลับกันในแง่ของความเร็ว / ประสิทธิภาพเต็มที่การสืบค้นด้วย db db วิธีที่ดีกว่าของฉัน :)
David Meister

7

การเปลี่ยนการตั้งค่าความคิดเห็นเริ่มต้นสำหรับประเภทเนื้อหาตามที่แนะนำโดย uwe999 จะเปลี่ยนเฉพาะการตั้งค่าเริ่มต้นสำหรับประเภทเนื้อหา ซึ่งหมายความว่าจะไม่เปลี่ยนการตั้งค่าย้อนหลังสำหรับเนื้อหาที่มีอยู่ (ซึ่งอาจลบความคิดเห็นที่มีอยู่)

คุณจะต้องไปที่มุมมองการแก้ไขโหนดสำหรับแต่ละโหนดที่มีอยู่ซึ่งคุณกำลังพยายามปิดใช้งานความคิดเห็นและอัปเดตการตั้งค่าที่นั่น หากคุณติดตั้งโมดูลเช่นโมดูลคอลัมน์แบบฟอร์มโหนดซึ่งซ่อน / ลบองค์ประกอบออกจากหน้าเพิ่ม / แก้ไขโหนดคุณจะต้องอัปเดตการกำหนดค่าของกล่องการตั้งค่าความคิดเห็นจะปรากฏขึ้นสำหรับโหนด


3

วิธีการแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉัน แบบฟอร์มความคิดเห็นจะยังคงปรากฏในโหนดที่มีอยู่เว้นแต่ว่าคุณจะอัปเดต 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();
}

2

คุณปิดใช้งานความคิดเห็นใน "โครงสร้าง / ประเภทเนื้อหา / [ชื่อประเภท] / แก้ไข / การตั้งค่าความคิดเห็นตั้ง" การตั้งค่าความคิดเห็นเริ่มต้นสำหรับเนื้อหาใหม่ "เพื่อซ่อน

หากคุณมีความคิดเห็นอยู่แล้วคุณสามารถลบได้ภายใต้ "เนื้อหา / ความคิดเห็น" หรือยกเลิกการเผยแพร่


ฉันทำมัน แต่ลิงก์ไปยังแบบฟอร์มยังคงเป็นตัวเลือกเท่านั้นที่จะเปลี่ยนเทมเพลตหรือเพียงแค่ CSS c บริสุทธิ์ diplay: ไม่มีแปลก
Codium

คุณใช้เทมเพลตอะไร
Uwe

1

ฉันไม่แน่ใจเกี่ยวกับปัญหาของคุณ แต่หนึ่งเคล็ดลับสกปรกอาจสร้างเทมเพลตพิเศษสำหรับประเภทเนื้อหาของคุณและลบส่วนความคิดเห็น


1

ปิดใช้งานความคิดเห็นที่นี่ก่อน:

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

วิธีที่ง่ายที่สุดในการแสดงความคิดเห็นปิดการใช้งานในเว็บฟอร์มก็คือการไปแก้ไขเว็บฟอร์มและในด้านล่างของตัวเลือกแก้ไขมีตัวเลือกของความคิดเห็นการตั้งค่า

โดยค่าเริ่มต้นมันจะเปิดเสมอดังนั้นจึงปิดและส่วนความคิดเห็นจากเว็บฟอร์มจะหายไป ...


1

คุณสามารถใช้ CSS เพื่อซ่อนส่วนความคิดเห็นเพื่อที่ความคิดเห็นย้อนหลังจะไม่แสดง

เพิ่มรหัส CSS ไปที่ผู้ดูแลระบบ> ลักษณะ> ขั้นสูง> แท็บ CSS ที่กำหนดเอง คุณจะต้องดูชื่อคลาสของ divs สำหรับประเภทหน้าเว็บไซต์ของคุณโดยเฉพาะ นี่คือตัวอย่างจากไซต์ทดสอบของฉันซึ่งใช้ประเภทหน้าข่าวรายการ (ชื่อเครื่อง "บทความ"):

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

0

ใช้ Views Bulk Operations พร้อมการดำเนินการเริ่มต้น: "Modify / Change Entity Values" ที่นี่คุณสามารถตั้งค่าการแสดงความคิดเห็นเป็นปิดเพื่อโหนดที่มีอยู่


0

มันค่อนข้างตรงไปตรงมาตามขั้นตอนด้านล่าง:

  1. ไปที่โครงสร้าง> ประเภทเนื้อหา> เว็บฟอร์ม
  2. จากนั้นแก้ไขเว็บฟอร์มและคลิกที่การตั้งค่าความคิดเห็นในการตั้งค่าด้านซ้ายมือ
  3. เปลี่ยนค่า "การตั้งค่าความคิดเห็นเริ่มต้นสำหรับเนื้อหาใหม่" เป็น 'ปิด' และบันทึกการตั้งค่า

ขอบคุณ


0

ฉันมีสิ่งนี้เกิดขึ้นประมาณ 50,000 รายการที่ฉันนำเข้ามาใน 4 ประเภทเนื้อหาที่แตกต่างกัน ฉันไม่ต้องการที่จะลบและนำเข้าอีกครั้งหรือยุ่งกับแบบสอบถาม SQL ในฐานข้อมูล หากคุณต้องการลบฟังก์ชั่นการแสดงความคิดเห็นออกจากโหนดทั้งหมดเพียงปิดการใช้งานโมดูลความคิดเห็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.