Skip to content

Choose a page template, and what each field means on it

Every content page in the cPanel has a Body Template. It decides the page layout and which fields show. Stock Maropost treats the content fields as plain text slots. This theme gives them jobs, and the job changes with the template. On one template Label 1 is a heading. On another it is a hidden on/off switch. On a promotion page it is a promotion code. Fill the wrong field, or the right field on the wrong template, and the page just looks a bit empty. Nothing tells you why.

Use this page when you create a content page, when you change a page’s template, or when a field you filled in doesn’t show.

Checked against the theme’s development branch and the live site on 21 October 2026. The live site can run a little behind development.

1. Pick the template

Start from what the page is. Most pages should keep the default for their content type: leave Body Template blank.

You are makingBody TemplateNotes
A product category or brand pageleave blank (gives category)Product list, filters sidebar, optional description and image
A blog post or Learn articleleave blank (gives content)Banner, author and date, body, related cards
A policy or general information pageleave blank (gives content)Same layout as a blog post
A Learn section page that lists its articlesdefaultThree child cards per page, with page numbers
A service page (Services content type)leave blank (gives services)Hero, description, optional product cards and Typeform
A service page that also needs the “Why Choose Altapac?” blockserviceNewSame as services plus a fixed block of stats, reviews and links
A Services section page that lists child servicesservice-parentHero, child service cards, description
A Learn section page laid out like a service page (Locations, each store’s location page)learn-parentHero, description, child cards
A store’s individual service page under a location (for example Burwood Bullbars)servicesHas to be typed in. These are Learn pages, whose default is content
A form page under /form/modal, plus a header templateSee Contact forms and enquiry buttons
A promotion pagesee the caution belowPromotions content type

The rest of the theme’s templates are for one particular page each, or aren’t in use. Don’t put them on a new page without asking the web team: home, contact, brands, promotions-list, products, store_finder, parent-category, builder-content.

2. Set it

  1. Open the page in the cPanel content editor.
  2. Go to the Template & Design section.
  3. In Body Template, enter the template name exactly as it appears on this page, including capitals and hyphens (serviceNew, service-parent, learn-parent). To use the content type’s default, leave it blank. The store accepts any name: one the theme doesn’t have renders as if the field were blank, with no error.
  4. Leave Header Template and Footer Template blank unless the page is a form (see Header templates).
  5. Leave Search Results Template blank.
  6. Fill the fields the template reads (step 3), save, then open the live page and check it. Add ?nc= and any number to the address to get past the page cache.

3. Fill the fields the template reads

Live use of each template

Counts are active pages in the Altapac-Content pull of 20 October 2026, plus one Learn article added on 21 October. “Blank” means the page leaves Body Template empty and gets the template as its content-type default.

TemplateActive pagesExamples
category258 (173 categories and 84 brands, all blank; 1 promotion, set by name)/roof-racks/, /brand/bluetti/, /promotions/rhino-rack-november/
services41 (28 Services pages blank; 12 location service pages and /tint-warranty-information/ set by name)/services/wholesale/, /locations/burwood/bullbars
content21 (14 Learn pages and 7 general pages, all blank)/learn/about-altapac/, /returns-policy/
modal11/privacy-policy/, /zip-own-it-now-pay-later/, most /form/ pages
default8 (4 form pages blank; 4 set by name)/learn/guides-faq/, /learn/adventure-hub/, /form/ask-a-question-about-this-product/
service-parent5/services/window-tinting/, /services/vehicle-protection/
learn-parent3/locations, /locations/burwood, /locations/artarmon
serviceNew1/services/accessory-fitment-solutions/roof-rack-installation/
home1the home page
contact1/contact-altapac/
brands1/brands/
promotions-list1/promotions
products0 (1 inactive)/products/, inactive
store_finder0 (1 inactive)/store-finder/, inactive
promotions0none
parent-category0none
builder-content0none

The theme also has 404, search_results and promo_search_results. These aren’t body templates for content pages, so don’t choose them as one. One live page, /form/notify-me/, has Body Template notifyme, which isn’t in the theme at all (see What breaks).

The labels

The core of this page: what Label 1, Label 2 and Label 3 do on each template. “Not used” means the template ignores the field, so text in it changes nothing.

