Чтобы расширить блок настройками, нужно воспользоваться хуком hook_block_configure()
, но это работает только для блоков, определённых в этом же модуле. Если же встаёт задача расширить настройками блок из стороннего модуля, то на помощь приходит hook_form_FORM_ID_alter()
.
Ниже, пример кода для добавления текстового поля к настройкам блока, созданному из Views:
/**
* Implements hook_form_FORM_ID_alter(): block_admin_configure.
*/
function mymodule_form_block_admin_configure_alter(&$form, &$form_state) {
if ($form['module']['#value'] == 'views' && $form['delta']['#value'] == 'viewname-block_1') {
$form['settings']['nids'] = array(
'#type' => 'textfield',
'#title' => 'Идетификаторы материалов',
'#description' => 'Nid-ы материалов через запятую',
'#default_value' => variable_get('mymodule_nids'),
);
$form['#submit'][] = 'mymodule_form_block_admin_configure_submit';
}
}
/**
* Custom submit callback for block_admin_configure form.
*/
function mymodule_form_block_admin_configure_submit($form, &$form_state) {
variable_set('mymodule_nids', $form_state['values']['nids']);
}
Написанное актуально для
Drupal 7
Комментарии
А далее ты предлагаешь создание кастомного аргумента и и подсовывание туда variable_get()?
ага
Почему нельзя ниды указывать сразу во вьюсе?
чтобы редактор не лез куда не следует
Тоже самое делал с атвокомплитом, но это было специально обозначено заказчиком, чтобы ноды задавались в настройках блока, а не во вьюсе. Хотя интерфейс блоков тоже как бы не для редактора. Я бы сделал через ноды. К примеру можно добавить поле (чекбокс) в ноду "Размещать в блоке СПЕЦ. ТОВАРЫ" и все. Во вьюсе добавить это поле в фильтрацию.
Это удобней как минимум по двум причинам:
сохранить порядок нод можно миллионом способов, но всё это к сабжу не имеет отношение)
И еще нужно не забывать при удалении редактором ноды, удалять её нид из $mymodule_nids или как то по другому это учтитывать.
А изменить содержимое блока в зависимости от сохраненных настроек как можно?
Могу предположить
Или это не правильное решение?
hook_block_view_alter
Очень полезный ресурс! Админ и Всея сего - Респект тебе!
У мня тут целый дискусс на друпал.ру, все из-за твоих материалов, бабахаю расширение блоков. Используя АПИ друпал.орг и твой ресурс, знаю друпал меньше недели)))... получается все без костылей и на тест быстро, и САМОЕ Главное получается то, что задумано!
Не помешал бы мануальчик про аякс а то я разных формы конфликтуют, нашел решение - хук: calls to file_field_widget_form(). Но его пока что не разбирал, да и подсказать не кому, но к моменту написания мануала надеюсь победа будет за мной!)
И вопрос один назрел:
Как к ХУКу _form_block_admin_configure_alter к полю 'file' прикрутить валидатор, всю голову изломал!(
Совсем забыл поделиться:
_form_block_admin_configure_alter - добавляет настройки при редактировании блока
_form_block_add_block_form_alter - добавляет настройки при создании блока
Может кому сгодиться!)
Добавить комментарий