Est-il possible de désactiver un type de contenu?


8

Je suis en train de créer un petit site Web Drupal 7, mais je ne prévois pas d'utiliser le type de contenu d'article livré. Est-il possible de le désactiver sans le supprimer? Ce que je veux dire par là, c'est de s'assurer qu'aucun utilisateur ne crée des articles par accident.

Je n'ai pas trouvé d'option pour cela. Merci.

Réponses:


16
  • Vous ne pouvez pas désactiver un type de contenu, mais vous pouvez empêcher (presque) tout le monde de créer / afficher / modifier, etc. un article en définissant les autorisations en conséquence.
  • S'il n'y a pas de contenu d'article sur le site, il est 100% sûr de le supprimer. (Il est intéressant de voir comment le profil d'installation minimal et par défaut fournit différents ensembles de types de contenu. L'article n'est qu'un type de contenu "standard" qui n'est en aucun cas nécessaire.)

7

Pour les personnes qui ne connaissent pas Drupal, vous empêcheriez les gens d'utiliser un type de contenu en allant (en 7) People > Permissions (url: admin/people/permissions)

Ensuite, sous Noeud, décochez l' Article: Create new contentautorisation pour les rôles sélectionnés. :)

Évidemment, vous changeriez Articlele type de contenu approprié.


Pouvez-vous imaginer une raison pour laquelle un utilisateur serait toujours en mesure d'accéder au lien "créer" pour un type de contenu particulier, même si son rôle interdit la création de ce type de contenu? J'ai cloné mon rôle d'utilisateur administrateur et créé un rôle d'utilisateur "admin-lite" qui ne devrait avoir accès qu'à la création d'une poignée des nombreux types de contenu sur mon site. Cependant, ces utilisateurs admin-lite peuvent créer tous les différents types de contenu ... J'ai essayé de reconstruire les autorisations, mais cela n'a pas aidé non plus.
hockey2112

2
J'ai compris mon problème ... le rôle avait toujours l'autorisation "Bypass Content Access Control" activée. J'ai désactivé cela et cela a résolu mon problème.
hockey2112

5

Dans votre fichier .install:

function YOURMODULE_disable() {

  // Disable content type MyContentType
  disable_content_type('MyContentType');


  //Activation message
  drupal_set_message(t('MyContentType is now disabled on your site.'));
}

et maintenant dans votre fichier .module ou .inc:

function disable_content_type($type) {
  $type_info = node_type_load($type);
  $type_info->module = 'node';
  $type_info->custom = 1;
  $type_info->modified = 1;
  $type_info->locked = 0;
  $type_info->disabled = 1;
  node_type_save($type_info);
}

Cela rend-il effectivement le type de nœud et tout contenu de ce type invisibles? Mon cas d'utilisation est une option du module qui nécessiterait de nouveaux types de contenu, mais uniquement si cette option est sélectionnée. Je ne veux pas qu'ils voient le type de contenu s'ils ne choisissent pas cette option, mais je veux aussi garder l'intégrité des données s'ils activent / désactivent / on / etc l'option.
UnsettlingTrend

@UnsettlingTrend yes. J'avais un besoin similaire et j'ai essayé cette option. J'ai également dû créer une fonction _enable () dans mon fichier .install qui s'appelait enable_content_type ('MyContentType'). Dans le fichier .module (ou .inc), $ type_info-> disabled est défini sur 0. De cette façon, lorsque le module est activé, le type de contenu est disponible. Lorsque le module est désactivé, le type de contenu n'est pas disponible. Si vous avez besoin d'accéder au contenu (par exemple en tant qu'administrateur), vous pouvez envisager une autre option qui modifie les autorisations pour le type de contenu. C'est par là que j'ai fini par aller.
sho


1

Il existe certains types de contenu qui peuvent être "désactivés" en désactivant le module qui l'utilise. Par exemple: les types de contenu de sondage, forum, livre et blog disparaissent des types disponibles lorsque vous désactivez les modules associés. La page de base et l'article sont les deux exceptions.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.