Konu
İçerik türü oluşturan bir özelliği kaldırmak, üzerindeki "Sil" bağlantısını gizler admin/structure/types
.
İçerik türü oluşturan bir özelliği kaldırmak, üzerindeki "Sil" bağlantısını gizler admin/structure/types
.
Yanıtlar:
hook_uninstall()
FEATURE_NAME.install dosyasında bir dosya kullanarak ve içerik türünün durumunu değiştirerek sistem kilitlenmemiş, özel bir içerik türü olduğunu düşünüyor.
Bunu ayrıca d.org'da yayınladım .
<?php
/**
* Implements hook_uninstall().
*/
function FEATURE_NAME_uninstall() {
// List custom content types added by this feature
$custom_ctypes = array(
'blog',
);
// Go through each and unlock the content type
foreach ($custom_ctypes as $ctype) {
db_query("UPDATE {node_type} SET `custom` = 1, locked = 0 WHERE type = :ctype", array(':ctype' => $ctype));
}
// Clean Drupal cache; this is necessary for the "Delete" link to appear
// next to the content type created by the feature.
drupal_flush_all_caches();
}
Bu, bu içerik türü için "Sil" düğmesinin görünmesini sağlar, böylece onu yöneticiden silebilirsiniz.
Umarım bu birine yardımcı olur!
node_type_delete($ctype);
için for döngüsündeki sorgudan sonra add ekleyin .
mysql> UPDATE node_type SET custom = 1, locked = 0 WHERE type = '<content type machine name>';
Benim için çözüm, içerik türleri sayfasında "delete" bağlantısı olmadığı için silme sayfasını elle yüklemek oldu. Bunu yapmak için, diğer içerik türleri için silme sayfasındaki aynı URL yapısını izleyerek URL'yi kendiniz oluşturmanız yeterlidir:
admin / yapı / türleri / / YOUR_CONTENT_TYPE_MACHINE_NAME / silme yönetmek
Bu, içerik türü silme onayı sayfasını açtı, bu da içerik türünü silmeme izin verdi.
Başvuru için Drupal.org'daki şu konuya bakın:
https://drupal.org/node/1055460#comment-7297680
Saygılarımızla,
@cmsdave
.info
dosyasını düzenlemek ve içerik türünü kaldırmak zorunda kaldım , sonra gerçekten silindi.
Yukarıdaki yöntem taksonomileri silmez, ancak bu, modülü devre dışı bırakıp çıkardıktan sonra aşağıdakileri ekleyerek elde edilebilir:
// Delete taxonomies.
$machine_names = array('taxonomy_a', 'taxonomy_b');
foreach ($machine_names as $machine_name) {
$taxonomy = taxonomy_vocabulary_machine_name_load($machine_name);
taxonomy_vocabulary_delete($taxonomy->vid);
}
Geliştirme sitemdeki veritabanına doğrudan benim için çalışan başka bir çözüm. Daima veritabanınızı yedeklemeyi unutmayın.
Nedjo'nun önerdiği şekilde # 16 özelliği ile oluşturulan içerik türünü elle silmek için :
- Özelliği devre dışı bırakın. Bazen bu konuda sorun yaşıyorum - bir özellik devre dışı bırakılmaz. Bu durumda, özellik modülü kodunu kaldırın.
- Silinecek içerik türünün makine ismini belirleyin, örneğin 'mytype'.
- Veritabanında, node_type tablo değerlerini, içerik türü kullanıcı arayüzü aracılığıyla manuel olarak oluşturulmuşmuş gibi varsayılanlara 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 içindeki UI aracılığıyla içerik türünü silin.
Admin_menu modülünü kullanırsanız , içerik türleri sayfasında görünmese bile açılan menü yapısı Silme / İçerik tipleri / [içerik türü adı] / Silme menüsünü göreceksiniz.
Artık bu içerik türüne başka bir referans olmadığından emin olursanız, bu silme bağlantısını kullanmanın güvenli olduğunu söyleyebilirim.