Özel tablo / şema ile görünümleri kullanma


19

Oluşturduğum özel bir tablodan bazı verileri çekecek bazı görünümler ayarlamanız gerekiyor. Bazı görünümlerin içeriği düzenli bir şekilde ve özel tablomdan (belirli bir nid için sorgulama yapabileceğim vb.) Alması gerekir .

Bunu nasıl yapabilirim veya araştırmak için iyi bir yer nerede?



Aradığım şey bu olabilir. Teşekkürler!
vintorg

Yanıtlar:


25

Modülünüzün hook_views_data () yöntemini uygulaması gerekir .

Kanca belgelerinde verilen örnek, aşağıdaki SQL'den tanımlanan bir tablo içindir.

CREATE TABLE example_table (
  nid INT(11) NOT NULL,
  plain_text_field VARCHAR(32,
  numeric_field INT(11),
  boolean_field INT(1),
  timestamp_field INT(8),
  PRIMARY KEY(nid)
);
function mymodule_views_data() {
  $data['example_table']['table']['group'] = t('Example table');

  $data['example_table']['table']['base'] = array(
    'field' => 'nid',
    'title' => t('Example table'), 
    'help' => t('Example table contains example content and can be related to nodes.'), 
    'weight' => -10,
  );

  $data['example_table']['table']['join'] = array(
    'node' => array(
      'left_field' => 'nid', 
      'field' => 'nid',
    ),
  );

  $data['example_table']['nid'] = array(
    'title' => t('Example content'), 
    'help' => t('Some example content that references a node.'),
    'relationship' => array(
      'base' => 'node',
      'base field' => 'nid', // The name of the field on the joined table.
      // 'field' => 'nid' -- see hook_views_data_alter(); not needed here.
      'handler' => 'views_handler_relationship', 
      'label' => t('Example node'),
    ),
  );

  $data['example_table']['plain_text_field'] = array(
    'title' => t('Plain text field'), 
    'help' => t('Just a plain text field.'), 
    'field' => array(
      'handler' => 'views_handler_field', 
      'click sortable' => TRUE,
    ), 
    'sort' => array(
      'handler' => 'views_handler_sort',
    ), 
    'filter' => array(
      'handler' => 'views_handler_filter_string',
    ), 
    'argument' => array(
      'handler' => 'views_handler_argument_string',
    ),
  );

  $data['example_table']['numeric_field'] = array(
    'title' => t('Numeric field'), 
    'help' => t('Just a numeric field.'), 
    'field' => array(
      'handler' => 'views_handler_field_numeric', 
      'click sortable' => TRUE,
    ), 
    'filter' => array(
      'handler' => 'views_handler_filter_numeric',
    ), 
    'sort' => array(
      'handler' => 'views_handler_sort',
    ),
  );

  $data['example_table']['boolean_field'] = array(
    'title' => t('Boolean field'), 
    'help' => t('Just an on/off field.'), 
    'field' => array(
      'handler' => 'views_handler_field_boolean', 
      'click sortable' => TRUE,
    ), 
    'filter' => array(
      'handler' => 'views_handler_filter_boolean_operator',
      'label' => t('Published'),
      'type' => 'yes-no',
      'use equal' => TRUE,
    ), 
    'sort' => array(
      'handler' => 'views_handler_sort',
    ),
  );

  $data['example_table']['timestamp_field'] = array(
    'title' => t('Timestamp field'), 
    'help' => t('Just a timestamp field.'), 
    'field' => array(
      'handler' => 'views_handler_field_date', 
      'click sortable' => TRUE,
    ), 
    'sort' => array(
      'handler' => 'views_handler_sort_date',
    ), 
    'filter' => array(
      'handler' => 'views_handler_filter_date',
    ),
  );

  return $data;
}

Bu mükemmel bir yardımcı oldu. Ancak, alanlardan biri çok değerli ve bu yüzden farklı ayarlanması gerektiğini düşünüyorum - ama nasıl?
Vacilando

Fark, kullanmanız gereken işleyicilerde ve "evet-hayır" yerine ne kullandığınızdır; Yine de, hangi işleyicilerin çok değerli bir alan için olduğunu söyleyemem. Muhtemelen hiç kimse sormamışsa, soru olarak daha iyidir.
kiamlaluno

Teşekkürler, @kiamlaluno - Tamam, ben baktım, bulamadım, sonra ayrı bir soru oluşturmak için cesaret - bkz. Drupal.stackexchange.com/questions/70561/…
Vacilando

2

Veri modülünü araştırmaya değeceğini düşünüyorum . Bu çok güçlüdür, çünkü Drupal'a Drupal'a olmayan bir tabloyu Görünümler'de bir veri kaynağı ("İçerik", "Sınıflandırma" vb.) Olarak görünür olacak şekilde bildirmenize izin verir. Drupal olmayan tablo ile Drupal varlıkları arasındaki birleşimleri de bildirebilirsiniz (örneğin, Drupal olmayan tablonuzda bir nid stoklayabiliyorsanız, herhangi bir düğümle nid'de bir birleşim bildirebilirsiniz).

Drupal olmayan tablonuzu bir varlık olarak ilan etmenizi sağlayan bir alt modül de var, ancak şimdiye kadar bunu denemedim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.