Урезанный, но рабочий пример из модуля FileField Paths, который добавляет в таблицу files
новое поле origname
:
/**
* Implements hook_schema_alter().
*/
function filefield_paths_schema_alter(&$schema) {
$schema['files']['fields']['origname'] = array(
'description' => 'Original name of the file.',
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
);
}
/**
* Implements hook_install().
*/
function filefield_paths_install() {
db_add_field($ret = array(), 'files', 'origname', array(
'description' => 'Original name of the file.',
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
));
}
/**
* Implements hook_uninstall().
*/
function filefield_paths_uninstall() {
db_drop_field($ret = array(), 'files', 'origname');
}
Код находится в файле filefield_paths.install
.
А вот более универсальный вариант для добавления нескольких полей:
/**
* Implements hook_schema_alter()
*/
function mymodule_schema_alter(&$schema) {
if (isset($schema['table_name'])) {
$schema['table_name']['fields']['field_1'] = array(
'type' => 'varchar',
'length' => 100,
'not null' => TRUE,
'default' => '',
);
$schema['table_name']['fields']['field_2'] = array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'size' => 'tiny',
'default' => 0,
);
}
}
/**
* Implements hook_install()
*/
function mymodule_install() {
$schema = array('table_name' => array());
mymodule_schema_alter($schema);
foreach ($schema['table_name']['fields'] as $field => $spec) {
db_add_field($ret = array(), 'table_name', $field, $spec);
}
}
/**
* Implements hook_uninstall()
*/
function mymodule_uninstall() {
$schema = array('table_name' => array());
mymodule_schema_alter($schema);
foreach ($schema['table_name']['fields'] as $field => $spec) {
db_drop_field($ret = array(), 'table_name', $field);
}
}
Написанное актуально для
Drupal 6.x
Похожие записи
- Как работает опция "Aggregation type" в настройках полей Views при включённой агрегации
- Views сортировка по выражению/условию/формуле
- Views фильтр "товар имеет опубликованную вариацию"
- Модуль EAV Field — хранение большого числа характеристик сущности в одном поле
- Добавить сторонней контент сущности своё базовое поле (base field)
Комментарии
для Drupal 7 очень было бы здорово, черкнуть, спасибо
У меня почему-то не работает. Хочу добавить поле service в таблицу comments. Создал свой модуль, как написано в одном из ваших уроков. Код такой:
Не подскажете, в чем дело может быть?
Уже понял. Во-первых, нужно было всё это писать в файле mymodule.install, во-вторых, в конце не нужно ?>. Может, поможет кому)
Добавить комментарий