You are hereБлоги / Ёж's blog / Drupal 6.x. Создание модуля – файл .install

Drupal 6.x. Создание модуля – файл .install


Ёж 11 December 2008

Drupal 6.x. Создание модуля – файл .install

Файл с расширением .install (mymodule.install, где mymodule – имя Вашего модуля) запускается в первый раз после того, как Вы включаете соответствующий модуль в админке, этот файл запускает необходимые процедуры по установке, которые могут быть необходимы Вашему модулю. В большинстве случаев для установки модуля обычно нужно создать таблицы и поля в БД, с которыми будет впоследствии оперировать данный модуль. Для файла с расширением .install не нужен какой-либо специальный синтаксис – это такой же PHP файл, как и, например, файл с расширением .module.

Файл .install нужен также для того, чтобы выполнить обновление модуля, когда подключается его новая версия.

Необходимые инструкции по установке вложены в функцию _install() (эта функция объявляется в файле .install). Функция имеет имя mymodule_install(), где mymodule - имя Вашего модуля. Этот хук вызывается Друпалом при первом включении модуля. Обычно эта функция (хук) применяется для того, чтобы создать таблицу в БД для нового модуля.

В Друпале 6.x для создания таблиц и полей в БД применяется Schema API. Schema API позволяет модулям объявлять свои таблицы БД в структурированном массиве (подобно Form API) и обеспечивает функции API для создания, удаления и изменения таблиц, столбцов, строк, ключей и индексов БД.

Я хочу разобрать пример из документации по Schema API с сайта Drupal.org.

Например, как создаётся таблица БД для самой обычной ноды (модуль Node ядра Друпала, обязательный модуль, с помощью которого добавляются и загружаются ноды). Это отрывок из файла node.install, из функции node_schema().

<?php
$schema
['node'] = array(
   
'description' => t('The base table for nodes.'), 
   
'fields' => array(    // Таблица содержит четыре поля (колонки) - <em>'nid', 'vid', 'type' и 'title'
     
'nid' => array(  <strong>// Первое поле
      
'description' => t('The primary identifier for a node.'), // Описание поля
      
'type' => 'serial', // Тип первого поля - 'serial'
      
'unsigned' => TRUE,
      
'not null' => TRUE), // Конец первого поля</strong>
     
'vid' => array(  // Второе поле
      
'description' => t('The current {node_revisions}.vid version identifier.'),// Описание поля
      
'type' => 'int', // Тип второго поля - 'int'
      
'unsigned' => TRUE,
      
'not null' => TRUE,
      
'default' => 0), // Конец второго поля
     
'type' => array(   // Третье поле
      
'description' => t('The {node_type} of this node.'), // Описание поля
      
'type' => 'varchar', // Тип третьего поля - 'varchar'
      
'length' => 32,
      
'not null' => TRUE,
      
'default' => ''), // Конец третьего поля
     
'title' => array(   // Четвёртое поле
       
'description' => t('The title of this node, always treated a non-markup plain text.'), // Описание поля
       
'type' => 'varchar', // Тип четвёртого поля - 'varchar'
       
'length' => 255,
       
'not null' => TRUE,
       
'default' => ''), // Конец четвёртого поля
     
), // Конец перечисления полей
   
'indexes' => array(  // Два индекса таблицы 'node_changed' и 'node_created'
     
'node_changed'=> array('changed'), // Поле 'changed' - для изменённых нод
     
'node_created'=> array('created'), // Поле 'created' - для созданных нод
     
),
   
'unique keys'=> array( // Вторичный ключ таблицы
    
'vid'=> array('vid') // Ключ 'vid' - поле 'vid'
     
),
   
'primary key'=> array('nid'), // Первичный ключ таблицы - поле 'nid'
   
);
?>

Как видите, таблица содержит четыре поля - для каждого поля есть тип ('type'), описание ('description'), а также другие настраиваемые параметры, пока не буду на них углубляться - сейчас важнее понять общую структуру.

Продолжение в следующих постах. Оригинал статьи.

Спасибо за внимание.

Ёж

]]>]]>

RSS-материал