web-dev-qa-db-fra.com

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

J'ai un site Drupal 7, et sous 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 j'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?

18
user1359

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 que vous désinstallez eux.

15
hpn

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.

30
Brian Reeves

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.

2
cayerdis

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

Je l'ai fait mais je reçois ce message d'erreur: Remarque: index non défini [type de contenu] dans node_filter_form () Une idée de comment résoudre ce problème?

0
PatriciaW