Drupal hook_views_post_execute not getting called

2019-06-21 20:35发布

问题:

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.

回答1:

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.