コンテンツタイプのコメントを最終的に無効にする方法は?


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
そして、Disqusのようなものをインストールした場合は、実行するだけUPDATE node SET comment = 0; UPDATE node_revision SET comment = 0です。私のために働いた:-)。
Nux

すべてのノードタイプからコメントを削除する必要がある場合は、@ Nuxクエリを使用します。
-albertski

7

SQLを使用するのが最も簡単な場合があります。これはそのようなケースの1つだと思います。

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

0 =無効

1 =読み取り専用

2 =読み取り/書き込み。


2
0 =無効、1 =読み取り専用、2 =読み取り/書き込み。これが最良の答えだと思う:)
AyeshK

@AyeshK、素敵な答えを編集しました。
niksmac

このようなクエリを作成/実行する方法を知っていれば、コメントをオフにする方法を見つけるのに苦労することはありません私よりも良い方法:)
デビッドマイスター14年

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

「構造/コンテンツタイプ/ [タイプの名前] /編集/コメント設定でコメントを無効にします。「新しいコンテンツのデフォルトのコメント設定」を非表示に設定します。

既存のコメントがある場合は、「content / comments」でコメントを削除するか、単に非公開にします。


私はそれをしなかったが、フォームへのリンクは、まだpropably唯一のオプションが変更されたテンプレートまたは単に純粋なCSSのdiplayである:なし、奇妙な
ミル属

どのテンプレートを使用していますか?
uwe

1

私はあなたの問題についてはわかりませんが、コンテンツタイプ用の特別なテンプレートを作成し、コメント部分を削除することは、汚いトリックの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

最も簡単な方法を無効にコメントWebフォームは、単純に行くことですEDIT Webフォームのオプションがあり、EDITオプションの底にコメント設定

することにより、デフォルトの常にOPENは、それが作る閉じたコメントセクション Webフォームからはなり消えて ...


1

CSSを使用して、コメントセクションを非表示にして、遡及的なコメントが表示されないようにすることができます。

[管理]> [外観]> [詳細]> [カスタムCSS]タブにCSSコードを追加します。特定のサイトのページタイプのdivのクラス名を確認する必要があります。以下は、ニュース項目ページタイプ(マシン名「article」)を使用する私のテストサイトの例です。

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

0

ビューの一括操作を使用します。デフォルトの操作は「エンティティ値の変更/変更」です。ここで、既存のノードに対して閉じたコメントを設定できます。


0

とても簡単です。以下の手順に従ってください。

  1. [構造]> [コンテンツタイプ]> [ウェブフォーム]に移動します
  2. 次に、Webフォームを編集し、左側の設定で[コメント設定]をクリックします。
  3. 「新しいコンテンツのデフォルトのコメント設定」値を「閉じる」に変更し、設定を保存します。

ありがとう


0

これは、4つの異なるコンテンツタイプにインポートした約50,000件のレコードで発生しました。データベース内のSQLクエリを消去して再インポートしたり、いじったりしたくありませんでした。すべてのノードからコメント機能を削除する場合は、コメントモジュールを無効にします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.