<p>Element Types are powerful and there are probably too many possible implementations to give a very meaningful example without additional information. </p>

<p>Here are a couple resources beyond the docs that could help you get started:</p>

<ul>
<li><a href="https://straightupcraft.com/articles/master-the-element-types-craft-cms" rel="noreferrer">Master the Elements</a> - A comparison of all native Craft CMS Element Types and what makes them unique.</li>
<li><a href="https://straightupcraft.com/events/introduction-to-element-types-in-craft-cms-part-1-of-3" rel="noreferrer">Introduction to Element Types in Craft CMS</a> - In this Hangout Brandon Kelly walks through a lot of details about Element Types. There are also a couple of other related videos you can find in the resources section here: <a href="https://straightupcraft.com/articles/getting-started-with-plugin-development-for-craft-cms#tutorials-and-other-resources" rel="noreferrer">Getting Started with Plugin Development for Craft CMS</a></li>
<li><a href="https://github.com/pixelandtonic/Events" rel="noreferrer">Events Sample Plugin</a> - Example plugin that demonstrates how Craft plugins can take advantage of Craft’s Element Type APIs.</li>
</ul>

<p>I'd recommend taking a close look at the <code>ElementType</code> Class and related Element Type <code>Model</code> Class for each of the native Elements in Craft:</p>

<ul>
<li>Asset</li>
<li>Category</li>
<li>Entry</li>
<li>Global Set</li>
<li>Matrix Block</li>
<li>Tag</li>
<li>User</li>
</ul>

<p>Each Element implements the API slightly differently and understanding those differences will help you make sense of what you may need to include in your Element, or where you can piggy back on existing behavior.</p>

<p>There are also several plugins that use Elements. Each implementation is fairly custom, so which examples will work best for you are hard to say. Off the top of my head, there are plenty of examples:</p>

<p>Craft Commerce:</p>

<ul>
<li>Commerce_Product Element</li>
<li>Commerce_Order Element</li>
</ul>

<p>Sprout Plugins:</p>

<ul>
<li>SproutForms_Form Element (Sprout Forms)</li>
<li>SproutForms_Entry Element (Sprout Forms)</li>
<li>SproutEmail_NotificationEmail Element (Sprout Email)</li>
<li>SproutEmail_CampaignEmail Element (Sprout Email)</li>
<li>SproutEmail_SentEmail Element (Sprout Email)</li>
<li>SproutSeo_Redirect Element (Sprout SEO)</li>
</ul>

<p>A few others (if anybody would like to share others in the comments, happy to add them to the list)</p>

<ul>
<li>Neo_Block Element (Neo)</li>
<li>SuperTable_Block Element (Super Table)</li>
</ul>

CC BY-SA 3.0
2016-09-25T19:15:55.570Z
No mention of P&T's [Events plugin](https://github.com/pixelandtonic/Events)? It isn't meant as a full plugin, only as a practical example of how to build a custom Element Type.
Lindsey D
CC BY-SA 3.0
2016-09-25T21:26:06.083Z
Added to the primary resource list.
Ben Parizek
CC BY-SA 3.0
2016-09-26T02:02:53.297Z
Thanks for this wonderful resources Ben, This will help me to build a custom element element type.
uncle drew
CC BY-SA 3.0
2016-09-25T14:25:58.523Z
2016-09-25T21:25:04.700Z
2016-09-25T21:25:04.700Z
Ben Parizek
<p>I am building a plugin in Craft, I want to use the Element Types, the documentation seems so hard to grasp. Can you give an example or a template code?</p>

<plugin-development><elementtype>
How to make use of Element Types
# How to make use of Element Types

(Asked by: username_0 on 2016-09-25)

I am building a plugin in Craft, I want to use the Element Types, the documentation seems so hard to grasp. Can you give an example or a template code?

**Tags:** plugin-development, elementtype


---

## 1 answers

### Answer by username_1 on 2016-09-25. Score: 10

Element Types are powerful and there are probably too many possible implementations to give a very meaningful example without additional information.

Here are a couple resources beyond the docs that could help you get started:

* [Master the Elements](https://straightupcraft.com/articles/master-the-element-types-craft-cms) - A comparison of all native Craft CMS Element Types and what makes them unique.
* [Introduction to Element Types in Craft CMS](https://straightupcraft.com/events/introduction-to-element-types-in-craft-cms-part-1-of-3) - In this Hangout Brandon Kelly walks through a lot of details about Element Types. There are also a couple of other related videos you can find in the resources section here: [Getting Started with Plugin Development for Craft CMS](https://straightupcraft.com/articles/getting-started-with-plugin-development-for-craft-cms#tutorials-and-other-resources)
* [Events Sample Plugin](https://github.com/pixelandtonic/Events) - Example plugin that demonstrates how Craft plugins can take advantage of Craft’s Element Type APIs.

I'd recommend taking a close look at the `ElementType` Class and related Element Type `Model` Class for each of the native Elements in Craft:

* Asset
* Category
* Entry
* Global Set
* Matrix Block
* Tag
* User

Each Element implements the API slightly differently and understanding those differences will help you make sense of what you may need to include in your Element, or where you can piggy back on existing behavior.

There are also several plugins that use Elements. Each implementation is fairly custom, so which examples will work best for you are hard to say. Off the top of my head, there are plenty of examples:

Craft Commerce:

* Commerce\_Product Element
* Commerce\_Order Element

Sprout Plugins:

* SproutForms\_Form Element (Sprout Forms)
* SproutForms\_Entry Element (Sprout Forms)
* SproutEmail\_NotificationEmail Element (Sprout Email)
* SproutEmail\_CampaignEmail Element (Sprout Email)
* SproutEmail\_SentEmail Element (Sprout Email)
* SproutSeo\_Redirect Element (Sprout SEO)

A few others (if anybody would like to share others in the comments, happy to add them to the list)

* Neo\_Block Element (Neo)
* SuperTable\_Block Element (Super Table)

> **Comments:**
> **username_2**: No mention of P&T's [Events plugin](https://github.com/pixelandtonic/Events)? It isn't meant as a full plugin, only as a practical example of how to build a custom Element Type.  
> **username_1**: Added to the primary resource list.  
> **username_0**: Thanks for this wonderful resources Ben, This will help me to build a custom element element type.  

---

