如何实现hook_finder_goto_alter()? -- hooks 领域 drupal 相关 的问题

How do I implement hook_finder_goto_alter()?


1
vote

问题

中文

我有点麻烦了我正在工作的模块。我正在尝试修改一个模块来重定向流量,但即使它启用它似乎没有任何操作。我过去的使用钩子有问题,我不确定我做错了什么。

我基本上使用Finder模块,这是重定向的代码:

  function test_finder_goto_alter(&$result, $finder) {   /* Redirect to a different page in the current directory that was requested */     drupal_goto("testpage"); }   

我在模块中看到模块并启用它,但它仍然不会重定向我想要的方式。你有什么建议我做错了吗?我不认为它是这个模块的特定我认为我可能会在做错一般。

英文原文

I'm having a bit of trouble with troubleshooting a module I am working. I am trying to modify a module to redirect traffic but even though its enabled it doesn't seem to do anything. I've had problems in the past with using hooks and i'm not sure what I'm doing wrong.

I am basically using the finder module and here's the code to redirect:

function test_finder_goto_alter(&$result, $finder) {   /* Redirect to a different page in the current directory that was requested */     drupal_goto("testpage"); } 

I see the module in modules and enabled it but it still doesn't redirect the way I want it to. Do you have any suggestion on what I'm doing wrong? I don't think its specific to this module I think I might be doing something wrong in general.

  

回答列表

1
 
vote
vote
最佳答案
 

hook_*_alter() 通常被认为是作为参考传递的第一个参数,而不是执行 drupal_goto() ,或者重定向用户的任何其他函数。

查看Finder模块的代码,我注意到以下代码是处理您实现的挂钩的代码。

  $base_module = &$finder->base_handler['#module'];  if ((isset($finder->go) && $finder->go && count($result)) || ($goto == 'best' && count($result) === 1)) {   drupal_alter('finder_goto', $result, $finder);   $current_result = current($result);   module_invoke($base_module, 'finder_goto', $finder, $current_result); }    

finder调用它与 drupal_alter()< / a>,它是用于调用此类挂钩的函数,它将改变的参数传递给 hook_finder_goto()在 $base_module 模块中实现。

 

Implementations of hook_*_alter() are generally supposed the first parameter passed as reference, not to execute drupal_goto(), or any other functions that redirect the user.

Looking at the code of the Finder module, I notice that the following code is one that handles the hook you implemented.

$base_module = &$finder->base_handler['#module'];  if ((isset($finder->go) && $finder->go && count($result)) || ($goto == 'best' && count($result) === 1)) {   drupal_alter('finder_goto', $result, $finder);   $current_result = current($result);   module_invoke($base_module, 'finder_goto', $finder, $current_result); }  

Finder calls that hook with drupal_alter(), which is the function used to invoke such hooks, and it passes the altered argument to the implementation of hook_finder_goto() implemented in the $base_module module.

 
 
         
         
1
 
vote

钩子101

钩子应在模块中创建。应启用它们的模块。

所以在第一个实例中,您需要使用正确的信息创建一个.info和.module文件。

然后实现挂钩,您必须使用模块名称。

因此,如果PHP代码处于名为 TEST 的模块,则上面的示例代码将起作用。

so hook_menu() 在一个名为 test.module 的模块中是一个名为 test_menu()

的函数

第二钩只会在调用时调用钩子,在例如构建菜单系统时,一些将在备份时调用,并且在特定操作发生时会调用其他人。您需要阅读有关挂钩的文档,以了解更多信息。

参数和返回值相同,每个钩子都不同。所以文件在那里很重要。

所以钩子的一般清单。

  • 是模块中的钩子?

  • 是启用的模块?

  • 是命名为相同的钩子 模块?

  • 是呼叫的动作 钩子被称为?

  • 我清除了缓存吗?

  • 我以正确的方式使用钩子?

 

Hooks 101

hooks should be created in a module. The module which they are called from should be enabled.

So in the first instance you will need to create a .info and a .module file with the correct information in.

Then to implement a hook you must use the module name.

So the example code above would work if the php code is in a module called test which was enabled.

So hook_menu() in a module called test.module would be a function called test_menu()

