2012-08-08 67 views
0

我想快速更改ubercart表单数据(我想删除购物车中产品节点的链接)。我找到了一个解决方案,通过创建一个新模块(下面的链接和代码)来实现hook_form_alter()。hook_form_alter - 模块或template.php

我的问题是,我必须创建一个新的模块,或者我可以只添加此功能到我的主题的template.php文件?我尝试了以后,但我无法得到它的工作(我将函数重命名为NameOfMyTheme_form_alter)。如果我遇到一些我想改变的代码,你怎么知道你是否应该创建一个模块或者改变你的主题?)。

http://www.ubercart.org/forum/support/2298/remove_product_links_shopping_cart

function your_module_form_alter(&$form, &$form_state, $form_id) { 
    if($form_id == 'uc_cart_view_form') { 
    foreach($form['items'] as $key => $item) { 
     if(!empty($item['desc']['#value'])) { 
     $form['items'][$key]['desc']['#value'] = strip_tags($item['desc']['#value']); 
     } 
    } 
    } 
} 

回答

3

hook_form_alter()是其所调用的两个主题和模块,因此把它在你的template.php文件中被罚款挂钩之一。

它实际上记录在Drupal 7的函数版本上,但我猜他们错过了Drupal 6版本。

记得清除Drupal的缓存,一旦你添加了钩子以便它被拾取。

+0

感谢克莱夫+1呼吁的主题。出于某种原因,themeName_form_alter不会被调用(我在函数顶部添加了一个dd()来检查)。最后,我重写了生成购物车HTML的themeName_uc_cart_view_form()。 – spiderplant0 2012-08-10 09:23:58

+0

嗨克莱夫,我已经在我的自定义模块中尝试过hook_form_alter。但它不起作用。这个问题有什么特别的原因吗? – Ananth 2014-05-07 12:09:46

4

添加到Clive's solution,只是为了确认为别人寻找这样的:hook_form_alter没有在Drupal 6