Как программно создать блок с расширенными настройками
Если ваш модуль выводит какую-нибудь информацию в блок, то бывает полезно дать возможность изменить кастомные настройки в общих настройках блока, вместо создания для этого отдельной странице в админке:
/**
* Реализация hook_block()
*/
function mymodule_block($op = 'list', $delta = 0, $edit = array()) {
// Возвращаем описание блока для страницы admin/build/block
if ($op == 'list') {
$blocks[0]['info'] = 'Последние материалы';
return $blocks;
}
// Возвращаем поля, в которых будут храниться расширенные настройки
if ($op == 'configure') {
$form['mymodule_node_count'] = array(
'#type' => 'textfield',
'#title' => 'Число последних материалов',
'#description' => 'Число материалов, которые будут выводится в блоке',
'#size' => 5,
'#default_value' => variable_get('mymodule_node_count', 5),
);
return $form;
}
// Сохраняем значения дополнительных полей
if ($op == 'save') {
variable_set('mymodule_node_count', (int)$edit['mymodule_node_count']);
}
// Выводим блок с применением расширенных настроек
if ($op == 'view') {
$limit = variable_get('mymodule_node_count', 5);
$nodes = db_query_range("SELECT nid, title FROM {node} ORDER BY nid DESC", 0, $limit);
$items = array();
while ($node = db_fetch_object($nodes)) {
$items[] = l($node->title, 'node/' . $node->nid);
}
$block['content'] = theme('item_list', $items);
return $block;
}
}
Написанное актуально для
Drupal 6.x
Комментарии:
Нету комментариев для вывода...