Kwestia
Odinstalowanie funkcji, która tworzy typ zawartości, ukrywa link „Usuń” w admin/structure/types
.
Odinstalowanie funkcji, która tworzy typ zawartości, ukrywa link „Usuń” w admin/structure/types
.
Odpowiedzi:
Użycie hook_uninstall()
pliku FEATURE_NAME.install i zmiana stanu typu zawartości, aby system uznał, że jest to odblokowany, niestandardowy typ zawartości.
Opublikowałem to również na d.org .
<?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();
}
Spowoduje to, że przycisk „Usuń” pojawi się dla tego typu zawartości, dzięki czemu będziesz mógł usunąć go od administratora.
Mam nadzieję, że to komuś pomoże!
node_type_delete($ctype);
po zapytaniu w pętli for.
mysql> UPDATE node_type SET custom = 1, locked = 0 WHERE type = '<content type machine name>';
Dla mnie rozwiązaniem było ręczne załadowanie strony usuwania, ponieważ na stronie typów treści nie ma linku „usuń”. Aby to zrobić, musisz samodzielnie utworzyć adres URL, postępując zgodnie z tą samą strukturą adresu URL, co strona usuwania dla innych typów treści:
admin / structure / types / manage / YOUR_CONTENT_TYPE_MACHINE_NAME / delete
Spowodowało to wyświetlenie strony z potwierdzeniem usunięcia typu zawartości, co pozwoliło mi usunąć typ zawartości.
Dla odniesienia zobacz ten wątek na Drupal.org:
https://drupal.org/node/1055460#comment-7297680
Pozdrowienia,
@cmsdave
.info
plik funkcji i usunąć typ zawartości, a następnie faktycznie go usunąć.
Powyższa metoda nie usuwa taksonomii, ale można to osiągnąć, dodając następujące elementy po wyłączeniu i odinstalowaniu modułu:
// 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);
}
Kolejne rozwiązanie, które działało dla mnie bezpośrednio do bazy danych w mojej witrynie programistycznej. Pamiętaj, aby zawsze wykonać kopię zapasową bazy danych.
Aby ręcznie usunąć typ zawartości utworzony przez funkcję # 16, sugeruje Nedjo :
- Wyłącz tę funkcję. Czasami mam z tym problemy - funkcja się nie wyłącza. W takim przypadku usuń kod modułu funkcji.
- Określ nazwę komputera typu zawartości, który chcesz usunąć, np. „Mój typ”.
- W bazie danych przywróć wartości tabeli typ_węzła do wartości domyślnych, tak jakby typ zawartości został utworzony ręcznie za pomocą interfejsu użytkownika:
mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';
- Wyczyść pamięć podręczną, aby zapewnić zmianę typu zawartości.
- Za pomocą interfejsu użytkownika w admin / structure / types usuń typ zawartości.
Jeśli korzystasz z modułu admin_menu , nadal zobaczysz linki usuwania w menu rozwijanym Struktura / Typy treści / [nazwa typu zawartości] / Usuń, nawet jeśli nie są wyświetlane na stronie typów zawartości.
Powiedziałbym, że korzystanie z tego linku usuwania jest całkiem bezpieczne, jeśli masz pewność, że nie ma już innych odniesień do tego typu treści.