如何将模块的代码拆分为单独的文件

Sho*_*waz 10 drupal drupal-6 drupal-modules

我很想知道如何将Drupal模块分解为多个包含文件.链接的一些钩子支持包括组件,如hook_menu,hook_theme等.

一旦我计划简化我的一个复杂模块,它已经达到2.3K的行,其中一半的功能集.由于缺乏关于包容范围的知识,我必须回滚所有这些步骤.

如果有一些详细信息,请帮助我.

kia*_*uno 10

什么Nikit 是正确的.
我将添加一些允许定义需要加载的文件的钩子.这种钩子的例子是hook_theme(),和hook_menu().

模块永远不应无条件地module_load_include()从函数外部加载需要调用的文件.

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',
    ),
    // …
  );
}
Run Code Online (Sandbox Code Playgroud)


goo*_*orp 7

使用更多文件只需要在同一个文件中将类似的东西组合在一起,以使其更易于管理.使用的典型文件是

  • .admin.inc 适用于所有管理内容,菜单回调,表单等.
  • .pages.inc 用于前端菜单回调.
  • .theme.inc 用于主题函数,预处理挂钩等
  • .forms.inc 对于非管理员表单及其处理程序.

这更像是一种编码风格.所以这只是为了帮助你自己维护你编写的代码.