Як остаточно відключити коментарі щодо типу вмісту?


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 запити.
альберцький

7

Іноді найпростіше просто використовувати SQL. Я думаю, це один із таких випадків.

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

0 = відключено

1 = лише читати

2 = читати / писати.


2
0 = відключено, 1 = лише читати, 2 = читати / писати. Я думаю, що це найкраща відповідь :)
АйешК

@AyeshK, добре, що я відредагував відповідь.
niksmac

з одного боку, якщо ви знаєте, як писати / виконувати такий запит, ви, мабуть, не намагаєтесь зрозуміти, як вимкнути коментарі, з іншого боку, з точки зору чистої швидкості та ефективності рішення на основі запиту на основі db - це ШЛИШЕ краще, ніж у мене :)
Девід Мейстер

7

Зміна параметрів коментарів за замовчуванням для типу вмісту, як це запропонувало uwe999, змінює лише налаштування за замовчуванням для типу вмісту. Це означає, що він не буде змінювати заднім числом налаштування для існуючого вмісту (оскільки це може видалити наявні коментарі).

Вам доведеться завітати у режим редагування вузла для кожного існуючого вузла, до якого ви намагаєтесь відключити коментарі та оновити там налаштування. Якщо ви встановили такий модуль, як модуль стовпців форми форми , який приховує / видаляє елементи з сторінок вузлів додавання / редагування, то вам доведеться оновити його конфігурацію, щоб з’явилося вікно налаштувань коментарів для вузлів.


3

Жодне з перерахованих вище рішень не працювало для мене. Форма коментарів все ще відображається в існуючих вузлах, якщо ви також не оновите node_revision.

Ось реалізація moll_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

ви відключаєте коментарі у "структурі / типах вмісту / [назва типу] / редагуванні / налаштуваннях коментарів. Установіть" Налаштування коментарів за замовчуванням для нового вмісту "на прихований.

Якщо у вас є коментарі, ви можете видалити їх у розділі "Зміст / коментарі" або просто скасувати публікацію.


Я це зробив, але посилання на форму все-таки є, можливо, єдиним варіантом є зміна шаблону або просто чистий css diplay: жоден, дивний
Codium

який шаблон ви використовуєте?
uwe

1

Я не впевнений у вашій проблемі, але однією брудною хитрістю може стати створення спеціального шаблону для типу вмісту та видалення частин коментарів.


1

Спочатку вимкніть тут коментарі:

structure->content types->{node_type}->edit->comment settings

Щоб оновити вузли, на жаль, вам доведеться повторно зберегти кожен вузол. Використовуйте оновлення kuke_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

Найпростіший спосіб відключення коментарів у веб- формі - це просто перейти до веб-форми EDIT, а в нижній частині параметра EDIT є опція Параметри коментарів .

За замовчуванням його завжди ВІДКРИТИЙ так зробити його закрили і розділ коментар від веб - форми будуть зникати ...


1

Ви можете використовувати CSS, щоб приховати розділ коментарів, щоб ретроспективні коментарі не відображалися.

Додати CSS-код на Адміністратор> Зовнішній вигляд> Додатково> Спеціальна вкладка CSS. Вам доведеться подивитися назви класів divs для типів сторінок вашого конкретного сайту. Ось приклад з мого тестового сайту, який використовує тип сторінки Новини (назва машини "стаття"):

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

0

Використовуйте масові операції Views з операцією за замовчуванням: "Змінити / змінити значення об'єктів". Тут ви можете встановити коментарі до закритих до існуючих вузлів.


0

Це досить прямо вперед, виконайте наступні кроки:

  1. Перейдіть до структури> Типи вмісту> Веб-форма
  2. Потім відредагуйте веб-форму та натисніть Налаштування коментарів у налаштуваннях зліва.
  3. Змініть значення "Налаштування коментарів за замовчуванням для нового вмісту" на "Закрити" та збережіть налаштування.

Дякую


0

У мене це сталося з приблизно 50 000 записів, які я імпортував у 4 різні типи вмісту. Я не хотів стирати та реімпортувати чи не возитися із запитами SQL в базі даних. Якщо ви хочете видалити функцію коментування з усіх вузлів, просто вимкніть модуль коментарів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.