PageMotor guide
Documents, Boxes and Blank_Slate
Where a page actually comes from in PageMotor, and where each EP plugin's output lands, so you can build a Document-first site without guessing.
Use this guide with any AI assistant
Download it as a prompt file, paste it into Claude, ChatGPT, Gemini or any LLM, and it will walk you through it.
Three surfaces, three different things
The confusion is that all three end up as HTML in the browser. They are not the same kind of thing at all.
Blank_Slate
A Theme. A Theme owns Templates, and a Template is a tree of blocks whose instances emit markup: HTML Container, HTML Box, Page Content and so on.
What is in itAlmost nothing. A Page template and a 404 template, both fallbacks.
Use it whenYour Documents carry the design and the Theme only has to catch what falls through.
HTML Document
A content row, not a Theme. Type html. PageMotor stores the whole document, folds the site head metadata in when you save it, and serves it as stored at a clean URL.
Nothing. No Template, no blocks, no Theme CSS. What you write is what ships.
Use it forThe home page and every designed page.
HTML Box
A block instance inside a Template. A box of raw HTML you author, rendered inside the Template tree, with the Theme's CSS around it.
What makes it differentPageMotor processes its content, so shortcodes expand inside it.
Use it whenYou need plugin output on a designed surface. It is the bridge between the two worlds.
How a page is served
One decision decides everything else. PageMotor looks at the content row's type and takes one of two paths.
Every clean URL maps to one row: a Page, a Post, a Document, a Members Only page.
Document types (html, and any plugin type cloned from it) get an access check, then the stored content is sent as it is. Finished. The Theme never runs.
The Theme picks a Template, walks its block tree, and Page Content emits the row's body. That is where shortcodes are processed.
Hold on to this. Shortcodes are processed on path 2b only: in Page Content, in an HTML Box, in a Text Box and in Modular Content. Path 2a never processes anything.
Two kinds of plugin output
Every EP plugin puts things on the page in one of two ways, and the way decides where it can go.
| Kind | Examples | Where it renders |
|---|---|---|
| A content type The plugin registers a new kind of row. |
EP Blog's Post. EP Membership's Members Only page. | Where the type says. A Post goes through the Theme's Page template. A Members Only page is a Document and is served as stored. |
| A shortcode The plugin replaces a tag in your content with markup. |
EP Cards' cards and card groups. EP Blog's index and recent-posts list. EP Membership's login and register forms. | Page content, an HTML Box, a Text Box, Modular Content. Never inside a Document. |
Plugin by plugin
EP Blog
| Feature | How it renders | Put it in |
|---|---|---|
| A post | Content type post, through the Theme | Blank_Slate's Page template, which you style once |
| The blog index | Shortcode [ep-blog] | A Page called Blog, or an HTML Box |
| Recent posts, categories, post navigation | Shortcodes | A Page or an HTML Box |
EP Cards
| Feature | How it renders | Put it in |
|---|---|---|
| One card | Shortcode [ep_card id="…"] | A Page or an HTML Box |
| A card group | Shortcode [ep_card_group group="…"] | A Page or an HTML Box |
EP Cards is entirely shortcodes. It has no content type of its own.
EP Membership
| Feature | How it renders | Put it in |
|---|---|---|
| A gated page | Content type Members Only: a clone of the html type with the protection flag on | It is already a Document. Write it as one. |
| Login, register, logout link | Shortcodes | A Page such as Sign in, or an HTML Box |
| Member profile, member dashboard | Shortcodes | A Page such as Account |
| Someone below the level opens a gated page | PageMotor checks access before serving and sends the plugin's denied text instead of the page | Nothing to place. Set the denied text in EP Membership. |
The one trap: a shortcode inside a Document
Put [ep_card_group] or [ep-blog] or [ep-login-form] inside a Document and the visitor sees the tag as literal text. Not broken markup, not an error: the tag itself, because a Document is served as stored.
Checked on a clean install with a control. The same core shortcode in a Document and in a Page:
The fix is placement, not code. Move the shortcode to a Page or an HTML Box. If the design needs plugin output on a page that must stay a Document, either render that piece at save time or make that one page a Page with an HTML Box carrying the design.
Build recipe: a minimal blog with cards and members
The ellanew.com shape: a quiet front, posts underneath, a few cards, and a members area. Tick each step as you go. Ticks stay in this browser only.
-
Activate Blank_Slate
Themes, pick Blank_Slate. You now have a Page template and a 404 template and nothing else.
-
Write the home page as a Document
Type html, with its own CSS in its own head. Over MCP that is save-content with type
htmland the whole page indocument. Set it as the site home. -
Style Blank_Slate's Page template once
Header, footer, type and colour, matching the home Document. Every Post and every Page will inherit this, so do it once and do it well.
-
Install EP Blog and write Posts
Each post is a Post row. It renders through the Page template you just styled.
-
Make a Page called Blog holding the index
A plain Page whose content is
[ep-blog]. Link to it from the home Document's nav. -
Place cards in a Page or a Box
Install EP Cards, build the group, then put
[ep_card_group group="…"]in a Page or an HTML Box. Not in the home Document. -
Install EP Membership and write the gated pages
Set the levels, then write each members page as a Members Only row. They are Documents, so they carry their own CSS like the home page does.
-
Make a Sign in Page with the form shortcodes
A Page holding the login and register form shortcodes. Link it from the nav and from the denied text.
-
Check it the way a visitor would
Open the home Document signed out. Open a Post. Open the Blog Page and see the index. Sign in as a member below the level and open a gated page: you should see the denied text, not the page and not a 404.
Quick lookup
| I want | Put it in |
|---|---|
| A designed page with its own look | A Document |
| A page that is only for members | A Members Only Document |
| A blog post | A Post, styled by the Page template |
| The list of posts | [ep-blog] in a Page or an HTML Box |
| A row of cards | [ep_card_group] in a Page or an HTML Box |
| Login and register forms | The form shortcodes in a Page or an HTML Box |
| Plugin output on a designed page | Make that page a Page with an HTML Box, not a Document |
Questions people ask next
Can I put a card group on the home page if the home page is a Document?
Not by shortcode. Either make the home page a Page whose design lives in an HTML Box, so the shortcode expands, or render the cards' markup into the Document when you save it.
Does a Document get the Theme's CSS or fonts?
No. It carries its own head. PageMotor folds in the site metadata when you save, nothing else.
Does a Members Only page get the Theme?
No. It is a Document with a lock on it. Write it with its own CSS, the same as the home page.
What does a member below the level see on a gated page?
The plugin's denied text, sent instead of the page. Not a 404. Set that text in EP Membership and link the sign-in Page from it.
Can Claude build all of this over MCP?
Yes. Documents are save-content with type html and the page in document. Pages and Posts are save-content with content. Members Only pages use the plugin's type. The Theme template is edited through the theme actions.
Where does the Design Conversion Skill fit?
It converts an existing HTML design into a Theme. On a Document-first site you are not converting anything, so you do not need it.