ฉันพยายามปิดการใช้งานความคิดเห็นในเว็บฟอร์ม ฉันลองการตั้งค่าทั้งหมดที่ฉันสามารถหาได้ แต่:
- ลิงก์ไปยังแบบฟอร์มความคิดเห็นยังคงปรากฏอยู่
- ฟิลด์ชื่อและปุ่มส่งยังคงปรากฏในแบบฟอร์มแสดงความคิดเห็น
ใครช่วยแนะนำฉันได้ไหม
ฉันพยายามปิดการใช้งานความคิดเห็นในเว็บฟอร์ม ฉันลองการตั้งค่าทั้งหมดที่ฉันสามารถหาได้ แต่:
ใครช่วยแนะนำฉันได้ไหม
คำตอบ:
ตามที่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: ล้างแคช
บางครั้งมันง่ายที่สุดในการใช้ SQL ฉันคิดว่านี่เป็นหนึ่งในกรณีเหล่านั้น
UPDATE node SET comment = 0 WHERE type = 'nocommentsforthistype';
0 = ปิดใช้งาน
1 = อ่านอย่างเดียว
2 = อ่าน / เขียน
การเปลี่ยนการตั้งค่าความคิดเห็นเริ่มต้นสำหรับประเภทเนื้อหาตามที่แนะนำโดย uwe999 จะเปลี่ยนเฉพาะการตั้งค่าเริ่มต้นสำหรับประเภทเนื้อหา ซึ่งหมายความว่าจะไม่เปลี่ยนการตั้งค่าย้อนหลังสำหรับเนื้อหาที่มีอยู่ (ซึ่งอาจลบความคิดเห็นที่มีอยู่)
คุณจะต้องไปที่มุมมองการแก้ไขโหนดสำหรับแต่ละโหนดที่มีอยู่ซึ่งคุณกำลังพยายามปิดใช้งานความคิดเห็นและอัปเดตการตั้งค่าที่นั่น หากคุณติดตั้งโมดูลเช่นโมดูลคอลัมน์แบบฟอร์มโหนดซึ่งซ่อน / ลบองค์ประกอบออกจากหน้าเพิ่ม / แก้ไขโหนดคุณจะต้องอัปเดตการกำหนดค่าของกล่องการตั้งค่าความคิดเห็นจะปรากฏขึ้นสำหรับโหนด
วิธีการแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉัน แบบฟอร์มความคิดเห็นจะยังคงปรากฏในโหนดที่มีอยู่เว้นแต่ว่าคุณจะอัปเดต 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();
}
คุณปิดใช้งานความคิดเห็นใน "โครงสร้าง / ประเภทเนื้อหา / [ชื่อประเภท] / แก้ไข / การตั้งค่าความคิดเห็นตั้ง" การตั้งค่าความคิดเห็นเริ่มต้นสำหรับเนื้อหาใหม่ "เพื่อซ่อน
หากคุณมีความคิดเห็นอยู่แล้วคุณสามารถลบได้ภายใต้ "เนื้อหา / ความคิดเห็น" หรือยกเลิกการเผยแพร่
ฉันไม่แน่ใจเกี่ยวกับปัญหาของคุณ แต่หนึ่งเคล็ดลับสกปรกอาจสร้างเทมเพลตพิเศษสำหรับประเภทเนื้อหาของคุณและลบส่วนความคิดเห็น
ปิดใช้งานความคิดเห็นที่นี่ก่อน:
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'เป็นประเภทโหนดของคุณ
วิธีที่ง่ายที่สุดในการแสดงความคิดเห็นปิดการใช้งานในเว็บฟอร์มก็คือการไปแก้ไขเว็บฟอร์มและในด้านล่างของตัวเลือกแก้ไขมีตัวเลือกของความคิดเห็นการตั้งค่า
โดยค่าเริ่มต้นมันจะเปิดเสมอดังนั้นจึงปิดและส่วนความคิดเห็นจากเว็บฟอร์มจะหายไป ...
คุณสามารถใช้ CSS เพื่อซ่อนส่วนความคิดเห็นเพื่อที่ความคิดเห็นย้อนหลังจะไม่แสดง
เพิ่มรหัส CSS ไปที่ผู้ดูแลระบบ> ลักษณะ> ขั้นสูง> แท็บ CSS ที่กำหนดเอง คุณจะต้องดูชื่อคลาสของ divs สำหรับประเภทหน้าเว็บไซต์ของคุณโดยเฉพาะ นี่คือตัวอย่างจากไซต์ทดสอบของฉันซึ่งใช้ประเภทหน้าข่าวรายการ (ชื่อเครื่อง "บทความ"):
.node-article .comment-wrapper{
visibility: hidden;
display: none;
}
ใช้ Views Bulk Operations พร้อมการดำเนินการเริ่มต้น: "Modify / Change Entity Values" ที่นี่คุณสามารถตั้งค่าการแสดงความคิดเห็นเป็นปิดเพื่อโหนดที่มีอยู่
มันค่อนข้างตรงไปตรงมาตามขั้นตอนด้านล่าง:
ขอบคุณ
ฉันมีสิ่งนี้เกิดขึ้นประมาณ 50,000 รายการที่ฉันนำเข้ามาใน 4 ประเภทเนื้อหาที่แตกต่างกัน ฉันไม่ต้องการที่จะลบและนำเข้าอีกครั้งหรือยุ่งกับแบบสอบถาม SQL ในฐานข้อมูล หากคุณต้องการลบฟังก์ชั่นการแสดงความคิดเห็นออกจากโหนดทั้งหมดเพียงปิดการใช้งานโมดูลความคิดเห็น
UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0
และถ้าคุณเพิ่งติดตั้งสิ่งที่ต้องการสอบแล้วคุณสามารถทำงานได้เพียงแค่ ทำงานให้ฉัน :-)