Neden belirli içerik türlerini silemiyorum?


19

Bir Drupal 7 sitem var ve İçerik Türleri menüsü altında, yalnızca belirli türlerde 'İşlemler' sütununun altında bir 'sil' bağlantısı var.

Tüm içerik türlerinde "düzenle", "alanları yönet" ve "görüntülü yönet" bağlantıları vardır, ancak yalnızca bazılarında 'sil', bazıları ise yoktur.

Kullanıcılarım için izinlerimi kontrol ettim ve var Administer content types- ancak bu, tüm içerik türleri için tek bir genel izin gibi görünüyor, bu yüzden bazıları neden silinirken bazılarının neden silinebileceğini anlamıyorum.

Neden yalnızca belirli içerik türlerinde silme işlemi yapılır?

Yanıtlar:


15

Yalnızca manuel olarak (yoluyla admin/structure/types/add) oluşturulan içerik türlerini silebilirsiniz .

Silme bağlantısı olmayan içerik türleri, yüklü modüller tarafından programlı olarak oluşturulur ve kaldırıldıktan sonra silinir .


5
Herkesin burada olması durumunda - programlı olarak oluşturulmuş bir içerik türüm var, ancak sitenin kodundan tüm izlerini sildikten sonra bile sitemin etrafında asılı duruyor - bunun için hala girişler var {menu_links } ve {menu_router} ve benzerlerini içerdiğinden, "içerik oluştur" menülerinde ve benzerlerinde hala görünmektedir. Bir şey yol boyunca berbat durumda; Ben gerçekten yapmak istemem veritabanı doğrudan kesmek (ugh) bu kısa kurtulmak için iyi bir yolu var mı?
Jim Miller

Aynı problemim var. Birden fazla sitede, Özelliklerin yardımıyla bir içerik türü ve başka bir biçime verdim. Şimdi ilgili modülleri kaldırdım ancak içerik türü hala burada.

3
Muhtemelen var, ama sadece kontrol ediyorsunuz - modülleri kaldırdınız ve sadece devre dışı bıraktınız mı?
user56reinstatemonica8


Bu cevabın daha önce doğru olup olmadığını bilmiyorum, ancak Drupal 7.23 ile kesinlikle doğru değil. İçerik türleri, nasıl oluşturulduklarına bakılmaksızın silinebilir.
Kari Kääriäinen

30

URL'ye giderek bunları silin /admin/structure/types/manage/content-machine-name/delete

content-machine-name, silmek istediğiniz içerik türünün makine adıdır. Ayrıca, alt çizgi yerine makine adında tire kullandığınızdan emin olun.


1
Harika, bu çok güzel çalıştı! Enterprise Blog ve Enterprise SSS'yi bir süre önce yükledim, ancak kullanmadım. İçerik Türleri ekranı bu içerik türlerini silmek için bir seçenek sunmadığından, yönteminiz hoş bir rahatlama oldu!
hockey2112 11:13

1
Bunun çalışmasını beklemiyordum, ama güzel çalıştı. Özellikler Modülü kullanılarak eklenen içerik türlerini kaldırmak için idealdir.
Citricguy

Evet! Bu ipucu harikaydı. İyi çalışıyor.
Boriana Ditcheva

Bu gerçek çözüm :)
petergus

Ancak bu, "sil" bağlantısı doğal olarak görünmüyorsa, silinmenin güvenli olmayabileceği anlamına gelir. Kullanan içerik türü, bağımlılık yok, önbelleğe alınmış içerik ve onu kullanan değişkenler ve özellikler olduğunda, bağlantı görünecektir. Bu yüzden, bunu dikkatli bir şekilde kullanmanızı tavsiye ederim.
Christia

2

Hpn'den bahsedildiği gibi Yalnızca manuel olarak oluşturulan içerik türlerini silebilirsiniz.

Ancak bazen işler düzgün gitmez. Aşağıdaki adımlar içerik türlerinin silinmesine yardımcı olmuştur. Bunu denemeden önce veritabanını yedeklemeniz gerekir.

[ 1 # 16 Nedjo'nun drupal.org'da önerdiği bir içerik türünü manuel olarak silmek için :

  • Özelliği devre dışı bırakın. Bazen bununla ilgili sorun yaşıyorum - bir özellik devre dışı kalmayacak. Bu durumda, özellik modülü kodunu kaldırın.
  • Silinecek içerik türünün makine adını belirleyin, örneğin 'mytype'.
  • Veritabanında, içerik türü kullanıcı arabirimi aracılığıyla manuel olarak oluşturulmuş gibi node_type tablo değerlerini varsayılanlara geri döndürün:

mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';

  • İçerik türü değişikliğinin kullanılabilir olduğundan emin olmak için önbellekleri temizleyin.
  • Admin / structure / types adresindeki kullanıcı arayüzü aracılığıyla içerik türünü silin.

Yukarıdaki adımlar, bu sorunları bulduğumda bana yardımcı olan şeydi.


1

İçerik türünü sağlayan modülün devre dışı bırakılması ilk adım olmalıdır. İçerik türü bir özellik tarafından sağlandıysa, yine de içerik türünü silmeniz gerekir.

İyi yapılmış bir Özellik için, bir içerik türünü silme özelliği, devre dışı bırakılması koşuluyla Özellikten sonra gelir. Geçerli işlevsellik veya gelecekte bu özellikte yapılacak güncellemeler için içerik türünü gerektirebileceğinden, bir özellik türünden çıkarılan bir içerik türünün silinmesine tercih edilir.

Unsurlar modülünü (admin / modüller), çatışmalar nedeniyle bir modülü devre dışı bırakamayacağını iddia ediyor olsa bile (aptalca) devre dışı bırakabileceğinizi unutmayın.

Arayüz üzerinden bir şey yapmak istemiyorsanız ve sadece kod yapmak istiyorsanız, burada Commons Wiki ve Yayınlar Özelliklerini devre dışı bırakacak ve sağladıkları içerik türlerini silecek bir güncelleme kancası örneği verilmiştir.

<?php
/**
 * Remove unused features and content types.
 */
function example_update_7001() {
  // Delete one (spam) piece of wiki content.
  node_delete(2731);
  // Disable Feature modules.
  module_disable(array('commons_wikis_pages', 'commons_wikis', 'commons_posts'));
  // Delete content types.
  node_type_delete('wiki');
  node_type_delete('post');
}
?>
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.