example php drupal-7

php - example - Agregar un nuevo campo a un tipo de contenido existente en Drupal 7



version php drupal 7 (1)

Soy nuevo en Drupal y estoy buscando una forma de agregar un nuevo campo a un tipo de contenido ya instalado en Drupal 7. Tenga en cuenta que algunos contenidos ya están presentes en la base de datos. Además, necesito hacer esto programáticamente y no a través de una GUI.

Google, ya he encontrado los siguientes documentos, que parecen estar relacionados:

https://api.drupal.org/api/drupal/modules!field!field.module/group/field/7

https://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_update_N/7

Aún así, mis ideas son un poco confusas y un ejemplo básico aclararía las cosas.


Este fragmento debería ayudarte a comenzar. Fue encontrado en Drupal Stackexchange. Te sugiero que consultes allí primero en el futuro.

https://drupal.stackexchange.com/questions/8284/programmatically-create-fields-in-drupal-7

$myField_name = "my_new_field_name"; if(!field_info_field($myField_name)) // check if the field already exists. { $field = array( ''field_name'' => $myField_name, ''type'' => ''image'', ); field_create_field($field); $field_instance = array( ''field_name'' => $myField_name, ''entity_type'' => ''node'', ''bundle'' => ''CONTENT_TYPE_NAME'', ''label'' => t(''Select an image''), ''description'' => t(''''), ''widget'' => array( ''type'' => ''image_image'', ''weight'' => 10, ), ''formatter'' => array( ''label'' => t(''label''), ''format'' => ''image'' ), ''settings'' => array( ''file_directory'' => ''photos'', // save inside "public://photos" ''max_filesize'' => ''4M'', ''preview_image_style'' => ''thumbnail'', ''title_field'' => TRUE, ''alt_field'' => FALSE, ) ); field_create_instance($field_instance); drupal_set_message("Field created successfully!"); }

Puede ejecutar este código de innumerables maneras. No estoy al tanto de los requisitos de su proyecto, por lo que es difícil para mí hacer una recomendación. Podría enganchar esto en las funciones de actualización / instalación, o podría construirlo en un enlace de página en un módulo, o podría simplemente arrancar cualquier archivo php nuevo en el directorio raíz con esto:

require_once DRUPAL_ROOT . ''/includes/bootstrap.inc''; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);