Problema
La disinstallazione di una funzione che crea un tipo di contenuto nasconde il collegamento "Elimina" su admin/structure/types
.
La disinstallazione di una funzione che crea un tipo di contenuto nasconde il collegamento "Elimina" su admin/structure/types
.
Risposte:
Utilizzando un hook_uninstall()
file FEATURE_NAME.install e modificando lo stato del tipo di contenuto, il sistema ritiene che si tratti di un tipo di contenuto personalizzato sbloccato.
L'ho pubblicato anche su 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();
}
Questo farà apparire il pulsante "Elimina" per quel tipo di contenuto, in modo da poterlo eliminare dall'amministratore.
Spero che questo aiuti qualcuno!
node_type_delete($ctype);
dopo la query nel ciclo for.
mysql> UPDATE node_type SET custom = 1, locked = 0 WHERE type = '<content type machine name>';
Per me, la soluzione è stata quella di caricare manualmente la pagina di eliminazione poiché non esiste un link "Elimina" nella pagina dei tipi di contenuto. Per fare ciò, devi solo costruire l'URL da solo seguendo la stessa struttura dell'URL della pagina di eliminazione per altri tipi di contenuto:
admin / struttura / tipo / gestire / YOUR_CONTENT_TYPE_MACHINE_NAME / delete
Ciò ha portato alla pagina di conferma dell'eliminazione del tipo di contenuto, che mi ha permesso di eliminare il tipo di contenuto.
Per riferimento, vedere questa discussione su Drupal.org:
https://drupal.org/node/1055460#comment-7297680
Saluti,
@cmsdave
.info
file della funzione e rimuovere il tipo di contenuto, quindi sarebbe effettivamente eliminato.
Il metodo sopra non elimina le tassonomie, ma ciò può essere ottenuto aggiungendo quanto segue dopo aver disabilitato e disinstallato il modulo:
// 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);
}
Un'altra soluzione che ha funzionato per me direttamente sul database nel mio sito di sviluppo. Ricorda di eseguire sempre il backup del database.
Per eliminare manualmente un tipo di contenuto creato da una funzione # 16 ciò che Nedjo suggerisce è il seguente:
- Disabilita la funzione. A volte ho riscontrato problemi con questo: una funzione non verrà disabilitata. In questo caso, rimuovere il codice del modulo funzione.
- Determinare il nome della macchina del tipo di contenuto da eliminare, ad es. "Mytype".
- Nel database, ripristinare i valori della tabella node_type sui valori predefiniti come se il tipo di contenuto fosse creato manualmente tramite l'interfaccia utente:
mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';
- Cancella le cache per garantire che sia disponibile la modifica del tipo di contenuto.
- Tramite l'interfaccia utente in admin / struttura / tipi, eliminare il tipo di contenuto.
Se usi il modulo admin_menu , vedrai comunque i collegamenti di eliminazione nel menu a discesa Struttura / Tipi di contenuto / [nome del tipo di contenuto] / Elimina, anche se non sono visualizzati nella pagina dei tipi di contenuto.
Direi che è abbastanza sicuro usare questo link di cancellazione se si assicura che non ci sono più altri riferimenti a questo tipo di contenuto.