Secondly hooks will only be called when invoked, some get invoked rarely when for example building the menu system, and others are invoked when specific actions happen. You will need to read up on the documentation for the hook in question to find out more.

The same goes for parameters and return values, each hook is different. So the documentation is important there.

So a general checklist for hooks.

  • Is the hook in a module?

  • Is the module enabled?

  • Is the hook named the same as the module?

  • Is the action which is calling the hook being called?

  • Have I cleared the cache?

  • Am I using the hook in the correct way?

 
 
 
 
0
 
vote

在实现钩子后,您应该清除Drupal缓存。

转到admin-&gt;性能 - &gt;清除缓存

 

You should clear Drupal cache after you implementing hook.

Go to the admin-> Performance -> Clear cache

 
 
 
 

相关问题

2  多个字段搜索查找器和结果排序  ( Multiple fields search with finder and results sorting ) 
我配置了一个视图,列出了数百个元素,如下所示: 名称,类型,结果,其他 现在,我需要搜索它,同时使用多种形式,以这种方式: 搜索元素n.1:[输入] 搜索元素N.2:[输入] 搜索元素N.3:[输入] 搜索元素N.4:[输入] 我试图使用"finder" 模块和自动完成字段来实现它。一切都适用,但结果按照视图的顺序...

7  什么是不同类型的钩子?  ( What are the different types of hooks ) 
在一个旧博客文章,Larry Garfield是指"注册表样式"挂钩和hook_nodeapi型挂钩。 在分解不同类型的钩子时,似乎没有任何文档。有大挂钩 这样的故障看起来像什么? ...

5  模块和性能  ( Modules and performance ) 
我知道禁用的模块不会影响性能。我也知道通常,您启用的模块数量将实现您网站的速度。 Drupal.org上的一个人表示您永远不会启用40多个模块。我发现这个奇怪的是因为我会假设一些模块比其他模块更加密集。 是它只是某种效果性能的模块数量,(因为挂钩始终被调用),或者它真的依赖于您在模块中所做的内容吗? ...

3  在模块中启用/禁用评论表单?  ( Enable disable comment form in a module ) 
我想通过我的自定义模块将给定节点的注释标志设置为1或2(要显示或隐藏评论表格),具体取决于某些条件。 我尝试过wood_node_view,但这种方法似乎不起作用: 函数custom_node_view($ node,$ view_mode,$ langcode){ $ node-&gt;评论= 1; } 即...

2  如何在位置模块中更改国家下拉列表?  ( How to alter country dropdown in location module ) 
我一直在研究一种方法来限制可用的国家在贡献的位置模块附带的下拉。我认为 hook_form_alter() 是处理某些国家的方法,但是从手中启动 hook_form_alter() 片段不是我有能力实现的东西。经过大量谷歌曲,我无法找到代码片段让我开始。 我现在正在工作的项目只允许来自美国和加拿大的注册,所以我希望将...

7  将URL参数传递给菜单回调  ( Passing in url parameters to menu callbacks ) 
i实现了 hook_menu() 以创建一个名为"用户登录" 的新路径。页面回调函数接收像 $_GET['parameter'] 的URL参数;但是,当我转到 http://site.com/user-login?//site.com/user-login ?parameter=test ,我得到了一个404错误。...

