Drupal hook_views_post_execute 没有被调用

发布于 2024-11-04 15:33:40 字数 945 浏览 6 评论 0原文

我正在尝试挂钩 Drupal 7 中的 hook_views_post_execute 事件,我的名为 foo 的模块位于 sites/default/modules/features/foo

我的 foo.module 文件包含 hook_views_api 函数的定义,定义如下:

function foo_views_api() {
    return array("version" => 3.0);
}

此函数被调用,但我的 hook_views_post_execute 实现确实如此不,它是这样定义的(在同一个 foo.module 文件中):

function foo_views_post_execute(&$view) {

    $seen_rows = array();
    $newResults = array();

    for($i = 0; $i < count($view->result); ++$i) {
        if (!in_array($view->result[$i]->nid, $seen_rows)) {
            $newResults[] = $view->results[$i];
        }

        $seen_rows[] = $view->result[$i]->nid;
    }

    $view->result = $newResults;

}

我已经浏览了 drupal API/hooks 文档,用谷歌搜索并阅读了我能找到的每一篇博客文章。我就是无法让它发挥作用。钩子不会被调用。我假设我犯了一些简单的错误,因为我通常不是 drupal 开发人员或 PHP 开发人员。

I'm trying to hook into the hook_views_post_execute event in Drupal 7, my module called foo is located in sites/default/modules/features/foo.

My foo.module file contains a definition for the hook_views_api function, defined like this:

function foo_views_api() {
    return array("version" => 3.0);
}

This function gets called, but my implementation of the hook_views_post_execute does not, it's defined (in the same foo.module file) like this:

function foo_views_post_execute(&$view) {

    $seen_rows = array();
    $newResults = array();

    for($i = 0; $i < count($view->result); ++$i) {
        if (!in_array($view->result[$i]->nid, $seen_rows)) {
            $newResults[] = $view->results[$i];
        }

        $seen_rows[] = $view->result[$i]->nid;
    }

    $view->result = $newResults;

}

I've been over the drupal API/hooks documentation, googled and read every blog post I've been able to find. I just can't get it to work. The hook does not get called. I'm assuming I've done something simple wrong since I'm not a drupal developer or PHP developer normally.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心房敞 2024-11-11 15:33:40

该视图可能已被缓存,因此它不会通过该函数。

转到左上角并清除缓存,您应该会看到结果。

The view has probably been cached so it doesn't go through that function.

Go to the top left and clear the cache and you should see the result.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文