web-gelistirme-sc.com

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

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?

12
Codium

juampy yazdığı gibi, node_revision da 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

11

Uwe999 tarafından önerildiği gibi içerik türü için varsayılan yorum ayarlarını değiştirmek, yalnızca içerik türü için varsayılan ayarlarını 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ı devre dışı bırakmaya çalıştığınız ve mevcut ayarları güncellemeye çalıştığınız her düğüm için düğüm düzenleme görünümünü ziyaret etmeniz gerekecektir. 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.

7
David Meister

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.

7
skomorokh

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();
}
3
Juampy NR

"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.

2
uwe

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
tostinni

webform içinde yorumları devre dışı bırak için en basit yol webform'u DÜZENLE ve EDIT seçeneğinin alt kısmında - Yorum Ayarları.

varsayılan olarak her zaman AÇIK öyleyse yap kapalı ve web formundan yorum bölümüyok olur ...

1
Nitesh Sethia

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;
 }
1
Emma

Ö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 'node_type' ifadesini değiştirmeyi unutmayın.

1
mrded

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
Sandesh Manghale

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.

0
MascotDB

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
giorgio79