Hola , gente, como un niño bueno estoy siguiedo paso a paso los ejercicios de un libro de Drupal 6 (forcontu) que explica como empezar a desarrollar módulos, pero me he quedado atascado en un punto.
Resulta que he creado un hook node_expiration_date_menu que a su vez llama a esta función node_expiration_date_admin_settings (en archivo externo) para listar todos los tipos de contenidos y poder marcar los que deseo que tengan fecha de caducidad.
Pego aquí el código mejor:
/**
* Implementation of hook_menu()
*/
function node_expiration_date_menu() {
$items['admin/settings/node_expiration_date'] = array(
'title' => 'Node Expiration Dates Settings',
'description' => 'Settings for module Node expiration date',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_expiration_date_admin_settings'),
'access arguments' => array('administer site configuration'),
'type' => MENU_NORMAL_ITEM,
'file' => 'node_expiration_date.admin.inc',
);
return $items;
}
que llama a esta otra en archivo externo node_expiration_date.admin.inc
/**
* Constructor del formulario para configurar el módulo
*/
function node_expiration_date_admin_settings() {
/**
* Obtiene un vector de tipo de cotenido con la siguiente estructura
* array('page' = 'Page', 'story' => 'Story')
*/
$content_types_list=node_get_types('names');
$form['node_expiration_date_node_types'] = array(
'#type' => 'checkboxes',
'#title' => t('Add an expiration date to these content types'),
'#options' => $content_types_list,
'#defult_value' => variable_get('node_expiration_date_node_types',array('page')),
'#description' => t('The selected content types will have an expiration date.'),
);
return system_settings_form($form);
}
La cuestión es que se listan pefectamente los distintos tipos de contenido pero page no sale marcado por defecto; además de eso he revisado la tabla "variable" y allí hay una nueva tabla llamada: node_expiration_date_node_types que entiendo que los datos que guarda en el campo value es lo que se marca desde admin/settings/node_expiration_date ; pero por muchos tipos de contenidos que marque , siempre vuelven a aparecer desmarcados; y el conetido que se guarda en esta tabla (node_expiration_date_node_types) es compliado de entender:
a:4:{s:5:"story";s:5:"story";s:4:"page";s:4:"page";s:4:"blog";i:0;s:4:"book";i:0;}
el a: 4 entieno que se refiere a un array con 4 elementos (aunque hay 7 pero bueno)
es:5:"story" supongo que será "string" con 5 caracteres tipo "story" , y lo que no consigo interpretar de ningún modo es "i:0" ¿que es esto?.
Por más que busco no encuentro donde se explica esto.
Mil gracias.

Comments
Error en la definición del campo node_expiration_date_node_types
@dontysk, fijate en esto:
$form['node_expiration_date_node_types'] = array( '#type' => 'checkboxes', '#title' => t('Add an expiration date to these content types'), '#options' => $content_types_list, '#defult_value' => variable_get('node_expiration_date_node_types',array('page')), // <<== AQUI '#description' => t('The selected content types will have an expiration date.'), );Donde dice: "#defult_value" debería decir: "#default_value".
La explicación es un poco larga, pero ahí vamos:
Una vez que tu código esté corregido podrás comprobar lo que te acabo de explicar.
--
Fernando @DevElCuy
guau explicación genial ¡¡
Gracias compañero ,no habia caído en la "a" de "value" , las demás explicaciones me aclaran muchas cosas.
Gracias y un saludo