Réorganiser les types de contenu dans («/ node / add»)

12

Existe-t-il un moyen de réorganiser les types de contenu affichés sur le nœud / ajouter?

whitefleaCH
la source

Réponses:

18

Ouaip! Modifiez simplement votre menu "Navigation" (dans / admin / structure / menu / gérer / navigation) et réorganisez les entrées de menu sous "Ajouter du contenu". Maintenant, lorsque vous allez dans / node / add, ils apparaîtront dans l'ordre que vous aurez défini dans votre menu "Navigation". Exemple de capture d'écran ci-dessous. Sur / node / add, ils apparaîtront comme Page de base, puis Article.

entrez la description de l'image ici

Chaulky
la source
oh cher comment je pourrais manquer ça. Se sentir stupide ...
whitefleaCH
ne le faites pas, la seule raison pour laquelle j'ai réalisé que vous pouviez le faire était en répondant à une question différente il y a quelques jours ... si vous l'aviez demandé la semaine dernière, je n'en avais aucune idée :)
Chaulky
Juste une question complémentaire ici: le menu Ajouter du contenu est bien réorganisé dans le menu Nav mais dans le menu Admin supérieur, l'ordre est toujours alphabétique. Une astuce pour réorganiser les entrées Ajouter du contenu dans le menu administrateur? Je vous remercie.
Toki
2

Vous devez recourir à un module personnalisé pour cela car l'ordre alphabétique est codé en dur dans la fonction de rappel de page node_overview_types()(il est en fait construit dans _node_types_build()lequel est appelé à partir de cette fonction).

Sans savoir sur quoi vous voulez trier, il est assez difficile de donner une réponse complète, mais je vais mettre le code squelette dans:

function MYMODULE_menu_alter(&$items) {
  // Override the default page callback for the content types page
  $items['admin/structure/types']['page callback'] = 'MYMODULE_node_admin_overview';
}

function MYMODULE_node_admin_overview() {
  // Get the normal page build
  $default_build = node_overview_types();

  // Extract the table rows from the build
  $table_rows = $default_build['#rows'];

  // Perform an operation on these rows to re-order them for your needs
  _some_call_by_reference_sort_function($table_rows);

  // Assign the newly ordered rows back to the page build
  $default_build['#rows'] = $table_rows;

  return $default_build;
}

Assurez-vous de conserver votre fonction de rappel dans le fichier du module principal, sinon vous devrez vous soucier de remplacer la fileclé de l'élément de menu d'origine, ce qui n'est jamais amusant.

Vous devez implémenter votre propre page d'administration si vous souhaitez pouvoir modifier la commande via l'interface utilisateur.

Clive
la source
Merci Clive. J'ai juste pensé qu'il pourrait y avoir une manière différente.
fndtn357