Je suis très curieux de savoir comment un module Drupal peut être désintégré en plusieurs fichiers d'inclusion. Une fois que j'ai prévu de simplifier un de mes modules complexes qui ont atteint 2.3K de lignes avec la moitié de son ensemble de fonctionnalités. Je dois annuler toutes ces étapes en raison du manque de connaissances sur la portée de l'inclusion. Aidez-moi à cet égard s'il y a quelques informations détaillées.Comment diviser le code d'un module en fichiers séparés
Répondre
Qu'est-ce Nikitsaid est correct.
J'ajouterai que certains hooks sont autorisés à définir quels fichiers doivent être chargés. Des exemples de tels crochets sont hook_theme()
et hook_menu()
.
Un module ne doit jamais charger de manière inconditionnelle un fichier dont il a besoin en appelant module_load_include()
depuis l'extérieur d'une fonction.
function book_menu() {
$items['admin/content/book'] = array(
'title' => 'Books',
'description' => "Manage your site's book outlines.",
'page callback' => 'book_admin_overview',
'access arguments' => array('administer book outlines'),
'file' => 'book.admin.inc',
);
$items['admin/content/book/list'] = array(
'title' => 'List',
'type' => MENU_DEFAULT_LOCAL_TASK,
);
$items['admin/content/book/settings'] = array(
'title' => 'Settings',
'page callback' => 'drupal_get_form',
'page arguments' => array('book_admin_settings'),
'access arguments' => array('administer site configuration'),
'type' => MENU_LOCAL_TASK,
'weight' => 8,
'file' => 'book.admin.inc',
);
// …
}
function user_theme() {
return array(
'user_picture' => array(
'arguments' => array('account' => NULL),
'template' => 'user-picture',
),
'user_profile' => array(
'arguments' => array('account' => NULL),
'template' => 'user-profile',
'file' => 'user.pages.inc',
),
// …
'user_admin_perm' => array(
'arguments' => array('form' => NULL),
'file' => 'user.admin.inc',
),
// …
);
}
C'est simple, passez en revue d'autres grands modules (comme cck, views, etc.). Les crochets principaux devraient être dans le module, d'autres devraient être dans différents dossiers - themers, pages d'administration, d'autres pages, fonctions de service et ainsi de suite ...
En utilisant plus de dossiers, est juste une question de grouper des choses semblables ensemble dans le même fichier, pour le garder plus géré. fichiers typiques utilisés est
.admin.inc
pour tous les trucs d'administration, callbacks de menu, des formulaires, etc..pages.inc
pour callbacks menu frontend..theme.inc
pour les fonctions à thème, prétraiter crochets etc..forms.inc
pour les formes non-administrateurs et leurs gestionnaires.
Ceci est plus un style de codage que toute autre chose. Donc, c'est juste pour vous aider à maintenir le code que vous avez écrit.
C'est aussi pour la performance. Toutes les fonctions des fichiers .module sont chargées à chaque initialisation. – ram4nd
- 1. Comment diviser un module GWT en plusieurs fichiers javascript séparés?
- 2. Diviser la source Python en répertoires séparés?
- 3. Pouvez-vous diviser un 'paquet' PDF en fichiers séparés avec CF8 ou CF9?
- 4. VBScript comment diviser une séparés ET séparées séparées valeurs espacées?
- 5. Règle de base typique pour diviser des morceaux de code en projets séparés
- 6. Diviser EDMX pour Entity Framework - Couche d'objet Breakout en fichiers séparés - possible?
- 7. diviser PDF en plusieurs fichiers en C#
- 8. Comment diviser des fichiers AVI
- 9. gwt modules séparés sans partage de code
- 10. Comment diviser une ligne en mots séparés par un ou plusieurs espaces dans bash?
- 11. Comment diviser efficacement les gros fichiers
- 12. Comment diviser la valeur du mot-clé tableau séparés par des virgules en PHP?
- 13. Comment diviser la sortie de mysqldump en fichiers plus petits?
- 14. Comment diviser le cercle en parties égales?
- 15. Segmentation du code en plusieurs fichiers source
- 16. Comment diviser un fichier texte en plusieurs fichiers?
- 17. Diviser les modules F # entre plusieurs fichiers
- 18. Comment écrire le même texte dans deux descripteurs de fichiers séparés en utilisant Perl?
- 19. Comment ouvrir et diviser plusieurs fichiers
- 20. Gérer des fichiers de traduction séparés (.po) dans Django
- 21. comment diviser une phrase en swi-prolog
- 22. Comment utiliser le module Easygui de Python pour choisir des fichiers et insérer des noms de fichiers dans le code
- 23. Organisation de longs scripts dans des fichiers séparés?
- 24. Comment diviser un tableau multidimensionnel en PHP?
- 25. Dois-je diviser les tables pertinentes pour le module X en différentes DB? Mysql
- 26. Comment organiser les fichiers de code source Python?
- 27. Diviser le format GIF en images
- 28. C#: diviser une classe en plusieurs fichiers (avec un formulaire)
- 29. Séparer le code en un seul formulaire [C#]
- 30. Comment diviser NSString en composants?
Mais mon intention principale concerne plusieurs fonctions d'accès aux données utilisées dans diverses parties. par exemple. commentaires. 'comment_total_count()', 'comment_today_count()' est utilisé dans les modèles, 'comment_thread()' est requis sur la page d'administration ainsi que sur la page de contenu. 'comment_insert()' sur la page de contenu alors que 'comment_remove()' et 'comment_edit()' sur la page admin. Ai-je besoin d'utiliser la syntaxe 'require' ou' include'? Et que diriez-vous d'inclure plusieurs fichiers? –
La fonction utilisée pour inclure les fichiers PHP est ['module_load_include()'] (http://api.drupal.org/api/function/module_load_include/6). Vous pouvez inclure un ou plusieurs fichiers. – kiamlaluno