Problème
La désinstallation d'une fonctionnalité qui crée un type de contenu masque le lien "Supprimer" sur le admin/structure/types
.
La désinstallation d'une fonctionnalité qui crée un type de contenu masque le lien "Supprimer" sur le admin/structure/types
.
Réponses:
L'utilisation d'un hook_uninstall()
fichier dans FEATURE_NAME.install et la modification de l'état du type de contenu, de sorte que le système pense qu'il s'agit d'un type de contenu personnalisé déverrouillé.
J'ai également posté cela sur 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();
}
Cela fera apparaître le bouton "Supprimer" pour ce type de contenu, vous pouvez donc le supprimer de l'administrateur.
J'espère que cela aide quelqu'un!
node_type_delete($ctype);
après la requête dans la boucle for.
mysql> UPDATE node_type SET custom = 1, locked = 0 WHERE type = '<content type machine name>';
Pour moi, la solution était de charger la page de suppression manuellement car il n'y a pas de lien "supprimer" sur la page des types de contenu. Pour ce faire, il vous suffit de créer l'URL vous-même en suivant la même structure d'URL que la page de suppression pour les autres types de contenu:
admin / structure / types / manage / YOUR_CONTENT_TYPE_MACHINE_NAME / delete
Cela a fait apparaître la page de confirmation de suppression du type de contenu, ce qui m'a ensuite permis de supprimer le type de contenu.
Pour référence, voir ce fil sur Drupal.org:
https://drupal.org/node/1055460#comment-7297680
Cordialement,
@cmsdave
.info
fichier de la fonctionnalité et supprimer le type de contenu, puis il serait effectivement supprimé.
La méthode ci-dessus ne supprime pas les taxonomies, mais cela peut être réalisé en ajoutant les éléments suivants après avoir désactivé et désinstallé le module:
// 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);
}
Une autre solution qui a fonctionné pour moi directement dans la base de données de mon site de développement. N'oubliez pas de toujours sauvegarder votre base de données.
Pour supprimer manuellement un type de contenu créé par une fonctionnalité # 16, Nedjo suggère ce qui suit:
- Désactivez la fonction. J'ai parfois rencontré des problèmes avec cela - une fonctionnalité ne se désactivera pas. Dans ce cas, supprimez le code du module de fonction.
- Déterminez le nom de la machine du type de contenu à supprimer, par exemple, 'mytype'.
- Dans la base de données, rétablissez les valeurs par défaut de la table node_type comme si le type de contenu avait été créé manuellement via l'interface utilisateur:
mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';
- Videz les caches pour vous assurer que le changement de type de contenu est disponible.
- Via l'interface utilisateur dans admin / structure / types, supprimez le type de contenu.
Si vous utilisez le module admin_menu , vous verrez toujours les liens de suppression dans le menu déroulant Structure / Types de contenu / [nom du type de contenu] / Supprimer, même s'ils ne sont pas affichés sur la page des types de contenu.
Je dirais qu'il est assez sûr d'utiliser ce lien de suppression si vous vous assurez qu'il n'y a plus d'autres références à ce type de contenu.