As a newer developer, I was very confused by how the word "theme" was used. From the beginning, this was the word used to describe site layouts. I am old-fashioned and used to the term template. After getting a bit more of a hang of things, I am befuddled by our use of this word. However felt hesitation mentioning because it feels tacky to bring up terminology.

Theme is a loaded word. It's usage in drupal and to migrating users and developers is misguiding.

My problem is we can't offer you scientific evidence this creates a learning curve or confusion because I haven't seen it brought up. If people do not understand because it's overloaded, they may be too confused or afraid to mention. I can only hope you can figure it out. Particular if your interest is in clarity, this is for you. For Dries, Theme may have been a good word to start with, but no one knew back then the amount of diversity and population we would have on DO. No one knew that a system for "themes" would grow into something more open, configurable.

  1. The english word usage is incorrect.

    People who are not native english speakers may get especially confused (a large % of the community). http://www.merriam-webster.com/dictionary/theme, http://en.wiktionary.org/wiki/theme

  2. Furthermore, the industry usage is different

    The correct way to refer to element placement is Web templates (http://en.wikipedia.org/wiki/Web_templates) and http://en.wikipedia.org/wiki/Web_template_system

  3. In respect to the Drupal themes directory, it's misleading

    Many Drupal themes are layouts with no distinctive "theme" feel. Drupal has many great *templates*, however. They are clean, and very fresh, see #5

  4. Further yet, what we call the theming system, .tpl files in modules and layouts never involves "theming"

    It is instead repositioning element and modifying (X)HTML. In other words, template.

    This conflicts with "theme" as a layout object (including the whole kit and kaboodle) and what happens on the insides. Why wasn't a more succinct word like template used if that's all it is?

  5. It makes future use of styling/theming drupal templates more confusing

    A drupal layout can be themed or styled by overriding its CSS files. The CSS can include new, custom made images, etc.

    This change can be done easy. People are familiar with the usage of "layout", even better "template" to describe positioning of elements and (X)HTML code.

Who this would help

  • People migrating from other CMS, or considering, will feel at home
  • People who build who have used the word template, in building or (open)office productivity will link "template" in their mind correctly.
  • People who are trying to move through the barrier into module/layout making.
  • Our diverse community, some of which may be quiet and lurking, this clarification may sharpen them.
  • Future 'looks' or 'styles' system in the works for individual drupal layouts won't risk a lexical conundrum

Comments

dman’s picture

In the main, your points are valid, but I can't agree that 'layout' or 'template' are more accurate.

Neither word - to my mind - covers the full 'look and feel' conversion meaning that 'theme' does.

Neither "layout" nor "template" necessarily imply the 'color scheme' that is included in a theme. Although it can be implied, it's not explicit.

Both layout and template to me mean one fixed shape - a single page everything fits into, not the:
- this is what teasers look like,
- this is what forums look like
- this is what forms look like
- this is what buttons look like
- this is what blocks looks like
...suite of different design elements that come together to make a cohesive look & feel.
"Theme" is a better word for saying it defines the look and style of a site rather than just the dimensions of a page - which the other two words are basically limited to.

It is true that not all d.o. 'themes' do offer a full UI conversion. Some even self-identify as just 'templates'. A template is a part of a theme. But a theme is much more than just "where elements are on one page".

"Design Scheme" may be accurate and acceptable, although I don't think it's any improvement on "theme".
"Skin" has common usage to mean much the same thing, but I don't think its meaning is any clearer to non-English speakers.

I agree that there are arguments against "theme" being the perfect word. How we use it on CMSs is, to be fair, a concept that English didn't really have a word for a decade ago!
But I do not agree that either "template" or "layout" are significantly better. To my mind they are both worse.

"Template" in the singular will cause confusion when documenting the multiple "templates" (files) within a "template" (theme). Most developed sites exhibit what can only be described as multiple templates from a design perspective.
"Layout" in the singular also has this problem. At the conceptual level if not the documentation one.
Layout describes wireframes, shape and position - but not appearance (fonts, colors, corners, borders, images).

Currently a "Theme" contains "Templates" which define the "Layouts" and appearance of the visual elements.
That's not difficult English.
Smooshing those meanings up together may be.
It's terminology, but so are many other precise, accurately-used words. I don't think deliberately being more vague is a step forward.

Of course, I've already learnt the meaning of the word (in the CMS context) so I admit maybe I just find it hard to even see the problem now.
But once upon a time I had to learn the word italic as used in a typography context. After learning it I was wiser and could communicate more accurately with the people with whom that word mattered. The fact the non-designers or non-computer-users might not understand immediately did not stop me from using the right word in the right place.
Nor should it.

.dan.

tonyn’s picture

Hi.

Neither "layout" nor "template" necessarily imply the 'color scheme' that is included in a theme.

Indeed. We could call this template theming or template styling.

All templates come with a default style.

The color.module stuff I'm working on outputs "color schemes" into what are now known as "template styles" or just "styles".

Currently, I am working on a system for themes and modules called "styles". It uses a form similar to Michelle's Advanced_forum. (http://drupal.org/project/advanced_forum).

It's a proof of concept. It takes the key part of color.module, the stylesheet overriding, except instead of boxing people in, it creates a very intuitive, open standard anyone can use.

Template styles can be made by *any* third party, even placed manually. Commercial template makers can have their wish of slicing out images, creating a custom stylesheet and having turn-key styles included; they can use their own tools. Color.module people can have their cake too. If some whiz finds a clever, new way to handle stylesheets, a front end, a replacer, etc. (s)he can implement it with ease. It's all native, it's all zen.

See http://cvs.drupal.org/viewvc.py/drupal/contributions/modules/style/READM...

This is an example of why the words have been getting confusing, and it could get into a spagetti situation if we don't fix it.
Hi.

Neither "layout" nor "template" necessarily imply the 'color scheme' that is included in a theme.

Indeed. We could call this template theming or template styling.

All templates come with a default style.

The color.module stuff I'm working on outputs "color schemes" into what are now known as "template styles" or just "styles".

Currently, I am working on a system for themes and modules called "styles". It uses a form similar to Michelle's Advanced_forum. (http://drupal.org/project/advanced_forum).

It's a proof of concept. It takes the key part of color.module, the stylesheet overriding, except instead of boxing people in, it creates a very intuitive, open standard anyone can use.

Template styles can be made by *any* third party, even placed manually. Commercial/Professional template makers can have their wish of slicing out images, creating a custom stylesheet and having turn-key styles included; they can use their own tools. Color.module people can have their cake too. If some whiz finds a clever, new way to handle stylesheets, a front end, a replacer, etc. he can implement it with ease. It's all native, it's all zen.

See http://cvs.drupal.org/viewvc.py/drupal/contributions/modules/style/READM...

This is an example of why the words have been getting confusing, and it could get into a spagetti situation if we don't fix it.

Of course, I've already learnt the meaning of the word (in the CMS context) so I admit maybe I just find it hard to even see the problem now.

Indeed. We have to understand the technical aspects of drupal and help make sense to a new guy; clarity. Template is the accurate, technical word for what is being done. Theme is loaded. I'd hate to say it, but it's an evil word.

Furthermore, if we don't do something in our next main version/site design to handle this naming issue we may never be able to. It'll be a big move to change it as it is, if stuff keeps going we may have spaghetti phraseology running rampant.

Examples

  • Drupal has a good theme system. (That's nice, but wha?)
  • Drupal has a good template system. (More people would understand this off the bat)
  • A drupal template has styles. (Better terminology)
  • You can theme a drupal template (easy english, you don't need to hang around to 'get' the nuance)
  • A drupal theme has styles. (LEXICAL COLLISION!)
mike stewart’s picture

interesting. i always explain theming to clients using the word "templates" as a metaphor, but I never noticed why I did it until I read this. I agree this adds clarity for new users.

styro’s picture

It seems to me that Drupals 'template system' is only a subset of its theme subsystem, and Drupal has supported many different template systems over the years, in which case when talking about templates it would be better to refer to the specific template system (eg PHPTemplate, Smarty, XTemplate etc).

I prefer the word theme - the alternatives don't seem much better:

Templates are an implementation detail rather than the higher level role of the subsystem. Using template in the name of the system would create confusion if/when it used something else. And to non technical people it might not match their expectation of what templates are for anyway (eg Word templates etc).

Layout is a very limited part of theming that would just throw up more questions about definitions and demarkations etc.

But a "theme" is something that you can apply to your site to give it a whole new appearance (eg a visual theme or motif). To me it makes a lot of sense to call the subsystem responsible for that the "theme" system. A "theme" system implies what it does rather than how it is implemented underneath.

I also noticed that definition 4 of "theme" in your wikipedia link seems to match pretty closely to what a Drupal theme is.

And past experience has taught us that if something is confusing, it will still be confusing whether or not its name changes. The only difference being that changing somethings name adds a whole lot of extra confusion. Especially when people find old (or even current) docs or forum posts that call it something else. Generally learning the name of something new is the easiest part of learning it.

mike stewart’s picture

ok, I've done a complete 180 turnaround on this. wish i had given it more thought.

i feel a template is a good description for a particular "page" or URL

a theme is a combination of page templates, elements, color scheme, etc.

effulgentsia’s picture

Version: 7.x-dev » 8.x-dev
Component: theme system » user interface text

Too late for D7. Valid UI discussion for D8.

Xano’s picture

Facts:

Template
A preformatted piece of output that can be filled with dynamic content. This is the same with childrens' toys, in the print business or with Drupal templates, where content meets markup.
Theme
A total package with a certain style. A theme park, for instance, uses different methods of achieving a certain atmosphere: buildings, dressed up people, rides, etc. A Drupal theme uses CSS, images, templates and JS.
Layout
Layout defines how things are arranged and are part of the design. In web design layout is achieved mostly using CSS, and in Drupal is therefore part of a theme. In short: layout has nothing to do with Drupal's internals.

As you can see we have three different terms in use for three different things.

@mike stewart: why is template a good name (not a description) for a page or a URL?

@styro: one can argue that there is no real theme system. Theming is the practice of styling content in a certain way. Technically all the system does is applying content to templates. The HTML that is being added in by the template (which is either a *.tpl.php file or a theme function, which may be misleading) does a bit of the theming and the CSS and JS do the rest. One can easily check the validity of this statement, because a different templating system would change the way *.tpl.php files and perhapd theme functions work. CSS and JS are still added the same way, images can still be used, etc.

stevector’s picture

Status: Active » Closed (duplicate)

Many changes along these lines are happening in this initiative: http://drupal.org/sandbox/eclipsegc/1441840

David_Rothstein’s picture

Status: Closed (duplicate) » Active

This issue is just proposing a wording change, which is much smaller than the above initiative.

Version: 8.0.x-dev » 8.1.x-dev

Drupal 8.0.6 was released on April 6 and is the final bugfix release for the Drupal 8.0.x series. Drupal 8.0.x will not receive any further development aside from security fixes. Drupal 8.1.0-rc1 is now available and sites should prepare to update to 8.1.0.

Bug reports should be targeted against the 8.1.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.9 was released on September 7 and is the final bugfix release for the Drupal 8.1.x series. Drupal 8.1.x will not receive any further development aside from security fixes. Drupal 8.2.0-rc1 is now available and sites should prepare to upgrade to 8.2.0.

Bug reports should be targeted against the 8.2.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.6 was released on February 1, 2017 and is the final full bugfix release for the Drupal 8.2.x series. Drupal 8.2.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.3.0 on April 5, 2017. (Drupal 8.3.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.3.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.6 was released on August 2, 2017 and is the final full bugfix release for the Drupal 8.3.x series. Drupal 8.3.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.4.0 on October 4, 2017. (Drupal 8.4.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.4.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.4 was released on January 3, 2018 and is the final full bugfix release for the Drupal 8.4.x series. Drupal 8.4.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.5.0 on March 7, 2018. (Drupal 8.5.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.5.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.6 was released on August 1, 2018 and is the final bugfix release for the Drupal 8.5.x series. Drupal 8.5.x will not receive any further development aside from security fixes. Sites should prepare to update to 8.6.0 on September 5, 2018. (Drupal 8.6.0-rc1 is available for testing.)

Bug reports should be targeted against the 8.6.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.6.x-dev » 8.8.x-dev

Drupal 8.6.x will not receive any further development aside from security fixes. Bug reports should be targeted against the 8.8.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.9.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.7 was released on June 3, 2020 and is the final full bugfix release for the Drupal 8.8.x series. Drupal 8.8.x will not receive any further development aside from security fixes. Sites should prepare to update to Drupal 8.9.0 or Drupal 9.0.0 for ongoing support.

Bug reports should be targeted against the 8.9.x-dev branch from now on, and new development or disruptive changes should be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

apaderno’s picture

Title: Core Terminology: Change theme to 'layout' or 'template'. » Replace "theme" with "layout" or "template"
Issue summary: View changes

Layout and template have a specific meaning, in Drupal. They cannot replace theme, as it would just generate confusion.

cilefen’s picture

Status: Active » Closed (outdated)

“Theme” is now widely understood to mean the “look” or “style” of an app, not only in Drupal. Even the most popular web design framework uses the same word: https://themes.getbootstrap.com/