[development] Body and teaser as fields

Moshe Weitzman weitzman at tejasa.com
Wed Feb 11 05:20:39 UTC 2009

core would get rid of it. and there will be much rejoicing in usabilty land.

On Tue, Feb 10, 2009 at 11:45 PM, Matt Farina <matt at mattfarina.com> wrote:
> On the UI side including the teaser splitter JavaScript might be ugly. How
> would we handle this special case? Or, do we get rid of the teaser splitter?
> On Feb 10, 2009, at 11:20 PM, Barry Jaspan wrote:
>> Now that Field API is in core it is time to start using it.  I have an
>> initial suggestion: change node body and teaser from special cases to normal
>> fields.  I suspect this is going to be quite controversial so I thought I'd
>> get some feedback here before evening bothering to start looking at the
>> code.
>> This message is not about the details of the implementation; I'm sure
>> there will be subtleties and complexities to work.  I'm just asking about
>> the concept.
>> Concept:
>> Remove all special processing for $node->body and $node->teaser.  Create
>> two fields, body and teaser, both text fields.  Assign both fields to every
>> existing content type with a "body field" using the textarea widget.  For
>> existing nodes, as part of the upgrade path, initialize the teaser field
>> value with whatever teaser would normally be generated automatically from
>> the body.
>> Random thoughts:
>> - We will get to remove a bunch of code, much of it quite ugly, from
>> node.module.
>> - Sites that really want an auto-generated teaser can remove the teaser
>> field from a content type and use the text field's teaser Display Formatter
>> in the teaser context.
>> - This will mean removing the body field from the node and node_revision
>> tables, and creating a field_data_body table for it instead.  Don't worry
>> about database query efficiency; that is a solved problem (see
>> http://drupal.org/node/368674).
>> - With $node->body and $node->teaser being normal fields, they will not be
>> available for overloaded use as the complete rendered output of the node.
>>  Hurray!  We can use $node->content = drupal_render($node) or something like
>> that.
>> - We might want to think about adding other fields to our default content
>> types.  Perhaps Article should have a Subtitle field, etc.  This is a whole
>> topic in itself.
>> Comments?
>> Thanks,
>> Barry

More information about the development mailing list