<!--
{
  "documentType" : "article",
  "framework" : "TVML",
  "identifier" : "/documentation/TVML/producttemplate",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "productTemplate"
}
-->

# productTemplate

Displays detailed information about a single product.

## Overview

Use the `productTemplate` element to display, for example, a page that describes
a movie, including information about the actors, ratings, and like movies. The page
displays general information about the product in the top two-thirds of the screen
with a row of related products directly below. A user can scroll down and access
detailed information about the product, including critical reviews, actor biographies,
and information about any included extras.

The following figure shows the basic layout for a `productTemplate` page. The default
theme for a product template is `dark` when a background image is specified; otherwise,
the product template defaults to the system preference.

![Layout diagram showing an info list area on the left side of the screen, a stack area in the middle, and a banner area on the right. A shelf area is at the bottom of the screen. A second shelf area is shown as being off the bottom of the screen.](images/com.apple.TVML/producttemplate-1.png)

### Main Elements

The following listing shows the main elements of the productTemplate element in TVML
format.

```xml
<productTemplate>
    <banner>
        <infoList>
        </infoList>
        <stack>
            <title>…</title>
            <subtitle>…</subtitle>
            <row>
            </row>
            <description>…</description>
            <buttonLockup>
            </buttonLockup>
        </stack>
        <heroImage src="…" />
    </banner>
    <shelf>
    </shelf>
    <!—- Everything following is under the fold —->
        <shelf>
        </shelf>
        <productInfo>
        </productInfo>
    </productTemplate>
```

> Note: You can change the look of a `productTemplate` page by removing `heroImage`
> from the `stack` element and replacing it with an `img` element that covers the entire
> screen.

#### Element Descriptions

- [banner](/documentation/TVML/banner): Element containing subelements that provide primary information
  about a product, such as a movie title, description, credits, and purchase information.
- [buttonLockup](/documentation/TVML/buttonlockup): A type of button that can contain an image (the `badge`
  element) as well as text.
- [description](/documentation/TVML/description): Text that describes the product in detail; for example,
  a movie synopsis.
- [heroImg](/documentation/TVML/heroimg): An image of the product.
- [infoList](/documentation/TVML/infolist): Product information such as actors, directors, and producers.
- [productInfo](/documentation/TVML/productinfo): Technical information about the product such as runtime,
  language availability, and accessibility information.
- [row](/documentation/TVML/row): A group of information elements.
- [shelf](/documentation/TVML/shelf): An element containing row elements. Several shelves are used
  to display information like shows other users have watched and extra features provided
  by this product.
- [stack](/documentation/TVML/stack): Basic information about the product, including the title, rating,
  and a description.
- [subtitle](/documentation/TVML/subtitle): Text that provides additional information about its containing
  element.
- [title](/documentation/TVML/title): The title describing its containing element.

### Example

The following listing shows the TVML for a `productTemplate` example:

