启用挂钩表单更改模块 - 不显示在模块中

时间:2013-02-06 13:53:46

标签: drupal drupal-7

美好的一天,

我正在做一个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看到模块以便我可以启用它? 我没有名为Custom的类别,也没有显示任何内容。

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

我在服务器上创建了这两个文件,所以我认为没有像换行符这样的问题(我使用的是GoDaddy的FTP文件管理器,它带有一个编辑器。)

问题是什么,因为我难倒?

感谢您的光临。

2 个答案:

答案 0 :(得分:0)

确保将.info.module文件命名为同名。

E.g。 mymodule.infomymodule.module

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

在您的钩子实现中,将单词hook替换为您的模块名称

function mymodule_form_alter($form, &$form_state, $form_id)
{
    // code goes here...
}

答案 1 :(得分:-1)

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

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

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

保存此文件(在我的情况下,它仍然是commerce.info。)

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

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

转到“模块”页面并刷新它。

瞧,瞧瞧......启用并保存配置。