1  安装模块时,我的管理菜单消失了  ( My administration menu dissapears when installing a module ) 
我创建了一个模块,使用以下代码实现 hook_menu() : function mypbm_menu() { $items['pbg'] = array( 'title' => 'Theming example', 'description' => 'Examples of implemen...

0  创建帐户时将额外的元素传递给$编辑数组  ( Passing an extra element to edit array when creating an account ) 
我通过实现hook_user 在我的自定义模块中添加了额外的用户注册验证ritera if ('validate' == $op && 'user_register' == $edit['form_id'] && 'account' == $category && !$edit['remote_create_us...

3  在重估表格时,我如何更好地玩得很好?  ( How do i better play nice with weights when overriding a form ) 
我正在尝试使用常量联系人模块。 此模块的一个功能是它将复选框插入用户注册表。问题是它似乎以一种方式设定了权重,即在注册表上以自己的实现 hook_form_alter() 。现场订单现在是一团糟:用于确认电子邮件地址的字段现在是第一个。 恒定的触点模块指定复选框的权重: '#weight' => 11, 我...

8  hook_file_download的示例  ( Example of hook file download ) 
如何根据其内容类型限制对某些文件的访问?我有注册用户的下载部分,我希望防止它们在我网站外的某处发布链接。 正在实现 hook_file_download() 足够? 我尝试了这个代码,这足以实现我的目的,但 hook_file_download() 的文档没有多少帮助。 function customize_...

18  如何获取hook_install()运行所有hook_update_n()?  ( How to get hook install to run all hook update n ) 
如何获取hook_install()来运行我的模块的所有更新?我有它mymod.install文件。 我已经尝试过 function mymod_install() { mymod_update_6001(); } 但它似乎并没有做任何事情。如果我有一个mymod_update_6002()我还会拨打6...

2  在Drupal 7中导出图像样式?  ( Exporting image styles in drupal 7 ) 
我知道,有一个钩子以编程方式定义代码中的图像样式,但是无论如何都无法找到要在数据库中存在的导出到代码? ...

1  模块未显示在update.php上  ( Module doesnt appear on update php ) 
我想向我的模块模式添加列,我添加了更新挂钩 hook_update_6031 但是,当我转到update.php脚本时,我的模块根本未列出,甚至不是"无更新" 。我必须提供一些钩子是否列出了我的模块?我似乎无法找到关于如何编写更新的任何文档,而不是为 99887661 或查看其他一些模块代码。 ...

15  挂钩现场复制  ( Hook for field duplication ) 
我有一个自定义模块,它格式化了一个图像字段的显示,可以接受多个值。 我想知道什么钩子我应该用来复制字段的第一个值(例如[image1]"),并将其添加回数组的开头(使用 array_unshift() 我猜)在其余函数之前格式化字段的显示/主题。 所以什么是 [image1] [image2] [imag...

3  使用hook_form_alter()和其他提交函数时,可以参考提交回调的PHP文件?  ( When using hook form alter and additional submit functions can one reference ) 
以下代码有效。 function bleh_form_alter(&$form, &$form_state, $form_id) { switch ($form_id) { case "webform_client_form_13": $form['#submit'][] = 'bleh...

1  LightBox对话框中的内容  ( Content in lightbox dialog ) 
如果图像属于相同的内容类型,则可以将某些内容(CCK字段值)传递给Lightbox对话框? ...

1  我应该在drupal 7中实现哪些钩子,这是相当于hook_comment()和hook_nodeapi()?  ( Which hooks should i implement in drupal 7 that are the equivalent of hook comme ) 
这是我使用的代码,用于drupal 6: /** * @Implement of hook_nodeapi() */ function mycaptcha_nodeapi(&$node, $op, $teaser, $page) { global $user; switch ($op) { c...

17  如何检测从“发布”将节点更改为“未发布”时?  ( How can i detect when a node is changed from published to unpublished ) 
在 hook_node_update() ,我可以轻松地告诉节点的"状态" (无论是发布的还是不发布)。 但是,是否有一种简单的方法来检查更新的节点是否已发布,但现在不是? (或反之亦然)? 我认为规则可能对"节点值已经改变" 或沿着这些行的某些条件,但我想以编程方式进行此操作。 我找到了似乎在drupal.org上...

0  根据用户名获取已记录的用户的$用户对象并设置其状态  ( Getting the user object of a logged out user based on a username and setting it ) 
如在此问题中提到的使用User_Load()和user_save()来更改已记录的用户的状态,我希望基于a的已记录用户的$用户对象访问用户名并将用户状态设置为user_save()。 正如所建议,我将我的代码放在自定义模块中,并使用页面回调实现了Hook_Menu()。但是,我仍然没有获取$用户。 更新:我设法获取...

8  在添加节点页面上更改页面标题  ( Change page title on add node page ) 
我需要使用哪种钩/过滤器来修改"添加节点" 页面标题(此标题)?例如,当查看"/ node /添加/" 时,我想将标题从"创建" 更改为"添加新" ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.