Sonunda içerik türüyle ilgili yorumları nasıl devre dışı bırakabilirim?


12

Web formundaki yorumları devre dışı bırakmaya çalışıyorum. Bulabildiğim tüm ayarları denedim, ancak:

  • Yorum formu bağlantısı hala görünüyor
  • Yorum alanında ad alanı ve gönder düğmesi görünmeye devam ediyor

Birisi bana tavsiyede bulunabilir mi?

Yanıtlar:


11

Gibi juampy yazdım, node_revision sıra güncellenmelidir. 2 sorgu yürütmeniz gerekir:

Aşama 1:

UPDATE node SET comment = 0 WHERE type = 'your_content_type'

Adım 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. Adım: Önbelleği temizle


1
Ve eğer sadece Disqus gibi bir şey yüklediyseniz, koşabilirsiniz UPDATE node SET comment = 0; UPDATE node_revision SET comment = 0. Benim için çalıştı :-).
Nux

Tüm düğüm türlerinden yorumları kaldırmanız gerekirse @Nux sorgularını kullanın.
albertski

7

Bazen SQL kullanmak en kolay yoldur. Bence bu da bunlardan biri.

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

0 = devre dışı

1 = salt okunur

2 = okuma / yazma.


2
0 = devre dışı, 1 = salt okunur, 2 = okuma / yazma. Bence bu en iyi cevap :)
AyeshK

@AyeshK, güzel cevap düzenledim.
niksmac

bir yandan, böyle bir sorguyu nasıl yazacağınızı / çalıştıracağınızı biliyorsanız, muhtemelen yorumları nasıl kapatacağınızı anlamaya çalışmıyorsunuz, öte yandan, bir db sorgusu tabanlı çözüm YOK benimkinden daha iyi :)
David Meister

7

Uwe999 tarafından önerildiği gibi, içerik türü için varsayılan yorum ayarlarının değiştirilmesi, yalnızca içerik türü için varsayılan ayarları değiştirir . Bu, mevcut içerik ayarlarını geriye dönük olarak değiştirmeyeceği anlamına gelir (mevcut yorumları silebilir).

Yorumlarını devre dışı bırakmaya çalıştığınız her bir düğüm için düğüm düzenleme görünümünü ziyaret etmeniz ve buradaki ayarları güncellemeniz gerekir. Düğüm ekleme / düzenleme sayfalarındaki öğeleri gizleyen / kaldıran Düğüm form sütunları modülü gibi bir modül yüklediyseniz , düğümler için yorum ayarları kutusunun yapılandırmasını güncellemeniz gerekir.


3

Yukarıdaki çözümlerin hiçbiri benim için işe yaramadı. Node_revision'ı da güncellemediğiniz sürece yorum formu hala mevcut düğümlerde görüntülenir.

Benim için çalışan hook_update_N () uygulaması:

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

"yapı / içerik türleri / [türün adı] / düzenle / yorum ayarlarında yorumları devre dışı bırakırsınız." Yeni içerik için varsayılan yorum ayarı "nı gizli olarak ayarlayın.

Mevcut yorumlarınız varsa "içerik / yorumlar" altında silebilir veya yalnızca yayından kaldırabilirsiniz.



hangi şablonu kullanıyorsun
uwe

1

Sorununuzdan emin değilim, ancak kirli bir hile, içerik türünüz için özel bir şablon oluşturmak ve yorum bölümlerini kaldırmak olabilir.


1

Önce buradaki yorumları devre dışı bırakın:

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

Düğümleri güncellemek için maalesef her düğümü tekrar kaydetmeniz gerekir. Aşağıda hook_update kullanın:

/**
 * 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'];
  }
}

Düğüm türünüzle 'düğüm_türü' yerine geçmeyi unutmayın .


1

En basit yolu devre dışı yorumlarla içinde web formunu basitçe gitmektir DÜZENLEME web formunda bir seçenek yoktur ve DÜZENLEME seçeneği altındaki Yorumlar Ayarlar .

By varsayılan onun hep AÇIK yüzden yapmak kapalı ve açıklama bölümünde web formunu dan edecektir kaybolur ...


1

Geriye dönük yorumların görünmemesi için yorumlar bölümünü gizlemek için CSS'yi kullanabilirsiniz.

Yönetici> Görünüm> Gelişmiş> Özel CSS sekmesine CSS kodu ekleyin. Sitenizin sayfa türleri için div öğelerinin sınıf adlarına bakmanız gerekir. İşte test sitemden Haberler öğesi sayfa türünü (makine adı "makale") kullanan bir örnek:

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

0

Görünümler Toplu İşlemlerini varsayılan işlemle kullanın: "Varlık Değerlerini Değiştir / Değiştir". Burada açıklamayı mevcut düğümlere kapalı olarak ayarlayabilirsiniz.


0

Oldukça basit, aşağıdaki adımları izleyin:

  1. Yapı> İçerik Türleri> Web Formu'na gidin
  2. Ardından web formunu düzenleyin ve sol taraftaki ayarlarda Yorum Ayarları'nı tıklayın.
  3. "Yeni içerik için varsayılan yorum ayarı" değerini "Kapat" olarak değiştirin ve ayarı kaydedin.

Teşekkürler


0

4 farklı içerik türüne aktardığım yaklaşık 50.000 kayda bunu yaptım. Veritabanında SQL sorguları ile silmek ve yeniden içe aktarmak veya karışıklık istemiyordu. Yorumlama işlevini tüm düğümlerden kaldırmak istiyorsanız, yorum modülünü devre dışı bırakmanız yeterlidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.