```xml
<document>
   <productTemplate>
      <background>
      </background>
      <banner>
         <infoList>
            <info>
               <header>
                  <title>Director</title>
               </header>
               <text>John Appleseed</text>
            </info>
            <info>
               <header>
                  <title>Actors</title>
               </header>
               <text>Anne Johnson</text>
               <text>Tom Clark</text>
               <text>Maria Ruiz</text>
            </info>
         </infoList>
         <stack>
            <title>WWDC Road Trip</title>
            <row>
               <text><badge src="resource://tomato-fresh"/> 99%</text>
               <text>1hr 54min</text>
               <text>Comedy</text>
               <text>2015</text>
               <badge src="resource://mpaa-pg" class="badge" />
               <badge src="resource://cc" class="badge" />
            </row>
            <description handlesOverflow ="true">An aspiring developer gets a ticket to WWDC at the last minute. Now they need to get across country in time for the keynote, and the only person who can help is their quirky roommate.</description>
            <text>Language information can go here</text>
            <row>
               <buttonLockup>
                  <badge src="resource://button-preview" />
                  <title>Preview</title>
               </buttonLockup>
               <buttonLockup type="buy">
                  <text>$9.99</text>
                  <title>Buy</title>
               </buttonLockup>
            </row>
         </stack>
         <heroImg src="path to images on your server/Car_Movie_720x1080.png" />
      </banner>
      <shelf>
         <header>
            <title>Viewers Also Watched</title>
         </header>
         <section>
            <lockup>
               <img src="path to images on your server/Car_Movie_250x375_A.png" width="150" height="226" />
               <title>Turn</title>
            </lockup>
            <lockup>
               <img src="path to images on your server/Car_Movie_250x375_B.png" width="150" height="226" />
               <title>Road</title>
            </lockup>
            <lockup>
               <img src="path to images on your server/Car_Movie_250x375_C.png" width="150" height="226" />
               <title>Helicopter</title>
            </lockup>
         </section>
      </shelf>
<!—- Everything past this is below the fold —->
      <shelf>
         <header>
            <title>Reviews and Ratings</title>
         </header>
         <section>
            <ratingCard>
               <title>4.1 / 5</title>
               <ratingBadge value="0.7"></ratingBadge>
               <description>Average of 2,241 iTunes user ratings and reviews.</description>
            </ratingCard>
            <ratingCard>
               <title><badge src="resource://tomato-fresh" /> 99%</title>
               <text>Tomatometer</text>
               <infoTable>
                  <info>
                     <header>
                        <title>175</title>
                     </header>
                     <text>Reviews</text>
                  </info>
                  <info>
                     <header>
                        <title>173</title>
                     </header>
                     <text>Fresh</text>
                  </info>
                  <info>
                     <header>
                        <title>2</title>
                     </header>
                     <text>Rotten</text>
                  </info>
               </infoTable>
            </ratingCard>
            <reviewCard>
               <badge src="resource://tomato-fresh-m" />
               <title>WWDC Review</title>
               <description>Brief review here</description>
               <text>Ravi Patel June, 8 2015</text>
            </reviewCard>
         </section>
      </shelf>
      <shelf>
         <header>
            <title>Cast and Crew</title>
         </header>
         <section>
            <monogramLockup>
               <monogram firstName="Anne" lastName="Johnson"/>
               <title>Anne Johnson</title>
               <subtitle>Actor</subtitle>
            </monogramLockup>
            <monogramLockup>
               <monogram firstName="Tom" lastName="Clark"/>
               <title>Tom Clark</title>
               <subtitle>Actor</subtitle>
            </monogramLockup>
            <monogramLockup>
               <monogram firstName="Maria" lastName="Ruiz"/>
               <title>Maria Ruiz</title>
               <subtitle>Actor</subtitle>
            </monogramLockup>
         </section>
      </shelf>
      <productInfo>
         <infoTable>
            <header>
               <title>Information</title>
            </header>
            <info>
               <header>
                  <title>Studio</title>
               </header>
               <text>Apple</text>
            </info>
            <info>
               <header>
                  <title>Runtime</title>
               </header>
               <text>1:54</text>
            </info>
            <info>
               <header>
                  <title>Format</title>
               </header>
               <text>Widescreen</text>
            </info>
         </infoTable>
         <infoTable>
            <header>
               <title>Languages</title>
            </header>
            <info>
               <header>
                  <title>Primary</title>
               </header>
               <text>English (Dolby 5.1), Subtitles, CC</text>
            </info>
            <info>
               <header>
                  <title>Additional</title>
               </header>
               <text>Cantonese (Subtitles)</text>
            </info>
         </infoTable>
         <infoTable style="tv-line-spacing:10;">
            <header>
               <title>Accessibility</title>
            </header>
            <info>
               <header>
                  <textBadge>SDH</textBadge>
               </header>
               <text>Subtitles for the deaf and Hard of Hearing (SDH) refer to subtitles in the original lanuage with the addition of relevant non-dialog information.</text>
            </info>
         </infoTable>
      </productInfo>
   </productTemplate>
</document>
```

The following figures show the ouput for the above example. The first figure shows
the output for the example when it first appears on screen. The second figure shows
the output below the fold as the user scrolls down the screen.

![Screenshot showing a sample product. Director and actor information is on the left, a description in the middle, and an image of the product on the right. A row of similar movies is at the bottom.](images/com.apple.TVML/producttemplate-2@2x.png)

![Screenshot showing the second page of the product. The top row contains review and ratings, the middle row contains actor information, and the bottom row contains general information about the product.](images/com.apple.TVML/producttemplate-3.png)

## Topics

### Valid TVML Attributes

[binding](/documentation/TVML/binding)

Associates information in a data item with an element.

[itemID](/documentation/TVML/itemid)

Mark elements for reuse during DOM updates.

[layoutDirection](/documentation/TVML/layoutdirection)

Specifies the direction in which text is displayed.

[prototype](/documentation/TVML/prototype)

Associates a data item type with an element.

[theme](/documentation/TVML/theme)

Sets the color scheme for an element.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)