ウェブフォームのコメントを無効にしようとしています。私は見つけることができるすべての設定を試しましたが、
誰か私にアドバイスをくれませんか?
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:キャッシュを消去する
Uwe999によって提案されているように、コンテンツタイプのデフォルトのコメント設定を変更すると、コンテンツタイプのdefault設定のみが変更されます。つまり、既存のコンテンツの設定をさかのぼって変更することはありません(既存のコメントが削除される可能性があるため)。
コメントを無効にする既存の各ノードのノード編集ビューにアクセスして、そこで設定を更新する必要があります。ノードの追加/編集ページから要素を非表示/削除する ノードフォームの列 モジュールのようなモジュールをインストールした場合は、ノードのコメント設定ボックスが表示されるように構成を更新する必要があります。
SQLを使用するのが最も簡単な場合もあります。これはそういうケースだと思います。
UPDATE node SET comment = 0 WHERE type = 'nocommentsforthistype';
0 =無効
1 =読み取り専用
2 =読み取り/書き込み。
上記の解決策のどれも私にとってうまくいきませんでした。 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();
}
「構造/コンテンツタイプ/ [タイプの名前] /編集/コメント設定でコメントを無効にします。「新しいコンテンツのデフォルトのコメント設定」を非表示に設定します。
既存のコメントがある場合は、「content/comments」の下で削除するか、単に非公開にすることができます。
私はあなたの問題については確信がありませんが、あなたのコンテンツタイプのための特別なテンプレートを作成し、コメント部分を削除することは一つの汚いトリックかもしれません。
webformでコメントを無効にするを使用する最も簡単な方法は、単にEDIT webformに移動することで、EDITオプションの下部に- コメント設定。
デフォルトは常にOPENなので、closedにし、Webフォームのcomment sectionを作成しますdisappear ...
CSSを使用してコメントセクションを非表示にし、過去のコメントが表示されないようにすることができます。
[管理]> [デザイン]> [詳細設定]> [カスタムCSS]タブにCSSコードを追加します。特定のサイトのページタイプのdivのクラス名を確認する必要があります。ニュースアイテムのページタイプ(マシン名 "article")を使用するテストサイトの例を次に示します。
.node-article .comment-wrapper{
visibility: hidden;
display: none;
}
最初にここでコメントを無効にします:
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'をノードタイプに置き換えることを忘れないでください。
それは非常に簡単です、以下の手順に従ってください:
ありがとう
4つの異なるコンテンツタイプにインポートした約50,000のレコードでこれが発生しました。データベース内のSQLクエリを消去して再インポートしたり、いじったりしたくありませんでした。すべてのノードからコメント機能を削除する場合は、コメントモジュールを無効にしてください。
ビューの一括操作を使用します。デフォルトの操作は「エンティティ値の変更/変更」です。ここでは、コメントを既存のノードに閉じるように設定できます。