Pourquoi ne puis-je pas supprimer certains types de contenu?

19

J'ai un site Drupal 7, et dans le menu Types de contenu, seuls certains types ont un lien «supprimer» sous la colonne «Opérations».

Tous les types de contenu ont les liens pour «modifier», «gérer les champs» et «gérer l'affichage», mais seuls certains ont «supprimer», tandis que d'autres n'en ont pas.

J'ai vérifié mes autorisations pour mon utilisateur, et je l'ai Administer content types- mais cela semble être une autorisation globale pour tous les types de contenu, donc je ne comprends toujours pas pourquoi certains sont supprimables alors que d'autres ne le sont pas.

Pourquoi seuls certains types de contenu ont-ils une opération de suppression?

user1359
la source

Réponses:

15

Vous ne pouvez supprimer que les types de contenu créés manuellement (via admin/structure/types/add).

Les types de contenu qui n'ont pas de lien de suppression sont créés par programme par les modules installés et seront supprimés après leur désinstallation .

hpn
la source
5
Dans le cas où quelqu'un est toujours là - j'ai un type de contenu qui a été créé par programme, mais qui traîne toujours sur mon site même après que j'en ai supprimé toutes les traces du code du site - il y a toujours des entrées pour lui dans {menu_links } et {menu_router} et similaires, donc ils apparaissent toujours dans les menus "créer du contenu" et similaires. Il est évident que quelque chose s'est gâché en cours de route; Existe-t-il un bon moyen de se débarrasser de ce manque de (ugh) piratage direct de la base de données, ce que je voudrais vraiment ne pas faire?
Jim Miller
J'ai le même problème. Sur un multisite, j'ai exporté un type de contenu à l'aide de fonctionnalités et exporté sur un autre. Maintenant, j'ai supprimé les modules associés, mais le type de contenu est toujours là.
3
Vous l'avez probablement fait, mais juste pour vérifier - avez-vous désinstallé les modules ainsi que simplement les désactivé ?
user56reinstatemonica8
2
Voici la solution .
Aram Boyajyan
Je ne sais pas si cette réponse a été correcte plus tôt, mais elle n'est certainement plus correcte avec Drupal 7.23. Les types de contenu peuvent être supprimés, quelle que soit la façon dont ils ont été créés.
Kari Kääriäinen
30

Supprimez-les en accédant à l'URL /admin/structure/types/manage/content-machine-name/delete

content-machine-name étant le nom de la machine du type de contenu que vous souhaitez supprimer. Assurez-vous également d'utiliser des tirets dans le nom de la machine plutôt que des traits de soulignement.

Brian Reeves
la source
1
Génial, cela a très bien fonctionné! J'ai installé Enterprise Blog et Enterprise FAQ il y a quelque temps, mais j'ai fini par ne pas les utiliser. L'écran Types de contenu ne donnait pas d'option pour supprimer ces types de contenu, donc votre méthode était un soulagement bienvenu!
hockey2112
1
Je ne m'attendais pas à ce que cela fonctionne, mais cela a fonctionné à merveille. Idéal pour supprimer les types de contenu ajoutés à l'aide du module de fonctionnalités.
Citricguy
Oui! Ce conseil était génial. Fonctionne bien.
Boriana Ditcheva
C'est la vraie solution :)
petergus
Cela fonctionne, cependant, si le lien "supprimer" n'apparaît pas naturellement, cela signifie qu'il peut ne pas être sûr de le supprimer. Une fois qu'aucun type de contenu ne l'utilise, aucune dépendance, aucun contenu mis en cache et les variables et fonctionnalités qui l'utilisent, le lien s'affiche. Donc, je conseille de l'utiliser avec prudence.
Christia
2

Comme HPN l'a mentionné Vous ne pouvez supprimer que les types de contenu créés manuellement.

Mais parfois, les choses ne se passent pas bien. Les étapes suivantes ont aidé à supprimer les types de contenu. Vous devez sauvegarder la base de données avant d'essayer.

[Pour supprimer manuellement un type de contenu qui a été créé 1 # 16 Nedjo suggère dans drupal.org:

  • 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.

Les étapes ci-dessus sont ce qui m'a aidé auparavant lorsque j'ai trouvé ces problèmes.

cayerdis
la source
1

La désactivation du module fournissant le type de contenu devrait être la première étape. Si le type de contenu a été fourni par une fonctionnalité, vous devrez toujours supprimer le type de contenu.

Pour une fonctionnalité bien conçue, la possibilité de supprimer un type de contenu viendra après la fonctionnalité à condition qu'il soit désactivé. Ceci est préférable à la suppression d'un type de contenu sous une fonctionnalité, car la fonctionnalité actuelle ou les mises à jour futures de cette fonctionnalité peuvent nécessiter le type de contenu.

Notez que vous pouvez désactiver les modules de fonctionnalités (admin / modules) même lorsque l'interface des fonctionnalités prétend (plutôt bêtement) prétendre qu'elle ne peut pas désactiver un module en raison de conflits.

Et si vous ne voulez rien faire via l'interface, et que vous voulez juste faire du code, voici un exemple d'un crochet de mise à jour qui désactivera les fonctionnalités du wiki et des publications de Commons, puis supprimera les types de contenu qu'ils fournissent.

<?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');
}
?>
mlncn
la source