Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Drupal中以编程方式处理视图_Drupal_Drupal 6_Views_Drupal Views - Fatal编程技术网

在Drupal中以编程方式处理视图

在Drupal中以编程方式处理视图,drupal,drupal-6,views,drupal-views,Drupal,Drupal 6,Views,Drupal Views,我正在使用自定义模块来处理此视图。我做了很多尝试没有工作,也排序太多。只有参数代码才有魅力。引导我找到正确的方法/帮助我解决问题 这是导出的视图链接 如果您想要一个包含从视图返回的数据的数组,可以使用views\u get\u view\u result函数。但是如果我是你,我会直接查询数据库,而不是使用视图,这要快得多。如果你想要一个包含从视图返回的数据的数组,你可以使用views\u get\u view\u result函数。但是,如果我是你,我会直接查询数据库,而不是使用视图,这要快得多

我正在使用自定义模块来处理此视图。我做了很多尝试没有工作,也排序太多。只有参数代码才有魅力。引导我找到正确的方法/帮助我解决问题

这是导出的视图链接


如果您想要一个包含从视图返回的数据的数组,可以使用views\u get\u view\u result函数。但是如果我是你,我会直接查询数据库,而不是使用视图,这要快得多。

如果你想要一个包含从视图返回的数据的数组,你可以使用views\u get\u view\u result函数。但是,如果我是你,我会直接查询数据库,而不是使用视图,这要快得多。

你到底想做什么?句柄不够具体。我试图从视图中获取数据数组,以创建一个javascript嵌入小部件,如果您将该脚本放在网站中,它将显示小部件。我认为Mark的意思是:您试图对视图做什么?与中一样,为什么必须以编程方式执行此操作:您不能在视图UI中配置它,然后只使用参数吗?我并不是说你不应该这样做:-但一旦你清楚了为什么要以编程方式处理视图,我们可能会提供帮助!我相信他正在尝试应用过滤器和排序。评论对此很清楚。我过去在D7上也遇到过类似的问题,但我不记得有什么解决办法。你到底想做什么?句柄不够具体。我试图从视图中获取数据数组,以创建一个javascript嵌入小部件,如果您将该脚本放在网站中,它将显示小部件。我认为Mark的意思是:您试图对视图做什么?与中一样,为什么必须以编程方式执行此操作:您不能在视图UI中配置它,然后只使用参数吗?我并不是说你不应该这样做:-但一旦你清楚了为什么要以编程方式处理视图,我们可能会提供帮助!我相信他正在尝试应用过滤器和排序。评论对此很清楚。我过去在D7上也遇到过类似的问题,但我不记得有任何解决方案。
    function custom_module(){
        views_include("view");
        $view = new view();
        $display = 'default';
        $display_id = 'page_1';
        $view = views_get_view('master');

        // ensure view exists
        if (!$view)
        print("Not real");
        // set display_id
        $view->set_display('page');
        $view->set_use_ajax(true);
        $view->set_use_pager('mini');
        $view->pager['items_per_page'] = 5;
                $handler->override_option('path', 'ajaxlisting');
                 $view->is_cacheable = FALSE;

         //Try 1 for filtering 
        $view->init_handlers();
        $handler = $view->new_display('default', 'Defaults', 'default');

        $handler->override_option('use_pager', '1');

         $new_view_filters = $view->display_handler->get_option('filters');
         if (empty($new_view_filters)) {
            $new_view_filters = array();
           }
              $new_view_filters['field_internationalcode_value'] = array(
               'id' => 'field_internationalcode_value',
             'table' => 'node_data_field_internationalcode',
              'field' => 'field_internationalcode_value',
              'operator' => 'or',
             'value' => 'US',
               'group' => '0',
             'exposed' => FALSE,
               'relationship' => 'none',
               );
         $view_overrides = array();
         $view_overrides['filters'] = $new_view_filters;
          foreach ($view_overrides as $option => $definition) {
               $view->display_handler->override_option($option, $definition);
           }

        //Try 1 filter ends & Try 2 filter starts 


        $view->display_handler->options['handlers']['filters']['field_internationalcode_value']->value = 'US';

             //Try 2 filter ends & Try 1 sorting starts

                $view->display['default']->handler- >options['sorts']['field_internationalcode_value']['order'] = 'DESC';

            //Try 1 sorting ends & try 2 sorting starts

        $sort['field_volatility_value']['order'] = 'ASC';
         $view->display_handler->set_option('sorts', $sort);

           // Try 2 sorting ends & Arguments Works good below

        if (is_object($view)) {
        if (is_array($args)) {
            //$view->set_arguments($args);
             $view->set_arguments(array($filt[0],$filt[1]));
            $view->build($display_id);
        }

     // try 3 for filtering starts here

        if (is_string($display_id)) {
            $view->set_display($display_id);
            $filter = $view->get_item($display_id, 'filter', 'field_internationalcode_value');
            $filter['value'] = 'US';
            $view->set_item($display_id, 'filter', 'field_internationalcode_value', $filter);
        } else {
            $view->init_display();
        }
     // try 3 ends here

        $view->pre_execute();
        $final = $view->execute($display_id);
        $output = $view->render();
        // Clean up after processing
        $output = $view->post_execute();
        }


        return $view->result;
           }