123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- Current state of Features for Drupal 7
- --------------------------------------
- Work on Features for D7 is currently aimed at getting to a point where Features
- can be used on a new install of Drupal 7 with features that were created on D7.
- Once this has been achieved, we will begin working on supporting D6 features as
- well as possibly supporting upgrades & migrations between legacy components and
- new equivalents (e.g. CCK to fields, imagecache to core image styles).
- ### Working components
- - ctools
- - dependencies
- - field
- - filter
- - image
- - menu_custom
- - menu_links
- - node
- - taxonomy
- - user_permission
- - user_role
- - views
- ### Has changes to export format between D6 and D7
- (@TODO legacy export compatibility)
- - filter
- - taxonomy
- ### Requires upgrade/migration path
- - imagecache > image
- - content > field
- Note on the "Generate Feature" capability
- -----------------------------------------
- Features 7.x-2.x includes the ability to "Generate a feature" which saves it
- to the server disk. This can be a time-saving task in development. It requires
- the webserver to be able to write to the very code running the site and is
- not recommended for any environment other than a firewalled-off, local
- development environment (e.g. a person working alone on their laptop).
- Features 1.x for Drupal 7.x
- ---------------------------
- The features module enables the capture and management of features in Drupal. A
- feature is a collection of Drupal entities which taken together satisfy a
- certain use-case.
- Features provides a UI and API for taking different site building components
- from modules with exportables and bundling them together in a single feature
- module. A feature module is like any other Drupal module except that it declares
- its components (e.g. views, contexts, CCK fields, etc.) in its `.info` file so
- that it can be checked, updated, or reverted programmatically.
- Examples of features might be:
- - A blog
- - A pressroom
- - An image gallery
- - An e-commerce t-shirt store
- Installation
- ------------
- Features can be installed like any other Drupal module -- place it in the
- modules directory for your site and enable it on the `admin/build/modules` page.
- To take full advantage of some of the workflow benefits provided by Features,
- you should install [Drush][1].
- If you plan on creating or working with very large features (greater than 1000
- items), you may need to increase PHP's max_input_vars configuration directive.
- For example, adding the following line to your .htaccess file will increase the
- max_input_vars directive to 3000:
- php_value max_input_vars 3000
- If you are using Suhosin, increasing suhosin.get.max_vars,
- suhosin.post.max_vars, and suhosin.request.max_vars may also be necessary.
- Basic usage
- -----------
- Features is geared toward usage by developers and site builders. It
- is not intended to be used by the general audience of your Drupal site.
- Features provides tools for accomplishing two important tasks:
- ### Task 1: Export features
- You can build features in Drupal by using site building tools that are supported
- (see a short list under the *Compatibility* section).
- Once you've built and configured functionality on a site, you can export it into
- a feature module by using the feature create page at
- `admin/structure/features/create`.
- ### Task 2: Manage features
- The features module also provides a way to manage features through a more
- targeted interface than `admin/modules`. The interface at
- `admin/structure/features` shows you only feature modules, and will also inform you
- if any of their components have been overridden. If this is the case, you can
- also re-create features to bring the module code up to date with any changes
- that have occurred in the database.
- Including custom code and adding to your feature
- ------------------------------------------------
- Once you've exported your feature you will see that you have several files:
- myfeature.info
- myfeature.module
- myfeature.[*].inc
- You can add custom code (e.g. custom hook implementations, other functionality,
- etc.) to your feature in `myfeature.module` as you would with any other module.
- Do not change or add to any of the features `.inc` files unless you know what
- you are doing. These files are written to by features on updates so any custom
- changes may be overwritten.
- Using Features to manage development
- ------------------------------------
- Because Features provides a centralized way to manage exportable components and
- write them to code it can be used during development in conjunction with a
- version control like SVN or git as a way to manage changes between development,
- staging and production sites. An example workflow for a developer using Features
- is to:
- 1. Make configuration changes to a feature on her local development site.
- 2. Update her local feature codebase using `drush features-update`.
- 3. Commit those changes using `svn commit`.
- 4. Roll out her changes to the development site codebase by running `svn update`
- on the server. Other collaborating developers can also get her changes with
- `svn update`.
- 5. Reverting any configuration on the staging site to match the updated codebase
- by running `drush features-revert`.
- 6. Rinse, repeat.
- Features also provides integration with the [Diff][3] module if enabled to show
- differences between configuration in the database and that in code. For site
- builders interested in using Features for development, enabling the diff module
- and reading `API.txt` for more details on the inner workings of Features is
- highly recommended.
- Drush usage
- -----------
- (requires Drush v4.5 or higher)
- Features provides several useful drush commands:
- - `drush features`
- List all the available features on your site and their status.
- - `drush features-export [feature name] [component list]`
- Write a new feature in code containing the components listed.
- If called with no arguments, display a list of available components.
- If called with one argument, take the argument as a component name and
- attempt to create a feature with the same name.
- The option '--destination=foo' may be used to specify the path (from Drupal
- root) where the feature should be created. The default destination is
- 'sites/all/modules', though this can be overridden via the Features
- settings page.
- - `drush features-update [feature name]`
- Update the code of an existing feature to include any overrides/changes in
- your database (e.g. a new view).
- - `drush features-revert [feature name]`
- Revert the components of a feature in your site's database to the state
- described in your feature module's defaults.
- - `drush features-diff [feature name]`
- Show a diff between a feature's database components and those in code.
- Requires the Diff module.
- Additional commands and options can be found using `drush help`.
- Compatibility
- -------------
- Features provides integration for the following exportables:
- - CTools export API implementers (Context, Spaces, Boxes, Strongarm, Page
- Manager)
- - ImageCache
- - Views
- - [Other contributed modules][2]
- Features also provides faux-exportable functionality for the following Drupal
- core and contrib components:
- - Fields
- - Content types
- - Input filters
- - User roles/permissions
- - Custom menus and menu links *
- - Taxonomy vocabularies
- * Currently in development.
- Security Concerns
- -----------------
- If you are using Features to export Roles and also use those Roles in other
- exportable code (like Views filters) you can wind up with an unintended
- security hole. When you import your Feature, if the Roles do not get created
- with the exact same Role IDs then your Views filters (or other component) will
- be referencing a different Role than you intended.
- For developers
- --------------
- Please read `API.txt` for more information about the concepts and integration
- points in the Features module.
- Maintainers
- -----------
- - febbraro (Frank Febbraro)
- - hefox (Fox)
- - mpotter (Mike Potter)
- - timplunkett (Tim Plunkett)
- [1]: http://drupal.org/project/drush
- [2]: (http://drupal.org/taxonomy/term/11478)
|