set('page.front', 'node')->save(); // Insert default pre-defined node types into the database. For a complete // list of available node type attributes, refer to the node type API // documentation at: http://api.drupal.org/api/HEAD/function/hook_node_info. $types = array( array( 'type' => 'page', 'name' => st('Basic page'), 'base' => 'node_content', 'description' => st("Use basic pages for your static content, such as an 'About us' page."), 'custom' => 1, 'modified' => 1, 'locked' => 0, ), array( 'type' => 'article', 'name' => st('Article'), 'base' => 'node_content', 'description' => st('Use articles for time-sensitive content like news, press releases or blog posts.'), 'custom' => 1, 'modified' => 1, 'locked' => 0, ), ); foreach ($types as $type) { $type = node_type_set_defaults($type); node_type_save($type); node_add_body_field($type); } // Insert default pre-defined RDF mapping into the database. $rdf_mappings = array( array( 'type' => 'node', 'bundle' => 'page', 'mapping' => array( 'rdftype' => array('foaf:Document'), ), ), array( 'type' => 'node', 'bundle' => 'article', 'mapping' => array( 'field_image' => array( 'predicates' => array('og:image', 'rdfs:seeAlso'), 'type' => 'rel', ), 'field_tags' => array( 'predicates' => array('dc:subject'), 'type' => 'rel', ), ), ), ); foreach ($rdf_mappings as $rdf_mapping) { rdf_mapping_save($rdf_mapping); } // Default "Basic page" to not be promoted and have comments disabled. variable_set('node_options_page', array('status')); variable_set('comment_page', COMMENT_NODE_HIDDEN); // Don't display date and author information for "Basic page" nodes by default. variable_set('node_submitted_page', FALSE); // Allow visitor account creation with administrative approval. $user_settings = config('user.settings'); $user_settings->set('register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)->save(); // Create a default vocabulary named "Tags", enabled for the 'article' content type. $description = st('Use tags to group articles on similar topics into categories.'); $help = st('Enter a comma-separated list of words to describe your content.'); $vocabulary = entity_create('taxonomy_vocabulary', array( 'name' => st('Tags'), 'description' => $description, 'vid' => 'tags', 'langcode' => language_default()->langcode, 'help' => $help, )); taxonomy_vocabulary_save($vocabulary); $field = array( 'field_name' => 'field_' . $vocabulary->id(), 'type' => 'taxonomy_term_reference', // Set cardinality to unlimited for tagging. 'cardinality' => FIELD_CARDINALITY_UNLIMITED, 'settings' => array( 'allowed_values' => array( array( 'vocabulary' => $vocabulary->id(), 'parent' => 0, ), ), ), ); field_create_field($field); $instance = array( 'field_name' => 'field_' . $vocabulary->id(), 'entity_type' => 'node', 'label' => 'Tags', 'bundle' => 'article', 'description' => $vocabulary->help, 'widget' => array( 'type' => 'taxonomy_autocomplete', 'weight' => -4, ), ); field_create_instance($instance); // Assign display settings for the 'default' and 'teaser' view modes. entity_get_display('node', 'article', 'default') ->setComponent($instance['field_name'], array( 'type' => 'taxonomy_term_reference_link', 'weight' => 10, )) ->save(); entity_get_display('node', 'article', 'teaser') ->setComponent($instance['field_name'], array( 'type' => 'taxonomy_term_reference_link', 'weight' => 10, )) ->save(); // Create an image field named "Image", enabled for the 'article' content type. // Many of the following values will be defaulted, they're included here as an illustrative examples. // See http://api.drupal.org/api/function/field_create_field/8 $field = array( 'field_name' => 'field_image', 'type' => 'image', 'cardinality' => 1, 'locked' => FALSE, 'indexes' => array('fid' => array('fid')), 'settings' => array( 'uri_scheme' => 'public', 'default_image' => FALSE, ), 'storage' => array( 'type' => 'field_sql_storage', 'settings' => array(), ), ); field_create_field($field); // Many of the following values will be defaulted, they're included here as an illustrative examples. // See http://api.drupal.org/api/function/field_create_instance/8 $instance = array( 'field_name' => 'field_image', 'entity_type' => 'node', 'label' => 'Image', 'bundle' => 'article', 'description' => st('Upload an image to go with this article.'), 'required' => FALSE, 'settings' => array( 'file_directory' => 'field/image', 'file_extensions' => 'png gif jpg jpeg', 'max_filesize' => '', 'max_resolution' => '', 'min_resolution' => '', 'alt_field' => TRUE, 'title_field' => '', ), 'widget' => array( 'type' => 'image_image', 'settings' => array( 'progress_indicator' => 'throbber', 'preview_image_style' => 'thumbnail', ), 'weight' => -1, ), ); field_create_instance($instance); // Assign display settings for the 'default' and 'teaser' view modes. entity_get_display('node', 'article', 'default') ->setComponent($instance['field_name'], array( 'label' => 'hidden', 'type' => 'image', 'settings' => array('image_style' => 'large', 'image_link' => ''), 'weight' => -1, )) ->save(); entity_get_display('node', 'article', 'teaser') ->setComponent($instance['field_name'], array( 'label' => 'hidden', 'type' => 'image', 'settings' => array('image_style' => 'medium', 'image_link' => 'content'), 'weight' => -1, )) ->save(); // Create user picture field. module_load_install('user'); user_install_picture_field(); // Enable default permissions for system roles. user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array('access content', 'access comments')); user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array('access content', 'access comments', 'post comments', 'skip comment approval')); // Enable all permissions for the administrator role. user_role_grant_permissions('administrator', array_keys(module_invoke_all('permission'))); // Set this as the administrator role. $user_settings->set('admin_role', 'administrator')->save(); // Assign user 1 the "administrator" role. db_insert('users_roles') ->fields(array('uid' => 1, 'rid' => 'administrator')) ->execute(); // Create a Home link in the main menu. $item = array( 'link_title' => st('Home'), 'link_path' => '', 'menu_name' => 'main', ); menu_link_save($item); // Enable the Contact link in the footer menu. menu_link_maintain('system', 'enable', 'contact'); user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array('access site-wide contact form')); user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array('access site-wide contact form')); // Populate the default shortcut set. $shortcut_set = shortcut_set_load(SHORTCUT_DEFAULT_SET_NAME); $shortcut_set->links[] = array( 'link_path' => 'node/add', 'link_title' => st('Add content'), 'weight' => -20, ); $shortcut_set->links[] = array( 'link_path' => 'admin/content', 'link_title' => st('Find content'), 'weight' => -19, ); shortcut_set_save($shortcut_set); // Enable the admin theme. theme_enable(array('seven')); config('system.theme')->set('admin', 'seven')->save(); variable_set('node_admin_theme', '1'); }