TemplateLabel 1Label 2Label 3
categorySwitch. Any text turns on up to 4 Related Content cards below the description. The text itself never shows. Only works when Description 1 is filledNot usedNot used on the page
services, serviceNewHeading and switch. Shown as the heading of the service products section. Blank means no product section at allNot usedTypeform embed ID (the data-tf-live value from the form’s embed code, not the ID in a share link). Embeds that Typeform at the top of the Description 2 block. Only shows when Description 2 is filled
service-parent, learn-parentHeading above the child page cards, going by the theme source (not yet tested on a real page). Blank means no heading (the cards still show) (not live yet, AUD-87)Not usedNot used
promotionsNot used on the page (see the next row)Not usedPromotion length in whole days. Used for the “Promotion Period” line under the heading and the end date given to search engines
Any Promotions content type page, whatever its templatePromotion code. Must exactly match the code on the products. That match makes the promotion banner show on product pagesNot usedPromotion length in days. The page’s card on /promotions works out “Valid”, “Starts” or “Expired” from Date Posted plus this number
builder-contentNot usedBuilder.io model name. The page loads the Builder.io entry for this model and the page’s own addressNot used
content, default, brands, contact, home, modal, parent-category, products, promotions-list, store_finderNot usedNot usedNot used

On a promotion page that uses category, both rows apply. Label 1 is the promotion code, and because it isn’t blank it also turns on the Related Content cards whenever Description 1 is filled. You can’t have the code without the switch.

On service-parent and learn-parent, the theme reads Label 1 before it builds the child cards and prints it as a heading only when it has text. No live parent page has been tested with Label 1 filled, so check the page after you set it.

Images

Upload Alt image 1 at 450 × 450, square. It’s the page’s site-wide image (menu thumbnails, cards and the side image beside Description 1), so pick one that still reads at menu-thumbnail size, with the subject filling the frame. Upload the Main image at 3:1, for example 1599 × 533. Each template then crops them as below.

TemplateMain imageAlt image 1
contentBanner above the heading, cropped to 3:1Beside Description 1, cropped to 3:2. Only shows when Description 1 is filled. With no Alt image 1, a placeholder sketch shows
defaultBanner below the heading, cropped to 3:1Beside Description 1, cropped to 3:2. Always shows, with the placeholder sketch if there’s no Alt image 1
brandsBanner below the heading, cropped to 3:1Beside Description 1, cropped to 3:2
promotionsBanner above the heading, cropped to 3:1Beside Description 1, cropped to 3:2, placeholder sketch if missing
categoryNot shown on the pageBeside Description 1, cropped to 3:2. Only shows when Description 1 is filled
services, serviceNew, service-parent, learn-parentHero background behind the heading, at least 300px tall, cropped to fill the width. The crop changes with screen size, so keep the subject in the centreBeside Description 1, cropped to 3:2. Always shows (an empty box if there’s no Alt image 1)
contactHero background, at least 500px tall, cropped to fillNot used
promotions-listBanner below the heading, at its own proportions (no crop)Not used
parent-categoryNot shownNot shown. The child category tiles use each child’s own image
home, modal, products, store_finder, builder-contentNot usedNot used

A page’s images also appear on other pages, cropped differently:

  • Alt image 1 as a card image. Cards that link to this page use its Alt image 1: a square box on content related cards, a 200px-tall crop on service-parent and learn-parent child cards, and uncropped on category related cards, default child cards and /brands cards. The square on content related cards isn’t a crop: the whole image is squeezed into the square, so a wide image comes out squashed from the sides. The desktop menu panel sizes it at 450 × 300, a 3:2 shape (see Edit the menus). A 450 × 450 square Alt image 1 avoids the stretch.
  • Main image of a Promotions page. Shown on its /promotions card cropped to 3:1 (2:1 on phones) and as the background of the promotion banner on product pages. This happens even under the category template, which doesn’t show the main image on the page itself.

Text fields

