2009-08-19 7 views
1

uid als Argument mit diesem Code funktioniert gut:Drupal 6 Ansichten 2: Einstellen von Datum Argumente

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

Der Schlüssel Linie in views_get_view_result, die Argumente setzt ist:

$view->set_arguments($args); 

Aber was Gang Datumsbereiche?

Auch wenn etwas als Filter für eine Ansicht angegeben ist, gibt es eine Möglichkeit, es pro-grammatisch zu ändern?

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)); 
    } 
} 
+0

AFAIK gibt es keine 'views_get_view_result()' Funktion im Sichten-Modul - haben Sie es selbst deklariert? Wenn ja, sollten Sie seine Definition hinzufügen, um eine Antwort zu ermöglichen. –

+0

Sie haben so viele drupal Fragen erstellt. Sie sollten alle zu einem kombinieren. –

Antwort

1

Wie für Datenbereiche vorbei und angesichts der Funktionsdefinition geschrieben, könnten Sie Datumsbereiche, dass nur passieren, wenn die Ansicht, sie als Argumente akzeptieren würde. Ich bin nicht 100% sicher, aber afaik Datumsbereiche können nur als Filter definiert werden, nicht als Argumente, was zu Ihrer zweiten Frage führt:

Programmgesteuert Änderung der Ansichten Filtereinstellungen ist möglich, aber ein bisschen chaotisch, angesichts der ziemlich komplizierte View-Objekt/Array-Mashup-Struktur. In der oben angegebenen Funktion ist die erste Zeile

$view = views_get_view($viewname); 

Danach $ view enthält das gesamte Ansichtsobjekt. Die Filtereinstellungen pro Anzeige definiert sind, so vorausgesetzt, Sie mit nur einer Standardanzeige einen Blick haben, werden Sie die Filtereinstellungen unter

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

(Beachten Sie das Objekt/Array-Notation Mix finden - das Display ist ein enthaltenes Objekt von type views_display)

Das Array 'filters' enthält einen Eintrag pro Filter mit verschiedenen Elementen je nach Filtertyp. Für Ihren Zweck würde ich vorschlagen, eine Dummy-Ansicht mit nur dem Filter zu erstellen, an dem Sie interessiert sind, mit vorkonfigurierten/fest codierten Werten. Mit einem Debugger (oder var_dump/print_r) können Sie sich dann nach der Erstellung der View das Filterarray anschauen. Von dem, was Sie dort finden, sollten Sie ableiten können, wie Sie Ihren benutzerdefinierten Datumsbereich injizieren können.

Haftungsausschluss: In der Ansicht herumzustochern ist ein bisschen nervig und nicht effektiv, aber es funktioniert. Bis jetzt habe ich keine übersichtliche Dokumentation von Views2 gefunden, die die Innereien in einer direkten Weise erklären würde, da ich die official API documentation ein wenig fehlt bezüglich der Verwendung von Code. (Natürlich könnte das wohl nur ich zu dumm sein;)

0

Wenn Sie Ansichten 2 verwenden, können Sie die GUI verwenden, um ein Datum Argument hinzuzufügen. Dann in der URL können Sie setzen:

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

Für die startdate/finishDate ist das Format YYYY-MM-DD-HH.

GL!