Drupal的6次2:设置日期参数(Drupal 6 Views 2: Setting Date A

2019-07-01 18:10发布

传递UID作为参数正常工作与此代码:

$bouts = views_get_view_result('Results', 'page_1', array($user->uid));

在views_get_view_result重点线,设置参数为:

$view->set_arguments($args);

但有关传递日期范围是什么?

另外,如果事情被指定为在视图上的过滤器,是有办法prorammatically改变呢?

views_get_view_result:

/**
* Investigate the result of a view.
* from Drupal.org. 
*
* @param string $viewname
*      The name of the view to retrieve the data from.
* @param string $display_id
*      The display id. On the edit page for the view in question, you'll find
*      a list of displays at the left side of the control area. "Defaults"
*      will be at the top of that list. Hover your cursor over the name of the
*      display you want to use. A URL will appear in the status bar of your
*      browser. This is usually at the bottom of the window, in the chrome.
*      Everything after #views-tab- is the display ID, e.g. page_1.
* @param array $args
*      Array of arguments. (no keys, just args)
* @return
*      array
*          An array containing an object for each view item.
*      string
*          If the view is not found a message is returned.
*/
function views_get_view_result($viewname, $display_id = NULL, $args = NULL) {
  $view = views_get_view($viewname);
  if (is_object($view)) {
    if (is_array($args)) {
      $view->set_arguments($args);
    }
    if (is_string($display_id)) {
      $view->set_display($display_id);
    }
    else {
      $view->init_display();
    }
    $view->pre_execute();
    $view->execute();
/*  print "<pre> $viewname: $display_id";
    print_r(get_class_methods($view));  */
    return $view->result;
  }
  else {
    return t('View %viewname not found.', array('%viewname' => $viewname));
  }
}

Answer 1:

作为将数据范围并给予发布函数定义,你可以通过日期范围中,只有当该视图会接受它们作为参数。 我不是100%肯定,但据我所知日期范围只能被定义为过滤器,不作为参数,从而导致你的第二个问题:

编程改变视图过滤器设置是可能的,但有点杂乱,鉴于相当复杂的视图对象/阵列混搭结构。 在你上面的贴功能,第一行是

$view = views_get_view($viewname);

在此之后,$视图包含整个视图对象。 该过滤器设置每个显示器定义,所以假设你有一个观点,只有一个默认显示,你会发现下面的过滤器设置

$view->display['default']->display_options['filters']

(请注意,对象/数组符号组合 - 在显示的类型是views_display的包含的对象)

“过滤器”数组包含每一个过滤器条目,具有取决于过滤器类型变化元件。 你的目的,我建议创建只有你有兴趣,与预配置/硬编码值过滤器的虚拟视图。 使用调试器(或var_dump / print_r ),然后你可以看一下视图创建后的滤波器阵列。 从你发现有什么,你应该能够推断出如何注入您的自定义日期范围。


免责声明:在这样的观点打探是有点讨厌,而不是有效的,但它的作品。 作为然而,我还没有发现Views2的简要文件,将解释在一个直接的方式内脏,因为我觉得官方的API文档有点欠缺关于从代码中的用法。 (当然,这很可能只是我是愚蠢的;)



Answer 2:

如果您使用的意见2,您可以使用GUI添加日期的说法。 然后,在URL,就可以把:

www.yousite.com/yourview/startDate--finishDate

为起始日期/ finishDate,格式为YYYY-MM-DD-HH。

GL!



文章来源: Drupal 6 Views 2: Setting Date Arguments