Drupal 6 Visninger 2: Setting Date Argumenter

stemmer
1

Passerer uid som et argument fungerer fint med denne koden:

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

Nøkkelen linje i views_get_view_result som setter argumentene er:

$view->set_arguments($args);

Men hva om bestått datoperioder?

Også, hvis noe er spesifisert som et filter på en visning, er det en måte å prorammatically endre det?

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));
  }
}
Publisert på 19/08/2009 klokken 16:36
kilden bruker
På andre språk...                            


2 svar

stemmer
1

Som for bestått dataområder og gitt postet funksjon definisjon, kan du passere datoperioder til at bare hvis visningen ville godta dem som argumenter. Jeg er ikke 100% sikker, men AFAIK datoperioder kan bare defineres som filtre, ikke som argumenter, noe som fører til det andre spørsmålet:

Programmatisk å endre de synspunkter filterinnstillinger er mulig, men litt rotete, gitt ganske komplisert vis objekt / matrise mos struktur. I ditt postet funksjon ovenfor, er den første linjen

$view = views_get_view($viewname);

Etter det inneholder $ utsikt hele visningen objektet. Filterinnstillingene er definert per skjerm, så forutsatt at du har en visning med bare en standard skjerm, finner du filterinnstillingene under

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

(Legg merke til objektet / matrise-notasjon mix - displayet er et inneholdt objekttypen views_display)

Filtre-gruppen inneholder en oppføring per filter, med varierende elementer, avhengig av filtertype. For ditt formål, vil jeg foreslå å opprette en dummy visning med bare filteret du er interessert i, med forhåndskonfigurerte / hardkodede verdier. Ved hjelp av en debugger (eller var_dump/ print_r) kan du så ta en titt på filterrekken etter visning skapelsen. Fra hva du finner der, bør du være i stand til å utlede hvordan du injiserer egendefinerte datoperiode.


Ansvarsfraskrivelse: Poking rundt i visningen som dette er litt irriterende og ikke til effektiv, men det fungerer. Som foreløpig har jeg ikke funnet en kortfattet dokumentasjon av Views2 som ville forklare innmaten i en rett frem måte, som jeg finner den offisielle API-dokumentasjonen litt mangler når det gjelder bruk av kode. (Selvfølgelig kan dette godt være bare meg som å dum;)

Svarte 23/08/2009 kl. 18:17
kilden bruker

stemmer
0

Hvis du bruker visninger 2, kan du bruke GUI for å legge til en dato argument. Deretter i url, kan du sette:

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

For Startdato / finishDate, er formatet ÅÅÅÅ-MM-DD-HH.

GL!

Svarte 27/01/2011 kl. 19:20
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more