Создал программно блок, можно ли его использовать / выводить в разных регионах с разными настройками одновременно

Главные вкладки

Аватар пользователя macsol macsol 18 декабря 2012 в 15:08

Друпал изучаю недавно. Столкнулся с такой проблемой.
Есть модуль который выводит несколько последних записей с отбором по типу этих записей. Все работает нормально. Захотел одновременно использовать его на сайте в нескольких местах с разными настройками и не знаю как это сделать (кроме как переименовать файлы и хуки этого модуля и начать плодить практически одинаковый код с разными названиями модулей. Существует ли универсальное решение?
Код модуля
<?php
function macsol_news_block_info() {
$blocks = array();
$blocks['macsol_news'] = array(
'info' => t('This is last news block'),
'cache' => DRUPAL_CACHE_PER_ROLE,
);
return $blocks;
}

// hook_block_configure()
function macsol_news_block_configure($delta = '') {
$node_types = node_type_get_types();
$node_type_options = array();
$node_type_options[''] = t('All node types');
foreach ($node_types as $node_type) {
$node_type_options[$node_type->type] = $node_type->name;
}

$form['mn_node_type'] = array(
'#type' => 'select',
'#options' => $node_type_options,
'#multiple' => true,
'#title' => 'Тип материала',
'#default_value' => variable_get('mn_node_type', ''),
'#description' => 'Выберите тип материалов. Удерживайте CTRL для выбора нескольких типов материалов.',
);
return $form;
}
// hook_block_save()
function macsol_news_block_save($delta = '', $edit = array()) {

//variable_set('mn_node_type', implode(",", $edit['mn_node_type']));
variable_set('mn_node_type', $edit['mn_node_type']);
}

function macsol_news_block_view($delta = '') {
if ($delta == 'macsol_news') {
$content = '';
$type = variable_get('mn_node_type', '');
//$content .= $type;

$nodes = db_select('node', 'n')
->fields('n')
->condition('n.type',
// 'metalloprokat'
$type,'in'
) // Тип ноды: , машинное имя
->orderBy('created', 'DESC') // Свежее вперед
->range(0, 3) // Показывать будем не более трех
->execute();

$content .= '

    ';
    foreach ($nodes as $n) {
    // Получаем синоним пути
    $url = drupal_get_path_alias('node/'.$n->nid);
    // Небольшой трюк, избавляющий от 'node/node/nid" при просмотре самого материала
    $content .= '
  • true)).'">'.$n->title.
    '
    Создано: '.format_date($n->created, 'small', "F j, Y в H:i").'
  • ';
    }
    $content .= '

';
unset($url, $n, $nodes);

$block = array(
'subject' => t('Last news'),
'content' => $content,
);
}
return $block;
}