美好的一天,
我正在做一个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文件管理器,它带有一个编辑器。)
问题是什么,因为我难倒?
感谢您的光临。
答案 0 :(得分:0)
确保将.info
和.module
文件命名为同名。
E.g。 mymodule.info
和mymodule.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。)
转到“模块”页面并刷新它。
瞧,瞧瞧......启用并保存配置。