/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), 'join' => array( // Join with node table 'node' => array( 'left_field' => 'title', 'field' => 'category', ) ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'desc' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
// custom_tableのjoin結果(Viewsの検索SQL) SELECT custom_table.id AS custom_table_id, custom_table.category AS custom_table_category, custom_table.desc AS custom_table_desc, node.created AS node_created FROM {node} node LEFT JOIN {custom_table} custom_table ON node.title = custom_table.category WHERE node.status = '1' AND (node.type IN ('article')) AND (node.title LIKE 'cate-a' ) ORDER BY node_created DESC LIMIT 10 OFFSET 0
添付 | サイズ |
---|---|
custom_table.zip (1.51 KB) | 1.51 KB |
/** * Implements hook_views_api(). */ function custom_table_views_api() { return array( 'api' => 3, ); } /** * Implements hook_views_data_alter(). */ function custom_table_views_data_alter(&$data) { $d = $data; // nodeタイプの"title"にリレーションシップ関連をつける $data['node']['title']['relationship'] = array( 'handler' => 'views_handler_relationship', 'base' => 'custom_table', 'title' => 'Custom Table Category', 'base field' => 'category', ); } /** * Implements hook_views_data(). */ function custom_table_views_data() { $table = array( 'custom_table' => array( 'table' => array( 'group' => 'custom_table', 'base' => array( 'field' => 'id', //Primary key 'title' => t('Test Data ID'), 'help' => t('The Id for the test data'), ), ), 'id' => array( 'title' => t('Custom Table ID'), 'help' => t('Test data Id field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric' ), 'sort' => array('handler' => 'views_handler_sort'), ), 'category' => array( 'title' => t('Category'), 'help' => t('The category that refer to node'), 'field' => array('click sortable' => TRUE, ), 'filter' => array('handler' => 'views_handler_filter_string' ), 'sort' => array( 'handler' => 'views_handler_sort' ), ), 'description' => array( 'title' => t('Description'), 'help' => t('Test data description field'), 'field' => array('click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_string' ), 'sort' => array('handler' => 'views_handler_sort' ), ), ) ); return $table; }
/** * Implements hook_views_data_alter(). */ function drills_ch_vocabulary_views_data_alter(&$data) { // ダミーフィールド(Description)をViewsに追加 $data['drills_ch_vocabulary']['description'] = array( 'title' => t('Description'), 'help' => t('Description depend on selected language'), 'field' => array( 'handler' => 'field_handler_description', 'click sortable' => FALSE, ), ); } // サイト言語より説明フィールドを選択し、クエリにセット class field_handler_description extends views_handler_field{ Function query() { $this->ensure_my_table(); $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array(); // サイトの言語検出 global $language; if( $language->language == 'en' ){ // 英語の場合 $field_name = "en_desc" ; } else if( $language->language == 'ja' ){ // 日本語の場合 $field_name = "ja_desc"; } else { $field_name = "ch_desc" ; // 中国語の場合 } // 取得したフィールド名をクエリにセット $this->field_alias = $this->query->add_field($this->table_alias, $field_name, NULL, $params); $this->add_additional_fields(); } }
/** * Implements hook_views_api(). */ function YOUR_MODULE_NAME_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'YOUR_MODULE_NAME') . '/views', ); } /** * Implements hook_views_data_alter(). */ function YOUR_MODULE_NAME_views_data_alter(&$data) { $d = $data; $data['ch_vocabulary']['add_to_my_vocabulary'] = array( 'title' => t('Add to My Vocabulary'), 'help' => t('Add this vocabulary to My Vocabulary'), 'field' => array( 'handler' => 'add_vocabulary_to_my_vocabulary_handler', ), ); } /** * チェックボックス作成用のハンドル */ class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … // ajaxの処理 ), ); return render($form) ; } }
class add_vocabulary_to_my_vocabulary_handler extends views_handler_field{ function query() { // 何もないで、このフィールドをクエリに加えない } function render($value){ $form['add_to_my_vocabulary'] = array( '#type' => 'checkbox', '#title' => 'Add', '#ajax' => array( 'callback' => 'add_to_my_vocabulary', 'effect' => 'fade', … ), ); return render($form) ; } }