जवाबों:
जैसा कि जुम्पी ने लिखा, नोड_रीविजन को भी अपडेट किया जाना चाहिए। आपको 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: कैश साफ़ करें
कभी-कभी सिर्फ एसक्यूएल का उपयोग करना सबसे आसान होता है। मुझे लगता है कि यह उन मामलों में से एक है।
UPDATE node SET comment = 0 WHERE type = 'nocommentsforthistype';
0 = अक्षम किया गया
1 = आसानी से
2 = पढ़ा / लिखा।
सामग्री प्रकार के लिए डिफ़ॉल्ट टिप्पणी सेटिंग्स बदलना, जैसा कि uwe999 द्वारा सुझाया गया है, केवल सामग्री प्रकार के लिए डिफ़ॉल्ट सेटिंग्स बदल जाती है । इसका मतलब यह है कि यह मौजूदा सामग्री (जैसा कि मौजूदा टिप्पणियों को हटा सकता है) के लिए पूर्वव्यापी रूप से सेटिंग में बदलाव नहीं करेगा।
आपको प्रत्येक मौजूदा नोड के लिए नोड एडिट व्यू पर जाना होगा जिसे आप टिप्पणियों को अक्षम करने और वहां की सेटिंग्स को अपडेट करने की कोशिश कर रहे हैं। यदि आपने नोड फॉर्म कॉलम मॉड्यूल की तरह एक मॉड्यूल स्थापित किया है , जो नोड ऐड / एडिट पेज से तत्वों को छिपाता / हटाता है, तो आपको नोड्स के लिए टिप्पणी सेटिंग्स बॉक्स दिखाई देने वाले इसके कॉन्फ़िगरेशन को अपडेट करना होगा।
उपरोक्त किसी भी समाधान ने मेरे लिए काम नहीं किया। टिप्पणी फॉर्म को तब भी मौजूदा नोड्स में प्रदर्शित किया जाता है जब तक कि आप नोड_रीविजन को अपडेट नहीं करते हैं।
यहाँ हुक_अपडेट_ () कार्यान्वयन है जो मेरे लिए काम करता है:
/**
* 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
नोड्स को अपडेट करने के लिए, दुर्भाग्य से, आपको प्रत्येक नोड को फिर से सहेजना होगा। नीचे हुक_अपडेट का उपयोग करें:
/**
* 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 का उपयोग कर सकते हैं ताकि पूर्वव्यापी टिप्पणियां दिखाई न दें।
व्यवस्थापक> उपस्थिति> उन्नत> कस्टम सीएसएस टैब में सीएसएस कोड जोड़ें। आपको अपनी विशिष्ट साइट के पृष्ठ प्रकारों के लिए divs के वर्ग नामों को देखना होगा। यहाँ मेरा परीक्षण साइट से एक उदाहरण है जो समाचार आइटम पृष्ठ प्रकार (मशीन का नाम "लेख") का उपयोग करता है:
.node-article .comment-wrapper{
visibility: hidden;
display: none;
}
यह बहुत सीधा है, नीचे दिए गए चरणों का पालन करें:
धन्यवाद
मैंने ऐसा लगभग ५०,००० रिकॉर्ड के साथ किया था जो मैंने ४ अलग-अलग सामग्री प्रकारों में आयात किया था। मैं डेटाबेस में एसक्यूएल प्रश्नों के साथ मिटाना और पुन: आयात या गड़बड़ नहीं करना चाहता था। यदि आप सभी नोड्स से टिप्पणी कार्यक्षमता को हटाना चाहते हैं, तो बस टिप्पणी मॉड्यूल को अक्षम करें।
UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0
। मेरे लिए काम किया :-)।