Предоставление таблицы для просмотра - PullRequest
3 голосов
/ 23 августа 2010

У меня есть таблица, созданная модулем. Мне нужно включить некоторые из его полей в существующее представление.

Я пытался использовать модуль мастера таблиц , но все, что он делает - это создает отдельное представление для этой таблицы. Я хотел бы иметь возможность выбирать поля из этой таблицы для добавления в существующее представление в качестве дополнительных полей или через отношения или что-то подобное. Есть ли способ сделать то, что я пытаюсь сделать?

Ответы [ 4 ]

4 голосов
/ 24 августа 2010

Ах. Просмотры. Мне тоже понадобилось время. Этот ответ предназначен для Drupal 6 и в резюме показывает, как определять поля, а также как использовать отношения, чтобы поля могли связываться с таблицей узлов.

Внутри modulename.module вам нужна функция, которая работает:

function modulename_views_api() {
  return array(
    'api' => 2,
  );
}

Затем вы хотите создать файл с именем modulename.views.inc и определить функцию, подобную этой:

function modulename_views_data() {
    $data['modulename_table'] = array(
        'table'     => array(
            'group'     => 'ModuleName',
            'title'     => 'Module name title',
        ),
        'join'  =>  array(
            // to join to node, we'll use a field in modulename_table called 'nid'
            'node'      => array(
                'left_field'    =>  'nid',
                'field'         =>  'nid',
            ),
        ),
    );

    // now we define the fields in the table like this
    // check out modules/views/handlers to see more specific handlers

    $data['modulename_table']['fieldname'] = array(
        'title'     => 'fieldname',
        'help'      => 'fieldname description',
        'field'    => array(
            'handler' => 'views_handler_field',
        ),
    );

    $data['modulename_table']['nid'] = array(
        'title'     => 'related node',
        'help'      => 'the field that relates back to {node}',
        // here we implement a relationship to nid
        'relationship'  => array(
            'base'      => 'node',
            'field'     => 'nid',
            'handler'   => 'views_handler_relationship',
            'label'     => 'modulename row node',
        ),
        // this relationship can be turned on in views
    );

    return $data;
}
1 голос
/ 24 августа 2010

Другой вариант - использовать мастер таблиц для представления таблиц в базе данных, а затем использовать модуль миграции для создания представлений.http://drupal.org/project/migrate

1 голос
/ 24 августа 2010

Вы можете использовать hook_views_data для определения вашей таблицы в коде. Пока вы не хотите, чтобы представления выполняли специальные манипуляции, это почти так же просто, как определить таблицу с помощью API схемы.

...