This article explains how to create custom promoted links/tiles in SharePoint with custom sorting.
Technologies Used
- HTML CSS for building tile-like structure.
- CSOM to get data from SharePoint list.
- Knockout JS for binding list data with UI.
Prerequisite
- Add the promoted links app to your site.(I have given it a name as “CustomTiles”). You can use a custom list as well, with the same columns as in promoted links.
- Add a picture library for background images of the promoted links. (Given name as “picsForTiles”).
- Add some data in promoted links app, i.e., “CustomTiles” list.
Below is the screenshot of the application with some random data.


HTML
Add the following HTML with required files in HTML file.
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
- <html>
- <head>
- <title>Custom Promoted Links</title>
- <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
- <script src="/SiteAssets/JS/getTilesData.js"></script>
- <link rel="stylesheet" href=" /SiteAssets/CSS/customTiles.css" /> </head>
- <body>
- <!--HTML Content--><input type="button" value="Sort By Title" data-bind="click: sortedtilesByTitle()"> <input type="button" value="Sort By Order" data-bind="click: sortedtilesByOrder()"><br/><br/>
- <div class="mainContainer" data-bind="foreach:tiles">
- <div class='card slide-up'>
- <div><img class='image' data-bind="attr:{src: backImage}"> </div>
- <div class='caption'>
- <h2 class='caption-title' data-bind="text:title"></h2>
- <p class='caption-content' data-bind="text:desc"> </p>
- </div>
- </div>
- </div>
- </body>
- </html>
CSS
Content of customTiles.css file is as below.
- .card {
- position: relative;
- width: 200 px;
- height: 200 px;
- float: left;
- margin: 0 10 px 10 px 0;
- cursor: pointer;
- background - color: #ffffff;
- overflow: hidden;
- box - shadow: 0 3 px 6 px rgba(0, 0, 0, 0.16),
- 0 3 px 6 px rgba(0, 0, 0, 0.23);
- }.image {
- width: 200 px;
- height: 200 px;
- background - position: center;
- background - size: cover;
- background - repeat: no - repeat; - webkit - transition - property: -webkit - transform;
- transition - property: -webkit - transform;
- transition - property: transform;
- transition - property: transform,
- -webkit - transform; - webkit - transition - duration: 0.4 s;
- transition - duration: 0.4 s;
- }.caption {
- position: absolute;
- top: auto;
- bottom: 0;
- opacity: 0;
- left: 0;
- width: 100 % ;
- height: 100 px;
- background - color: #ffffff;
- padding: 15 px; - webkit - transform: translateY(100 % );
- transform: translateY(100 % ); - webkit - backface - visibility: hidden;
- backface - visibility: hidden; - webkit - transition: opacity 0.1 s 0.3 s,
- -webkit - transform 0.4 s;
- transition: opacity 0.1 s 0.3 s,
- -webkit - transform 0.4 s;
- transition: transform 0.4 s,
- opacity 0.1 s 0.3 s;
- transition: transform 0.4 s,
- opacity 0.1 s 0.3 s,
- -webkit - transform 0.4 s;
- }.caption - title {
- margin - top: 0;
- margin - bottom: 10 px;
- }.caption - content {
- margin: 0;
- }.caption - link {
- color: #724b31;
- text - decoration: none;
- opacity: 1; - webkit - transition - property: opacity;
- transition - property: opacity; - webkit - transition - duration: 0.15 s;
- transition - duration: 0.15 s; - webkit - transition - timing - function: cubic - bezier(0.39, 0.58, 0.57, 1);
- transition - timing - function: cubic - bezier(0.39, 0.58, 0.57, 1);
- }.caption - link: hover {
- opacity: 0.65;
- }.slide - up: hover.image {
- -webkit - transform: translateY(-50 px);
- transform: translateY(-50 px);
- }.slide - up: hover.caption {
- opacity: 1; - webkit - transform: translateY(0 px);
- transform: translateY(0 px); - webkit - transition: opacity 0.1 s,
- -webkit - transform 0.4 s;
- transition: opacity 0.1 s,
- -webkit - transform 0.4 s;
- transition: transform 0.4 s,
- opacity 0.1 s;
- transition: transform 0.4 s,
- opacity 0.1 s,
- -webkit - transform 0.4 s;
- }



Chakradhar NallamothulaPosted Oct 16, 2018, 2:14 PM
Hyperlink is not working for the file and how to display the 4 tiles per row?
Prajakta PatilPosted Jun 20, 2018, 8:06 AM
Yes it would as you can create normal custom list as well instead of promoted links.
T SekharPosted Jun 20, 2018, 6:53 AM
Is it work in sp 2010?
Piyush AgarwalPosted Mar 7, 2018, 11:02 AM
We can also use tile app part which is provided by Sharepoint OOTB. This also looks great with sorting feature....