首页 / 帖子
如何在自己的模块中覆写drupal其它模块的方法?

如题:

在dupal默认的模块中有一个方法:

路径:/modules/node/node.module

function node_get_recent($number = 10) {.......}

我现在想在我的模块zfm中改这个方法的逻辑,我想在这个方法的查询条件中加一个条件。

路径:/sites/all/modules/zfm/zfm.module

这个应该怎么弄?谢谢。。。

3个答案
闻涛
发布于:2014-09-29 16:52

看了下node_get_recent的源码,并没有提供任何hook去修改查询条件或者更改查询结果。

如果是想修改node_recent_block, 提供个思路供参考:

直接复制node_get_recent的源码,新建一个 zfm_node_get_recent的函数进行自定义查询。

修改 theme_node_recent_block 的变量,如下:

/**
 * Preprocess variables for theme_node_recent_block().
 */
function zfm_preprocess_node_recent_block(&$vars) {
    $num = variable_get('node_recent_block_count', 10);
    $vars['nodes'] = zfm_node_get_recent($num);
}

这样就可以实现自定义查询了。


需要注意的是这样其实进行了两次nodes的查询,所以最好还是自定义一个block。


发布于:2014-09-29 17:39

同意 @流浪者

自己写吧,或者用views,然后在模版里面嵌入views结果也可以。

没必要一定用代码。

陈蹊
发布于:2014-09-30 13:09

要么自己实现,要么使用Views生成,推荐后者。