Здравствуйте.
Нужно осуществить выборку данных из собственных таблиц(находятся в той же базе что и остальные таблицы друпала). Как указать друпалу на эти таблицы, чтобы Views ее увидел? Или может есть какой-нибудь модуль, который добавляет в CCK тип данных, в который можно записать sql-запрос, и он бы возвращал результат в виде таблицы?
Прошу прощения, если вопрос выглядит бредово, в друпале я новичок...
Комментарии
Для простого случая (не требуются свои особые группировки, вложенные запросы, фильтры, сортировки):
файл my_module.info
files[] = my_module_views_handler.inc
файл my_module.module
return array(
'api' => 3,
//Если захочется вынести в отдельную папку
//'path' => drupal_get_path('module', 'my_module') . '/views',
);
}
вновь созданный файл my_module_views_handler.inc
$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;
}
Кэш, создаем вьюху для выборки своих данных.
Более сложные случаи описывать больше и это уже сделано в интернетах.
Это, насколько я понял, создаем модуль? Но при его подключении ничего не происходит. Можете описать по подробнее, что дальше делать?
А, блин, извиняюсь, не так.
Файл my_module.info так же.
Файл my_module.module так же.
Создаём новый файл в папке своего модуля my_module.views.inc и в нём описываем my_module_views_data так же. Файл my_module_views_handler.inc потребуется только если стандартных обработчиков будет недостаточно и потребуется создавать свой.
Ну и кэш, создаём выборку и т.д.
Получим возможность создавать представлении по своему модулю. Если потребуется возможность задавать зависимости, допустим, по полю nid, то для этого поля определям relationship:
'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',
),
),
Вы же со своими таблица работаете своим модулем, не так ли?
ser_house, и с этой редакцией тоже никаких изменений.
Я пока еще только начал осваивать друпал, и мне бы разобраться со стандартными модулями. Сейчас стоит задача вывести содержимое таблиц на страницу и осуществлять фильтрацию. Неужели нет модуля к View, который бы позволял работать с сторонними таблицами как с стандартными? Вроде как table wizard подходит, но он только для 6-й версии, есть какой-нибудь его аналог для drupal 7?
Про модуль для этого дела ничего сказать не могу. Но таблицы-то кто-то создаёт? Кто-то их заполняет?
Это чисто теоретическое задание, таблицы уже заполнены.
Ser_house, благодарю за помощь, буду дальше разбираться, может получится подружить views с моими таблицами способом, как вы указали выше.
Если ещё актуально, попробуйте вот этот модуль: http://drupal.org/project/views_schema
Аналог для Table wizard от 6-ки.