TemplateShort Description 1Description 1Description 2Description 3Short Description 2 and 3
contentItalic, centred intro under the headingLeft column, beside Alt image 1Main body, full widthNot usedNot used
defaultItalic intro under the date lineLeft column, beside Alt image 1Below the child cardsBelow Description 2Not used
categoryNot shown on the pageLeft column, beside Alt image 1. Leave it blank and the image and related cards go tooVery bottom, after the product listNot usedNot used
parent-categoryShort intro. With Description 1 also filled, Description 1 is folded away behind a “read more” arrowCategory description. On its own, anything after the first paragraph folds away once it passes 100 wordsVery bottomNot usedNot used
services, learn-parentPlain-text line in the heroBeside Alt image 1, under the heroBottom section (services: with the Typeform above it)Not usedNot used
serviceNewPlain-text line in the heroBeside Alt image 1, under the heroWith the Typeform above itVery bottom. Filling Description 2 or 3 also shows the fixed “Why Choose Altapac?” blockNot used
service-parentPlain-text line in the heroBeside Alt image 1, below the child cardsBottom sectionNot usedNot used
brandsItalic introBeside Alt image 1Below the brand cardsBelow Description 2Not used
promotionsPlain-text line under the heading. Also used as the offer description in the page’s search-engine dataBeside Alt image 1Full width belowBelow the product sectionsNot used
promotions-listNot shown on the pageIntro under the bannerBelow the promotion cardsBelow Description 2Not used
contactNot usedSubheading in the hero. Keep it to one short line of plain textNot usedNot usedNot used
homeNot usedBlock between “Within Reach” and the category gridNot usedNot usedNot used
modalNot usedThe whole page. Nothing else prints, not even a headingNot usedNot usedNot used
products, store_finderPrinted in a row with Short Descriptions 2 and 3Printed in a row with Descriptions 2 and 3(with Description 1)(with Description 1)Printed after Short Description 1
builder-contentNot usedPrinted twice: once above the Builder.io area and once inside itNot usedNot usedNot used

Short Description 1 is also the card text when another page links to this one with a card: related cards, child cards and /promotions cards (/brands cards show the name only). So fill it even on a template that doesn’t show it on the page. When SEO Meta Description is blank, Maropost also builds the page’s meta description from the Name and Short Description 1.

On default, Short Description 1 and Descriptions 1 to 3 only show on page 1 of the child cards. Pages 2 and up show just the cards.

Other fields

FieldWhere it does something
Date Postedcontent: shown as “Last Updated” followed by the date. Leave it empty and the author and date line disappears. default: “Last Updated” line, shown on its own. promotions: start of the “Promotion Period”. Any Promotions page: start date for its /promotions card. Ignored everywhere else
Authorcontent: name badge, only when Date Posted is set. A blank author shows “Altapac Team”. default: “Author:” line, shown whether or not there’s a date. Ignored everywhere else
Related Contentcontent: up to 4 cards at the bottom, always on (no switch). category: up to 4 cards, only when Label 1 and Description 1 are both filled. promotions: one section per related category (up to 6), each listing up to 6 of this promotion’s products from that category. It also feeds the mega-menu panels, whatever the template (see Edit the menus)
SEO Page HeadingReplaces the Name as the page’s main heading on most templates. Exceptions: products and store_finder always use the Name; home has a fixed heading; modal and builder-content print no heading
Page comments (“allow reviews” setting)default only: shows a share button, comments and a “Leave a comment” form. Every other template ignores it

parent-category lists parts-finder child pages only when the page’s content type code is part-finder. The store’s code is parts-finder, so that list never appears. No live page uses parent-category, so this doesn’t affect anything today.

Header templates

Leave Header Template blank for normal pages. That gives the full site header, menus and search. The other header templates are for pages that are shown inside another page.

Header TemplateWhat it doesUse it for
blankFull site header and menusEvery normal page
iframeNo site header. Hidden from search engines, no tracking codeA form that only appears inside another page or the contact modal
emptyNo site header. Still indexed by search engines, tracking still runsThe three store forms on the contact page and the two thank-you pages use it today

Pair iframe or empty with Footer Template empty. Contact forms and enquiry buttons has the full list of form pages and their settings.

The theme also has checkout, print, nr_print and empty-main-content headers. No content page uses them. Don’t pick them.

What breaks

None of these show an error. The page just looks incomplete.

  • Author missing on a blog post. On content, author and date show together or not at all. Set Date Posted.
  • Text typed into a label the template ignores. For example, Label 1 on content or Label 3 on category (outside Promotions). Nothing shows. Check the labels table before using a label.
  • Moving a page from one template to another. Fields move or disappear. Moving from content to category hides the main image and Short Description 1. Moving from services to service-parent drops the product section and Typeform. Re-check every field against the tables after a switch.
  • A mistyped template name. The store accepts it and the page renders as if Body Template were blank. Check the live page after any template change.
  • Learn pages under a location need services typed in. A new page under /locations/<store>/ is a Learn page. Leave Body Template blank and it renders as a blog post (content), not a service page.
  • Paragraphs in hero text. Short Description 1 on the service templates and promotions, and Description 1 on contact, sit inside a heading or paragraph. Keep them to plain text. Pasted paragraphs or lists can break the layout.
  • ”Why Choose Altapac?” appears unexpectedly. On serviceNew, any text in Description 2 or 3 shows the fixed block. Its stats, reviews and links are in the theme, not the cPanel. To change them, ask a developer. On altapac.com today the block is only styled properly on Roof Rack Installation, which carries its own copy of the CSS (not live yet, AUD-86).
  • Builder.io page shows a “not found” message. builder-content loads the Builder.io entry for the model in Label 2 and the page’s own address. If no entry matches, the page shows Builder’s not-found screen. The entry’s title also replaces the browser tab title.
  • A child page missing from /learn/guides-faq/ and other default lists. These show three cards per page, with page numbers. The child may be on page 2.

