Odpowiedzi:
Jak juampy napisał node_revision powinien być aktualizowany w miarę dobrze. Musisz wykonać 2 zapytania:
Krok 1:
UPDATE node SET comment = 0 WHERE type = 'your_content_type'
Krok 2:
UPDATE node_revision nrev
INNER JOIN node nd ON nrev.nid = nd.nid AND nd.type = 'your_content_type'
SET nrev.comment = 0
Krok 3: Wyczyść pamięć podręczną
Czasami najłatwiej jest po prostu użyć SQL. Myślę, że to jeden z tych przypadków.
UPDATE node SET comment = 0 WHERE type = 'nocommentsforthistype';
0 = wyłączone
1 = tylko do odczytu
2 = odczyt / zapis.
Zmiana domyślnych ustawień komentarzy dla typu zawartości, zgodnie z sugestią uwe999, zmienia tylko domyślne ustawienia typu zawartości. Oznacza to, że nie zmieni z mocą wsteczną ustawień istniejących treści (ponieważ mogłoby to usunąć istniejące komentarze).
Będziesz musiał odwiedzić widok edycji węzła dla każdego istniejącego węzła, dla którego próbujesz wyłączyć komentarze i zaktualizować tam ustawienia. Jeśli zainstalowałeś moduł, taki jak moduł kolumny formularza Węzeł , który ukrywa / usuwa elementy ze stron dodawania / edycji węzła, będziesz musiał zaktualizować jego konfigurację, pojawi się okno ustawień komentarzy dla węzłów.
Żadne z powyższych rozwiązań nie działało dla mnie. Formularz komentarza jest nadal wyświetlany w istniejących węzłach, chyba że zaktualizujesz również wersję node_revision.
Oto implementacja hook_update_N (), która działała dla mnie:
/**
* 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();
}
wyłączasz komentarze w „ustawieniach struktury / typów treści / [nazwa typu] / edycji / komentarzy. Ustaw„ Domyślne ustawienie komentarza dla nowych treści ”na ukryte.
Jeśli masz już komentarze, możesz je usunąć w „treści / komentarzach” lub po prostu cofnąć ich publikację.
Najpierw wyłącz komentarze tutaj:
structure->content types->{node_type}->edit->comment settings
Aby zaktualizować węzły, niestety musisz ponownie zapisać każdy węzeł. Użyj hook_update poniżej:
/**
* 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'];
}
}
Nie zapomnij zastąpić „node_type” typem swojego węzła.
Najprostszym sposobem na wyłączenie komentarzy w formularzu internetowym jest przejście do formularza internetowego EDYCJA, a na dole opcji EDYCJA znajduje się opcja Ustawienia komentarzy .
Przez domyślnie jej zawsze OPEN więc uczynić go zamknął i sekcja komentarz z formularza internetowego będą znikać ...
Możesz użyć CSS, aby ukryć sekcję komentarzy, aby komentarze retrospektywne się nie wyświetlały.
Dodaj kod CSS do karty Administrator> Wygląd> Zaawansowane> Niestandardowa karta CSS. Będziesz musiał spojrzeć na nazwy klas div dla poszczególnych typów stron witryny. Oto przykład z mojej witryny testowej, która używa typu strony z wiadomościami (nazwa maszyny „artykuł”):
.node-article .comment-wrapper{
visibility: hidden;
display: none;
}
To całkiem proste, wykonaj następujące kroki:
Dzięki
UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0
. Pracował dla mnie :-).