Друпал изучаю недавно. Столкнулся с такой проблемой.
Есть модуль который выводит несколько последних записей с отбором по типу этих записей. Все работает нормально. Захотел одновременно использовать его на сайте в нескольких местах с разными настройками и не знаю как это сделать (кроме как переименовать файлы и хуки этого модуля и начать плодить практически одинаковый код с разными названиями модулей. Существует ли универсальное решение?
Код модуля
<?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 .= '
- ';
- true)).'">'.$n->title.
'Создано: '.format_date($n->created, 'small', "F j, Y в H:i").'
foreach ($nodes as $n) {
// Получаем синоним пути
$url = drupal_get_path_alias('node/'.$n->nid);
// Небольшой трюк, избавляющий от 'node/node/nid" при просмотре самого материала
$content .= '
';
}
$content .= '
';
unset($url, $n, $nodes);
$block = array(
'subject' => t('Last news'),
'content' => $content,
);
}
return $block;
}