Reference

FieldTemplates that read it
Label 1category (switch), services and serviceNew (heading and switch), service-parent and learn-parent (heading), any Promotions page (promotion code)
Label 2builder-content only
Label 3services and serviceNew (Typeform embed ID), promotions and any Promotions page (days)
Main imagecontent, default, brands, promotions, promotions-list (banner); service family, learn-parent, contact (hero); Promotions pages (card and product banner)
Alt image 1Beside Description 1 on most templates; card image everywhere
Short Description 2 and 3products and store_finder only
Description 3default, brands, promotions, promotions-list, serviceNew, products, store_finder
Date Postedcontent, default, promotions, any Promotions page
Authorcontent (needs Date Posted), default
Related Contentcontent, category (needs Label 1 and Description 1), promotions, menus
For developers

Theme repo Altapac-ReDev, branch development, paths under src/templates/:

  • cms/category.template.html: Label 1 gate inside the Description 1 block (109-217), category_ad carousel (223), Description 2 (448-452). No main image.
  • cms/content.template.html: related-card images aspect-ratio: 1/1 with no object-fit (inline style, 21-25), so they stretch; banner 3:1 (26-31, 114-119), author only inside the Date Posted test (125-133), Alt image 1 inside the Description 1 test (140-151), related list limit 4 with no gate (158).
  • cms/default.template.html: Alt image 1 always rendered (84-86), child thumb_list limit 3 with paging (90-147), Descriptions 2 and 3 (148-155), content_allow_reviews comments (158-229).
  • cms/services.template.html and cms/serviceNew.template.html: Label 1 product section fed by /export//service-product.json, filtered on category containing the content ID; Label 3 as data-tf-live inside the Description 2 test. Feed repair and hidden-until-a-card-renders wrapper are c4bfdae (AUD-36). serviceNew “Why Choose Altapac?” block on Description 2 or 3 (308-404), styled by .ap-mod rules from b987e8f (AUD-86).
  • cms/service-parent.template.html and cms/learn-parent.template.html: Label 1 captured as children_heading with [%set%] before the content_menu and printed only when non-empty (406e84c, AUD-87; main prints [@content_label1@] unguarded inside the menu’s header param); child menus of type services and learn.
  • cms/promotions.template.html: Label 3 in the Promotion Period and validThrough (17, 49); related categories × in-promo products (109-114). Only CMS template that links css/blog-containers.css.
  • cms/promotions-list.template.html: content_type=promotions list and date maths (112-133). The main-image banner has no crop rule because this template’s inline styles don’t define _cover-banner.
  • products/template.html:2-7 and products/bikeRacks.template.html:7: product banner on promo_id eq content_label1 via content_path type:'promotions'. products/template.html:215 uses parts-finder; cms/parent-category.template.html:320-321 uses part-finder.
  • cms/builder-content.template.html: Label 2 to cmsModelLabel; Description 1 printed at lines 2 and 12. Bundle src/content-app/index-DJYEhrs8.js calls builder.get(cmsModelLabel, url: pathname) and renders its 404 when nothing matches.
  • headers/template.html:267-276: on category page types, Alt image 1 is also written as a .category-banner background, but no CSS gives it a height, so it renders 0px tall (checked live on /roof-racks/).
  • headers/iframe.template.html + headers/includes/head_empty.template.html (noindex, no tracking); headers/empty.template.html + head.template.html.
  • Not in the theme: headers/vue (deleted in f0f1e8c, 2024-04-18), headers/modal, footers/modal, cms/notifyme.

Live template use comes from Altapac-Content/pages/**/meta.json (pulled 2026-10-20). Blank-template defaults were inferred from template-specific markup on live pages (21 October 2026), not from cPanel settings. Unknown template names: Altapac-Content/CLAUDE.md and commit 2f26b05 (owner observation, 2026-10-20); /form/notify-me/ and the ask-a-question thank-you page checked live on 21 October 2026. Image upload sizes: Altapac-Content/CLAUDE.md.