0

再会,

我正在做一个 hook_form_alter 并遵循一个教程,您可以在 /sites/all/modules 目录中创建一个目录并将 module.info 和 mymodule.module 文件放在其中。我将该目录称为 mymodule,因此路径将是 /sites/all/modules/mymodule。

我遇到的问题是尝试启用该模块。当我检查时,它没有显示在模块列表中。它显然在我的目录中。

我的模块(my_module.module)看起来像这样,将用于修改添加产品的表单(基本上是取出SKU,标价和佣金):

<?php
// $Id$

/**
* @file
* Module to hold my customizations to Ubercart
*/

/**
* Implementation of hook_form_alter()
*/
function my_module_form_alter($form_id, &$form) {
  if ($form_id == 'product_node_form') {
    $form['base']['model']['#required'] = FALSE;
    $form['base']['prices']['list_price']['#required'] = FALSE;
    $form['base']['prices']['cost']['#required'] = FALSE;
    $form['base']['prices']['sell_price']['#required'] = FALSE;
    $form['base']['prices']['shippable']['#required'] = FALSE;
  }
}

信息文件 my_module.info 如下所示:

; $Id$
name = My module
description = My customizations to Ubercart
package = Custom
core = 7.x

为什么它不会出现在模块列表中,我如何让 Drupal 看到模块以便我可以启用它?我没有名为“自定义”的类别,也没有显示任何内容。

到目前为止,我已经进入了我的 php.ini 文件并输入了 safe_mode=off 以查看是否有帮助(因为有人说这有时会导致 Drupal 出于某种原因忽略新模块)但这没有帮助。

我在服务器上创建了这两个文件,所以我认为换行之类的东西不会有任何问题(我使用 GoDaddy 的 FTP 文件管理器,它带有一个编辑器。)

问题可能是因为我被难住了?

感谢您的关注。

4

2 回答 2

0

确保使用相同的名称命名.info.module文件。

例如mymodule.infomymodule.module

请注意,名称应为字母数字(允许下划线)并以字母开头。

在你的钩子实现中,hook用你的模块名称替换这个词

function mymodule_form_alter($form, &$form_state, $form_id)
{
    // code goes here...
}
于 2013-02-06T14:14:23.660 回答
-1

我发现了一些有用的东西。在阅读了有关换行问题但不知道这是否造成问题的人之后,我决定尝试一下。

我去了一个模块目录,发现了一个 .info 文件。就我而言,我去了一个包含 Commerce 的目录,并将 Commerce.info 文件复制到我的自定义模块的目录中。

然后,我所做的是取出 Drupal 在安装 Commerce 模块后添加的内容(您可以对从中复制的任何 .info 文件执行相同操作)并在开始时修改信息,删除任何依赖行或任何不相关的内容没关系。换句话说,让它像您尝试使用的 .info 文件,但不要从您尝试启用的 .info 复制!

保存这个文件(在我的例子中,它仍然是 commerce.info。)

现在删除您最初尝试启用的 .info 文件。

将新的 .info 文件重命名为您想要的名称(commerce.info => mymodule.info。)

转到您的模块页面并刷新它。

瞧……就是这样。启用并保存配置。

于 2013-02-06T17:08:17.993 回答