Drupal 6 İzlenme 2: Ayar Tarih Argümanlar

2 Cevap php

Bir argüman olarak uid geçen bu kod ile çalışıyor:

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

Argümanlar setleri views_get_view_result içinde anahtar satırı:

$view->set_arguments($args);

Ama tarih aralıklarını geçen hakkında?

Ayrıca, bir şey bir görünümde bir filtre olarak belirtilirse, prorammatically bunu değiştirmek için bir yolu var mı?

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

2 Cevap

Veri aralıkları geçen ve yayınlanan işlev tanımı verilen gelince, görünüm argüman olarak kabul edeceğini sadece buna tarih aralıklarını geçebileceği. Ben% 100 emin değilim, ama afaik tarih aralıkları sadece ikinci Soru neden argümanlar olarak, filtreler gibi tanımlanabilir:

Programlı görünümleri filtre ayarlarını değiştirerek oldukça karmaşık görünüm nesnesi / dizi mashup yapısı dikkate alındığında, mümkün, ama biraz dağınık. Yukarıdaki yayınlanmıştır işlevi, ilk satırı

$view = views_get_view($viewname);

Bundan sonra, $ görünümü bütün görünümü nesne içerir. Filtre ayarları ekran başına tanımlanır, bu nedenle yalnızca varsayılan bir ekran ile bir görünümü var varsayarak, sen altında filtre ayarlarını bulabilirsiniz

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

(Nesne / dizi gösterimde karışımı Not - ekran tipi views_display bir alan nesnesi)

'Filtreler' dizisi filtre tipine bağlı olarak değişen elemanları ile filtre başına bir giriş içerir. Amaç için, sana önceden yapılandırılmış / kodlanmış değerleri ile ilgilenen sadece filtre ile bir kukla görünüm oluşturmak için öneririm. Bir hata ayıklayıcı kullanarak (ya da var_dump / print_r) Eğer görünüm oluşturulduktan sonra filtre dizi de bir göz atabilirsiniz. Orada bulmak ne, size özel bir tarih aralığı enjekte nasıl anlamak gerekir.


Yasal Uyarı: Bu gibi görünümde çevresinde alay biraz can sıkıcı ve değil etkili olduğunu, ama çalışıyor. Ben official API documentation bir bit kodundan kullanımına ilişkin eksik bulmak gibi henüz olarak, ben, bir yalındır şekilde bağırsaklar açıklayacak kez bakıldı2 kısa bir belge bulamadı. (Tabii ki bu da sadece bana aptal ;) olmanın olabilir

Eğer manzarası 2 kullanıyorsanız, size bir tarih argüman eklemek GUI kullanabilirsiniz. Sonra url, sen koyabilirsiniz:

www.yousite.com / yourview / startDate - finishDate

StartDate / finishDate için, YYYY-AA-GG-HH.

GL!