Відповіді:
Для Drupal 7:
Використовуйте гачки_блока_інфо та гачки_віто_вигляньте у власному модулі . ho_block_info визначає блок. Він з’явиться в адміністраторі > структура > блоки . * ho_block_view * відображає вміст. Дивіться приклади нижче з API Drupal.
Приклад mock_block_info, де визначено два блоки (з назвою Syndicate and Recent content):
<?php
function hook_block_info() {
// This example comes from node.module.
$blocks['syndicate'] = array(
'info' => t('Syndicate'),
'cache' => DRUPAL_NO_CACHE,
);
$blocks['recent'] = array(
'info' => t('Recent content'),
// DRUPAL_CACHE_PER_ROLE will be assumed.
);
return $blocks;
}
?>
Приклад прив'язки_блока_перегляду:
<?php
function hook_block_view($delta = '') {
// This example is adapted from node.module.
$block = array();
switch ($delta) {
case 'syndicate':
$block['subject'] = t('Syndicate');
$block['content'] = array(
'#theme' => 'feed_icon',
'#url' => 'rss.xml',
'#title' => t('Syndicate'),
);
break;
case 'recent':
if (user_access('access content')) {
$block['subject'] = t('Recent content');
if ($nodes = node_get_recent(variable_get('node_recent_block_count', 10))) {
$block['content'] = array(
'#theme' => 'node_recent_block',
'#nodes' => $nodes,
);
}
else {
$block['content'] = t('No content available.');
}
}
break;
}
return $block;
}
?>
Зверніться до сторінки API блоків на Drupal.org для повного списку гачків. Drupal 6 трохи відрізняється. Немає гачка_всмоктування гачка; замість цього використовуйте гачку_блок для оголошення блоків.
Для Drupal 6 коротка відповідь полягає в тому, що ви створюєте спеціальний модуль, який реалізує гачок_блок .
Для Drupal 7 ви використовуєте API Block .
Якщо це ваш перший прогрес у розробці модулів, я настійно рекомендую Pro Drupal Development або Pro Drupal 7 Development . Насправді все, що потрібно знати, є там.
Ви можете шукати те, що я шукав, і знайшов це тут:
/modules/block/block.module:
block_custom_block_save ($ edit, $ delta).
Але коли ви подивитесь на цю функцію, ви побачите, що можете просто зробити db_update самостійно.
db_update('block_custom')
->fields(array(
'body' => $edit['body']['value'],
'info' => $edit['info'],
'format' => $edit['body']['format'],
))
->condition('bid', $delta)
->execute();
У Drupal 7 подивіться block_add_block_form_submit
в modules/block/block.admin.inc
.
Це регулярна форма створення блоку; Схоже, просто вставляти записи безпосередньо, а не викликати іншу функцію. Зауважте, що кожен запис у блок-таблиці пов'язаний з однією темою (ви можете просто використовувати активну, але безпечніше вставляти записи для всіх тем).
Таблиця block_custom вміщує вміст.
Для експорту блоків можна використовувати модуль " Особливості" .
Крім того, просто створюйте записи безпосередньо в таблиці блоків.
INSERT INTO blocks (
module, delta, theme, status, weight, region, custom,
throttle, visibility, pages, title, cache)
VALUES (
'views','blog-block_1','mytheme',1,10,'sidebar_first',0,0,1,'blog\r\nblog/*','',-1)