Skip to content

Instantly share code, notes, and snippets.

  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save MikeNGarrett/d26644e27430fc04a29e909d8d2c3f26 to your computer and use it in GitHub Desktop.
* This file will demonstrate a method to export fields to code.
* You can use this to easily create fields using the UI, export to code
* and then use in a custom module. Upon installation of the module
* your fields and instances will already be set up.
// Create the fields you want using the Drupal UI.
// On the same site, go to
// Paste the following code into the "PHP code to execute" textbox.
// Set the first 3 variables and then click execute.
// Set the 3 variables below.
$entity_type = 'node';
$field_name = 'body';
$bundle_name = 'article';
$info_config = field_info_field($field_name);
$info_instance = field_info_instance($entity_type, $field_name, $bundle_name);
unset($info_instance['id'], $info_instance['field_id']);
include_once DRUPAL_ROOT . '/includes/';
$output = "\$fields['" . $field_name . "'] = " . drupal_var_export($info_config) . ";\n";
$output .= "\$instances['" . $field_name . "'] = " . drupal_var_export($info_instance) . ";";
drupal_set_message("<textarea rows=30 style=\"width: 100%;\">" . $output . '</textarea>');
// You will get 2 arrays, something like this, but a lot longer.
$fields['field_some_field'] = array(
'properties of the field'
$instances['field_some_field'] = array(
'properties of the instance'
// Add the following to your .install file.
// Replace all instances of mymodule with actual module name.
// Paste the code from the devel ouput into the _mymodule_field_data and
// _mymodule_instance_data, as noted in the respective functions below.
// You can do this for as many fields as you like, just put all the $fields
// arrays in the _mymodule_field_data function and all the $instances in the
// _mymodule_instance_data function.
* Implements hook_install().
* Perform module setup tasks.
function mymodule_install() {
// Create all the fields we are adding to our entity type.
foreach (_mymodule_field_data() as $field) {
// Create all the instances for our fields.
foreach (_mymodule_instance_data() as $instance) {
// Create the array of information about the fields we want to create.
function _mymodule_field_data() {
$fields = array();
// Paste $fields data from devel ouput here.
return $fields;
// Create the array of information about the instances we want to create.
function _mymodule_instance_data() {
$instances = array();
// Paste $instances data from devel output here.
return $instances;
// And if you want to uninstall the fields, instances and all the data contained
// within, when the module is uninstalled, add the following code. I'm not sure
// what the best practice is on this one, since instances of a field created
// by a custom module could be used to created instances of the field on other
// entity types. If you uninstall this module you would lose all information.
// Currently I am only using this for development purposes and will probably not
// include it in production.
* Implements hook_uninstall().
* Remove any information that the module sets.
function mymodule_uninstall() {
foreach (_mymodule_field_data() as $field_name => $properties) {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment