सामग्री प्रकार पर टिप्पणियों को आखिर कैसे अक्षम करें?


12

मैं वेबफॉर्म पर टिप्पणियों को अक्षम करने का प्रयास कर रहा हूं। मैंने उन सभी सेटिंग्स की कोशिश की, जिन्हें मैं पा सकता था, लेकिन:

  • टिप्पणी प्रपत्र के लिंक अभी भी दिखाई देते हैं
  • नाम फ़ील्ड और सबमिट बटन अभी भी टिप्पणी फ़ॉर्म पर दिखाई देते हैं

क्या कोई मुझे कोई सलाह दे सकता है?

जवाबों:


11

जैसा कि जुम्पी ने लिखा, नोड_रीविजन को भी अपडेट किया जाना चाहिए। आपको 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
और अगर आपने अभी Disqus जैसा कुछ स्थापित किया है, तो आप बस चला सकते हैं UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0। मेरे लिए काम किया :-)।
नक्स

यदि आपको सभी नोड प्रकारों से टिप्पणियों को हटाने की आवश्यकता है तो बस @Nux क्वेरीज़ का उपयोग करें।
अल्बर्ट्सकी

7

कभी-कभी सिर्फ एसक्यूएल का उपयोग करना सबसे आसान होता है। मुझे लगता है कि यह उन मामलों में से एक है।

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

0 = अक्षम किया गया

1 = आसानी से

2 = पढ़ा / लिखा।


2
0 = विकलांग, 1 = आसानी से, 2 = पढ़ा / लिखा। मुझे लगता है कि यह सबसे अच्छा जवाब है :)
आयुष

@AyeshK, अच्छा मैंने जवाब संपादित किया है।
niksmac

एक तरफ, यदि आप इस तरह से क्वेरी लिखना / निष्पादित करना जानते हैं, तो आप शायद यह पता लगाने के लिए संघर्ष नहीं कर रहे हैं कि दूसरी ओर, सरासर गति / दक्षता के संदर्भ में एक db क्वेरी आधारित समाधान कैसे हो सकता है। मेरी तुलना में बेहतर है :)
डेविड मीस्टर

7

सामग्री प्रकार के लिए डिफ़ॉल्ट टिप्पणी सेटिंग्स बदलना, जैसा कि uwe999 द्वारा सुझाया गया है, केवल सामग्री प्रकार के लिए डिफ़ॉल्ट सेटिंग्स बदल जाती है । इसका मतलब यह है कि यह मौजूदा सामग्री (जैसा कि मौजूदा टिप्पणियों को हटा सकता है) के लिए पूर्वव्यापी रूप से सेटिंग में बदलाव नहीं करेगा।

आपको प्रत्येक मौजूदा नोड के लिए नोड एडिट व्यू पर जाना होगा जिसे आप टिप्पणियों को अक्षम करने और वहां की सेटिंग्स को अपडेट करने की कोशिश कर रहे हैं। यदि आपने नोड फॉर्म कॉलम मॉड्यूल की तरह एक मॉड्यूल स्थापित किया है , जो नोड ऐड / एडिट पेज से तत्वों को छिपाता / हटाता है, तो आपको नोड्स के लिए टिप्पणी सेटिंग्स बॉक्स दिखाई देने वाले इसके कॉन्फ़िगरेशन को अपडेट करना होगा।


3

उपरोक्त किसी भी समाधान ने मेरे लिए काम नहीं किया। टिप्पणी फॉर्म को तब भी मौजूदा नोड्स में प्रदर्शित किया जाता है जब तक कि आप नोड_रीविजन को अपडेट नहीं करते हैं।

यहाँ हुक_अपडेट_ () कार्यान्वयन है जो मेरे लिए काम करता है:

/**
 * 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

आप "संरचना / सामग्री प्रकार / [प्रकार का नाम] / टिप्पणियों / सेटिंग्स में टिप्पणियों को अक्षम करते हैं।" नई सामग्री के लिए डिफ़ॉल्ट टिप्पणी सेटिंग "सेट करें।

यदि आपके पास मौजूदा टिप्पणियां हैं, तो आप उन्हें "सामग्री / टिप्पणियों" के तहत हटा सकते हैं या बस उन्हें अप्रकाशित कर सकते हैं।


मैंने इसे किया था, लेकिन फॉर्म के लिए लिंक अभी भी है, संभवतः केवल विकल्प टेम्पलेट या सिर्फ शुद्ध सीएसएस
डिप्लोमा

आप किस टेम्पलेट का उपयोग कर रहे हैं?
उवे

1

मुझे आपके मुद्दे पर यकीन नहीं है, लेकिन एक गंदी चाल आपके कंटेंट टाइप के लिए एक विशेष टेम्पलेट बनाने और टिप्पणी भागों को हटाने के लिए हो सकती है।


1

टिप्पणियों को पहले यहां अक्षम करें:

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' को बदलना न भूलें ।


1

वेबफॉर्म में टिप्पणियों को अक्षम करने का सबसे सरल तरीका केवल ईडीआईटी वेबफॉर्म पर जाना है और ईडीआईटी विकल्प के निचले भाग में टिप्पणियाँ सेटिंग्स का विकल्प है ।

द्वारा डिफ़ॉल्ट इसकी हमेशा खुली तो यह करना बंद कर दिया और टिप्पणी अनुभाग वेबफ़ॉर्म से होगा गायब हो जाते हैं ...


1

आप टिप्पणी अनुभाग को छिपाने के लिए CSS का उपयोग कर सकते हैं ताकि पूर्वव्यापी टिप्पणियां दिखाई न दें।

व्यवस्थापक> उपस्थिति> उन्नत> कस्टम सीएसएस टैब में सीएसएस कोड जोड़ें। आपको अपनी विशिष्ट साइट के पृष्ठ प्रकारों के लिए divs के वर्ग नामों को देखना होगा। यहाँ मेरा परीक्षण साइट से एक उदाहरण है जो समाचार आइटम पृष्ठ प्रकार (मशीन का नाम "लेख") का उपयोग करता है:

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

0

डिफ़ॉल्ट ऑपरेशन के साथ, व्यू ऑपरेशंस का उपयोग करें: "संशोधित मानों को बदलें / बदलें"। यहां आप कमेंटिंग को मौजूदा नोड्स पर बंद कर सकते हैं।


0

यह बहुत सीधा है, नीचे दिए गए चरणों का पालन करें:

  1. संरचना> सामग्री प्रकार> वेबफॉर्म पर नेविगेट करें
  2. फिर वेबफॉर्म को एडिट करें और लेफ्ट हैंड साइड सेटिंग्स में कमेंट सेटिंग्स पर क्लिक करें।
  3. नई सामग्री के लिए "डिफ़ॉल्ट टिप्पणी सेटिंग बदलें" मान को 'बंद करें' और सेटिंग को सहेजें।

धन्यवाद


0

मैंने ऐसा लगभग ५०,००० रिकॉर्ड के साथ किया था जो मैंने ४ अलग-अलग सामग्री प्रकारों में आयात किया था। मैं डेटाबेस में एसक्यूएल प्रश्नों के साथ मिटाना और पुन: आयात या गड़बड़ नहीं करना चाहता था। यदि आप सभी नोड्स से टिप्पणी कार्यक्षमता को हटाना चाहते हैं, तो बस टिप्पणी मॉड्यूल को अक्षम करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.