Работа с таблицами в views 3

Главные вкладки

Аватар пользователя jpgh jpgh 22 июня 2012 в 17:24

Здравствуйте.
Нужно осуществить выборку данных из собственных таблиц(находятся в той же базе что и остальные таблицы друпала). Как указать друпалу на эти таблицы, чтобы Views ее увидел? Или может есть какой-нибудь модуль, который добавляет в CCK тип данных, в который можно записать sql-запрос, и он бы возвращал результат в виде таблицы?
Прошу прощения, если вопрос выглядит бредово, в друпале я новичок...

Комментарии

Аватар пользователя ser_house ser_house 22 июня 2012 в 20:32

Для простого случая (не требуются свои особые группировки, вложенные запросы, фильтры, сортировки):

файл my_module.info
files[] = my_module_views_handler.inc

файл my_module.module

function my_module_views_api() {
  return array(
    'api' => 3,
    //Если захочется вынести в отдельную папку
    //'path' => drupal_get_path('module', 'my_module') . '/views',
  );
}

вновь созданный файл my_module_views_handler.inc

function my_module_views_data() {
  $data = array();
  $data['название моей таблицы'] = array(
    'table' => array(
      'group' => 'группа для views',
    ),
    'поле 1' => array(
      'title' => 'название моего поля для юзера',
      'help' => 'вспомогательное описание для юзера',
      'field' => array(
        'handler' => 'views_handler_field', //в более сложных случаях - свой
      ),
      'filter' => array(
        //можно выбрать готовый, куча таковых находится в папке handlers модуля views
        //в более сложных случаях - свой
        'handler' => 'views_handler_filter',
      ),
      'sort' => array(
        //можно выбрать готовый, куча таковых находится в папке handlers модуля views
        //в более сложных случаях - свой
        'handler' => 'views_handler_sort',
      ),
    ),
    'поле 2' => array(
      //так же, с поправкой на особенности поля
    ),
    'поле 3' => array(
      //так же, с поправкой на особенности поля
    ),
  );
 
  return $data;
}

Кэш, создаем вьюху для выборки своих данных.

Более сложные случаи описывать больше и это уже сделано в интернетах.

Аватар пользователя jpgh jpgh 23 июня 2012 в 16:51

Это, насколько я понял, создаем модуль? Но при его подключении ничего не происходит. Можете описать по подробнее, что дальше делать?

Аватар пользователя ser_house ser_house 23 июня 2012 в 18:38

А, блин, извиняюсь, не так.

Файл my_module.info так же.
Файл my_module.module так же.

Создаём новый файл в папке своего модуля my_module.views.inc и в нём описываем my_module_views_data так же. Файл my_module_views_handler.inc потребуется только если стандартных обработчиков будет недостаточно и потребуется создавать свой.

Ну и кэш, создаём выборку и т.д.

Получим возможность создавать представлении по своему модулю. Если потребуется возможность задавать зависимости, допустим, по полю nid, то для этого поля определям relationship:

    'nid' => array(
      'title' => 'NID ноды',
      'help' => 'вспомогательное описание для юзера',
      'relationship' => array(
        'label' => 'название',
        'base' => 'node',
        'base field' => 'nid',
        'handler' => 'views_handler_relationship',
      ),
      'field' => array(
        'click_sortable' => TRUE,
        'handler' => 'views_handler_field',
      ),
      'filter' => array(
        'handler' => 'views_handler_filter_numeric',
      ),
      'sort' => array(
        'handler' => 'views_handler_sort',
      ),
    ),
Аватар пользователя jpgh jpgh 23 июня 2012 в 19:28

ser_house, и с этой редакцией тоже никаких изменений.

"ser_house" wrote:
Вы же со своими таблица работаете своим модулем, не так ли?

Я пока еще только начал осваивать друпал, и мне бы разобраться со стандартными модулями. Сейчас стоит задача вывести содержимое таблиц на страницу и осуществлять фильтрацию. Неужели нет модуля к View, который бы позволял работать с сторонними таблицами как с стандартными? Вроде как table wizard подходит, но он только для 6-й версии, есть какой-нибудь его аналог для drupal 7?

Аватар пользователя jpgh jpgh 23 июня 2012 в 22:22

"ser_house" wrote:
Но таблицы-то кто-то создаёт? Кто-то их заполняет?

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