To create a single page for each product, you only need to create one template or view in your website with a generic URL, such as yourdomain.com/product.

Then, you would feed the product slug to the URL. It is used by Shoprocket as an identifier, but in a nice format that you can read. 

To test this, you would simply navigate to your new product page, and append the slug/URL of a product with #!/ such as yourdomain.com/product#!/hello-world-product.

Of course, you'll want to be able to automatically link customers to the product pages without typing in URLs, so this can be achieved within your "sr-block" code snippet with the tag [SLUG]. 

You can create a link to the individual product page from within your product list like this:

In the above code example, we would dynamically replace [SLUG] with the product URL, so that link would become "/product#!/product-URL" 

**Full List of Classnames That Can be Used in Single Product Pages**

Once you have created your single product page, you can use the following classes to access the product data:

*Classname example*                                  *Output*

sr-name                                                         Product name

sr-description                                               Product description

sr-strapline                                                   Product strapline

sr-price                                                         Product price

sr-currency                                                   Product currency

sr-dateadded                                               Date product was added

sr-meta                                                         Comma seperated list of meta/categories of                                                                         product

sr-weight                                                      Product weight

sr-singleadditem                                         Add to cart link

**Hero Image (Product's Main Image)**

To add the hero image (the product's main image) to your page, you must use the class *sr-heroimage*. The image source and alt attributes are automatically added by Shoprocket. 

The Shoprocket image conversion API allows you to specify certain image constraints and behaviours via corresponding attributes. For example, you can resize images, crop them, set the quality, add a water mark etc.

In the following example, we return the image 200px wide and 200px in height, cropping the excess. Note: whilst width and height attributes are **not** required by Shoprocket, adding them to the image tag will help your page render faster.

Below is a table of all the image API attributes and their possible values.

*attribute*                                *values*
sr-imagewidth                          positive integer
sr-imageheight                        positive integer
sr-imagefit                                "crop", "max", "fit", "scale" 

**Image Gallery**

If you want to use an image gallery, the class *sr-imagegallery* will return all of the images for the product except the hero image. You can use any JavaScript image gallery class to render the images how you please.

Anything within the tags with the *sr-imagegallery* class will be repeated for each image.

**Product Name**

Add the name of the product using the class *sr-name* on any element, as shown below.

**Product Currency & Price**
Add the product price using the class *sr-price* on any element, as shown below. (Note: we have also added the currency with *sr-currency* in a span immediately before the price)

**Add to Cart Button/Link**
The *add to cart* button will trigger the Shoprocket modal, allowing the user to choose product options and quantity and add their selection to the basket.

**Related Products**

You can also show related products on the page using the class sr-related.

The attribute *sr-show-max* sets the maximum number of products to display.

As with the *sr-imagegallery* class, some data are only accessible via placeholders. These are [IMAGESRC] and [RELATEDSLUG]. Also, the image API is only accessible by manually supplying the parameters in the image source attribute string. In this example, we use the same page view/template for related products as the single product view (/product). This way you are always using the same template in your website.

Below is a page containing examples of many of the features listed above, which you can see in the source code. Note how it is possible to add your own classes for styling and rearranging or adding html elements.

The code for this page can be found here and you can view the page in a new tab here.

Did this answer your question?