Что сделать для такого простого модуля?

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

Аватар пользователя jobsdata jobsdata 12 ноября 2015 в 16:55

Ребята нужна помощь. Помогите сообразить.

Пример:
Есть код, создает форму - 1 чекбокс, кнопка Сохранить.

<?phpfunction test_menu() {
    $items['admin/config/system/test'] = array(
        'title' => 'Test Module',
        'description' => 'Hello, this my first module',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('test_form'),
        'access callback' => TRUE,
        'type' => MENU_NORMAL_ITEM,
    );
    return $items;
}
function test_form(){
    
    $form['user_name'] = array(
        '#title' => t('Убрать количество комментариев в Тизере...'),
        '#type' => 'checkbox',
        '#description' => t('Please ckecked'),
    );
    $form['submit'] = array(
        '#type' => 'submit',
        '#value' => t('Save'),
    );
    return $form;
}
function test_form_validate($form_id,&$form_state) {
    //
}
function test_form_submit($form,&$form_state){
    //
}
function test_node_view_alter(&$build) {
    //
}?>

Если ты ставишь чекбокс, то при нажатие кнопки должно быть типо:
function test_node_view_alter(&$build) {
unsset($build['links']['comment']['#links']['comment-comments']);
}

То есть ссылка в тизере "Кол-во комментариев" исчезает. Снимаешь галку - появляется.

Вот как это должно произойти? Где проверять что checkbox = TRUE? Если TRUE то как то нужно вызвать хук test_node_view_alter(&$build), верно? И что вызывать?

Спасибо. Жду любой помощи.

P.S. Пожалуйста не пишите что это можно все сделать через template или node.tpl.php Я знаю. Я просто не понимаю как форма должна взаимодействовать с "то что должно произойти". Спасибо за понимание.

Комментарии

Аватар пользователя jobsdata jobsdata 12 ноября 2015 в 20:25

Глобально. Просто я не доганяю, что должно произойти после того как я отметил чекбокс и нажал сохранить. В голове только мысль что

<?php
function test_node_view_alter(&$build) {
    
//
}?>

эта функция ловит значение чекбокса и в зависимости TRUE или FALSE делает unset.

Аватар пользователя bumble bumble 12 ноября 2015 в 20:35

Записывайте значение и сохраняйте его. Для глобального использования можно записать в таблицу variables:

<?php
$form
['user_name'] = array(
        
'#title' => t('Убрать количество комментариев в Тизере...'),
        
'#type' => 'checkbox',
        
'#description' => t('Please ckecked'),
        
'#default_value' => variable_get('variable_name'0),
    );
?>

И в алерте проверяйте её:

<?php
function test_node_view_alter(&$build) {
  
$var variable_get('variable_name');
  if(
$var == 1){
    unset(
$build['links']['comment']['#links']['comment-comments']);
  }
}
?>
Аватар пользователя jobsdata jobsdata 12 ноября 2015 в 21:28

Вот теперь стало боле менее ясно))) Спасибо.

Вот только не чего не происходит Biggrin Должна как то галочка остаться у чекбокса, чтоб типо он равен 1. =\
Сижу с книгой на столе, а в ней толком не написано.

Аватар пользователя bumble bumble 12 ноября 2015 в 21:56

Сохраняйте переменную (значение чекбокса) с помощью variable_set в сабмите, или просто используйте стандартную форму сохранения вместо кнопки:
return system_settings_form($form);
вместо

<?php
$form
['submit'] = array(
  
'#type' => 'submit',
  
'#value' => t('Save'),
);
return 
$form;
?>