Instructions on how to include Widgets directly into the WS.WebTV templates, by using XML code.
support, ws.webtv, advanced, customization, widgets, xml, code, templates
Widgets are "mini programs" of the WebTV that are intended for displaying content lists (Clips, Channels, Categories, Tags, News, Events, Galleries...). By this time, you should be familiarized with the managed Widgets which are created/managed from the Content Administration interface (Configuration > Widgets); well, the Embedded Widgets perform the same functions (and have the same options) but they are defined/managed directly into the Front-End template files, using XML code.
Embedded Widgets are great if you wish to include a list of content anywhere you want in a template. An example of possible use for them is the creation of portal pages where you want to include several lists of content from different categories (similar to an online press site).
It is worth metioning that these
kind of Widgets are always rendered regardless of the "enable_widgets" setting (in the _theme.ini) of the template where you are embedding the Widget.
As explained above, Embedded Widgets are defined directly into the desired Front-End template; however, in most cases there two options for supplying the HTML code used for the rendering of each Widget (content list).
Option 1: Referencing a template (.tpl) file for the Widget. In this case, the .tpl file will contain the HTML code used to render the Widget and it must be in the same folder as the rest of the Front-End template files; for example: public/common/default
<kwidget>
<widget_name>name_of_the_widget</widget_name>
... windget options ...
<widget_template>widget_template_file_name.tpl</widget_template>
</kwidget>
Option 2: Supplying the HTML code, used to render the Widget, directly.
<kwidget>
<widget_name>name_of_the_widget</widget_name>
... windget options ...
<widget_template>
<![CDATA[
... HTML code here (inside CDATA block) ...
]]>
</kwidget>
Below you will find examples for all available Widgets you can use.
Include a list of Clips....
Example 1 - providing a template file reference.
In this example we are referencing the same template file used for the managed widgets. You can use that file as reference for the HTML code and/or create one of your own from it.
<kwidget> <widget_name>clip_list</widget_name> <widget_num_clips>5</widget_num_clips> <!-- max number of items to list --> <widget_clip_type>any</widget_clip_type> <!-- possible values: any, 0 (standard), 1 (streamClip VOD), 2 (StreamClip Live), 3 (EmbedClip) --> <widget_clip_category>any</widget_clip_category> <!-- possible values: any, from_content (since v57), category ID --> <widget_clip_search></widget_clip_search> <!-- (since v57pf1) possible values: no string = for no filter, string/text for standard search, (tag)+keyword for tag search [Example: (tag)action ] --> <widget_sort_by>date</widget_sort_by> <!-- possible values: date, date2, title, duration, views, random, rating --> <widget_status>any</widget_status> <!-- possible values: featured, onsale, upcoming, any (any = all Clips which are active and approved, not "upcoming") --> <widget_template>widget_clip_list.tpl</widget_template> <!-- .tpl file name or HTML code inside CDATA --> </kwidget>
Example 2 - providing the HTML code directly.
In tis example, we have used a generic HTML code with generic CSS classes. You can change the HTML code as desired as long as you keep the CMS labels intact.
<kwidget> <widget_name>clip_list</widget_name> <widget_num_clips>5</widget_num_clips> <!-- max number of items to list --> <widget_clip_type>any</widget_clip_type> <!-- possible values: any, 0 (standard), 1 (streamClip VOD), 2 (StreamClip Live), 3 (EmbedClip) --> <widget_clip_category>any</widget_clip_category> <!-- possible values: any, from_content (since v57), category ID --> <widget_clip_search></widget_clip_search> <!-- (since v57pf1) possible values: no string = for no filter, string/text for standard search, (tag)+keyword for tag search [Example: (tag)action ] --> <widget_sort_by>date</widget_sort_by> <!-- possible values: date, date2, title, duration, views, random, rating --> <widget_status>any</widget_status> <!-- possible values: featured, onsale, upcoming, any (any = all Clips which are active and approved, not "upcoming") --> <widget_template> <!-- .tpl file name or HTML code inside CDATA --> <![CDATA[ <ul> <!-- ******************************************* The following is the data list/loop block HTML code: You can change the HTML code as desired, but you must keep intact the tags <kloop:widget_...> and </kloop:widget_...> CMS labels: You can remove the CMS labels you don't need, but you must not modify those that you keep ******************************************* --> <kloop:widget_clip_list_{widget_id}> <li> <div class="stickers"> <img class="stickerPremium" style="{k.loop.value.clip_sticker_premium_style}" src="{k.dir_public_frontend}/{k.theme}/images/spc.gif" title="{k.lang.fe.sticker_premium}" alt="" > <img class="stickerFavorited" style="{k.loop.value.clip_sticker_favorited_style}" src="{k.dir_public_frontend}/{k.theme}/images/spc.gif" title="{k.lang.fe.sticker_favorited}" alt="" > <img class="stickerFeatured" style="{k.loop.value.clip_sticker_featured_style}" src="{k.dir_public_frontend}/{k.theme}/images/spc.gif" title="{k.lang.fe.sticker_featured}" alt="" > <img class="stickerRestricted" style="{k.loop.value.clip_sticker_restricted_style}" src="{k.dir_public_frontend}/{k.theme}/images/spc.gif" title="{k.lang.fe.sticker_restricted}" alt="" > </div> <div class="image"><a href="{k.loop.value.clip_url}"><img src="{k.loop.value.clip_img_url}" alt="" ></a></div> <div class="title"><a href="{k.loop.value.clip_url}">{k.loop.value.clip_title}</a></div> <div class="description">{k.loop.value.clip_description}</div> <div class="user">{k.lang.fe.published_by_short}: <a href="{k.loop.value.clip_user_url}">{k.loop.value.clip_user_alias}</a></div> <div class="date">{k.lang.fe.date}: {k.loop.value.clip_date}</div> <div class="views">{k.lang.fe.views}: {k.loop.value.clip_views}</div> <div class="description">{k.loop.value.clip_description}</div> </li> </kloop:widget_clip_list_{widget_id}> <!-- *** end of the data list/loop block *** --> </ul> <!-- ******************************************* The following is the "more results" button HTML code: You can change the HTML code as desired CMS labels: You can remove the CMS labels you don't need, but you must not modify those that you keep ******************************************* --> <a href="{k.html.widget_more_results_link}" style="{k.html.widget_more_results_style}">{k.lang.fe.more_videos} ></a> ]]> </widget_template> </kwidget>
Include a list of Channels or Pages....
Example 1 - providing a template file reference.
In this example we are referencing the same template file used for the managed widgets. You can use that file as reference for the HTML code and/or create one of your own from it.
<kwidget> <widget_name>channel_list</widget_name> <widget_num_channels>5</widget_num_channels> <!-- max number of items to list --> <widget_channel_type>0</widget_channel_type> <!-- possible values: any, 0 (video channel), 1 (page) --> <widget_channel_category>any</widget_channel_category> <!-- possible values: any, from_content (since v57), category ID <widget_channel_search></widget_channel_search> <!-- (since v57pf1) possible values: no string = for no filter, string/text for standard search, (tag)+keyword for tag search [Example: (tag)action ] --> <widget_sort_by>date</widget_sort_by> <!-- possible values: date, date2, title, random --> <widget_status>any</widget_status> <!-- possible values: featured, onsale, upcoming, any (any = all Channels/Pages which are active and approved, not "upcoming") --> <widget_template>widget_channel_list.tpl</widget_template> <!-- .tpl file name or HTML code inside CDATA --> </kwidget>
Example 2 - providing the HTML code directly.
In tis example, we have used a generic HTML code with generic CSS classes. You can change the HTML code as desired as long as you keep the CMS labels intact.
<kwidget> <widget_name>channel_list</widget_name> <widget_num_channels>5</widget_num_channels> <!-- max number of items to list --> <widget_channel_type>0</widget_channel_type> <!-- possible values: any, 0 (video channel), 1 (page) --> <widget_channel_category>any</widget_channel_category> <!-- possible values: any, from_content (since v57), category ID --> <widget_channel_search></widget_channel_search> <!-- (since v57pf1) possible values: no string = for no filter, string/text for standard search, (tag)+keyword for tag search [Example: (tag)action ] --> <widget_sort_by>date</widget_sort_by> <!-- possible values: date, date2, title, random --> <widget_status>any</widget_status> <!-- possible values: featured, onsale, upcoming, any (any = all Channels/Pages which are active and approved, not "upcoming") --> <widget_template> <!-- .tpl file name or HTML code inside CDATA --> <![CDATA[ <ul> <!-- ******************************************* The following is the data list/loop block HTML code: You can change the HTML code as desired, but you must keep intact the tags <kloop:widget_...> and </kloop:widget_...> CMS labels: You can remove the CMS labels you don't need, but you must not modify those that you keep ******************************************* --> <kloop:widget_channel_list_{widget_id}> <li> <div class="stickers"> <img class="stickerPremium" style="{k.loop.value.channel_sticker_premium_style}" src="{k.dir_public_frontend}/{k.theme}/images/spc.gif" title="{k.lang.fe.sticker_premium}" alt="" > <img class="stickerFavorited" style="{k.loop.value.channel_sticker_favorited_style}" src="{k.dir_public_frontend}/{k.theme}/images/spc.gif" title="{k.lang.fe.sticker_favorited}" alt="" > <img class="stickerFeatured" style="{k.loop.value.channel_sticker_featured_style}" src="{k.dir_public_frontend}/{k.theme}/images/spc.gif" title="{k.lang.fe.sticker_featured}" alt="" > <img class="stickerRestricted" style="{k.loop.value.channel_sticker_restricted_style}" src="{k.dir_public_frontend}/{k.theme}/images/spc.gif" title="{k.lang.fe.sticker_restricted}" alt="" > </div> <div class="image" style="{k.loop.value.channel_txt_img_style}"><a href="{k.loop.value.channel_url}"><img src="{k.loop.value.channel_img_url}" alt="" ></a></div> <div class="title"><a href="{k.loop.value.channel_url}">{k.loop.value.channel_title}</a></div> <div class="description">{k.loop.value.channel_description}</div> <div class="user">{k.lang.fe.published_by_short}: <a href="{k.loop.value.channel_user_url}">{k.loop.value.channel_user_alias}</a></div> <div class="date">{k.lang.fe.date}: {k.loop.value.channel_date}</div> <div class="description">{k.loop.value.channel_description}</div> </li> </kloop:widget_channel_list_{widget_id}> <!-- *** end of the data list/loop block *** --> </ul> <!-- ******************************************* The following is the "more results" button HTML code: You can change the HTML code as desired CMS labels: You can remove the CMS labels you don't need, but you must not modify those that you keep ******************************************* --> <a href="{k.html.widget_more_results_link}" style="{k.html.widget_more_results_style}">{k.lang.fe.more_channels} ></a> ]]> </widget_template> </kwidget>
Include a list of News....
Example 1 - providing a template file reference.
In this example we are referencing the same template file used for the managed widgets. You can use that file as reference for the HTML code and/or create one of your own from it.
<kwidget> <widget_name>news_list</widget_name> <widget_num_news>5</widget_num_news> <!-- max number of items to list --> <widget_news_type>0</widget_news_type> <!-- possible values: 0 (latest news only) --> <widget_news_category>any</widget_news_category> <!-- possible values: any, from_content (since v57), category ID --> <widget_news_search></widget_news_search> <!-- (since v57pf1) possible values: no string = for no filter, string/text for standard search, (tag)+keyword for tag search [Example: (tag)action ] --> <widget_status>any</widget_status> <!-- possible values: featured, any (any = all News which are active and approved) --> <widget_template>widget_news_list.tpl</widget_template> <!-- .tpl file name or HTML code inside CDATA --> </kwidget>
Example 2 - providing the HTML code directly.
In tis example, we have used a generic HTML code with generic CSS classes. You can change the HTML code as desired as long as you keep the CMS labels intact.
<kwidget> <widget_name>news_list</widget_name> <widget_num_news>5</widget_num_news> <!-- max number of items to list --> <widget_news_type>0</widget_news_type> <!-- possible values: 0 (latest news only) --> <widget_news_category>any</widget_news_category> <!-- possible values: any, from_content (since v57), category ID --> <widget_news_search></widget_news_search> <!-- (since v57pf1) possible values: no string = for no filter, string/text for standard search, (tag)+keyword for tag search [Example: (tag)action ] --> <widget_status>any</widget_status> <!-- possible values: featured, any (any = all News which are active and approved) --> <widget_template> <!-- .tpl file name or HTML code inside CDATA --> <![CDATA[ <ul> <!-- ******************************************* The following is the data list/loop block HTML code: You can change the HTML code as desired, but you must keep intact the tags <kloop:widget_...> and </kloop:widget_...> CMS labels: You can remove the CMS labels you don't need, but you must not modify those that you keep ******************************************* --> <kloop:widget_news_list_{widget_id}> <li> <div class="image"><a href="{k.loop.value.news_url}"><img src="{k.loop.value.news_img_url}" alt="" ></a></div> <div class="title"><a href="{k.loop.value.news_url}">{k.loop.value.news_title}</a></div> <div class="user">{k.lang.fe.published_by_short}: <a href="{k.loop.value.news_user_url}">{k.loop.value.news_user_alias}</a></div> <div class="date">{k.loop.value.news_date}</div> <div class="description">{k.loop.value.news_description}</div> </li> </kloop:widget_news_list_{widget_id}> </ul> <!-- ******************************************* The following is the "more results" button HTML code: You can change the HTML code as desired CMS labels: You can remove the CMS labels you don't need, but you must not modify those that you keep ******************************************* --> <a href="{k.html.widget_more_results_link}" style="{k.html.widget_more_results_style}">{k.lang.fe.more_news} ></a> ]]> </widget_template> </kwidget>
Include a list of Events....
Example 1 - providing a template file reference.
In this example we are referencing the same template file used for the managed widgets. You can use that file as reference for the HTML code and/or create one of your own from it.
<kwidget> <widget_name>news_list</widget_name> <widget_num_news>5</widget_num_news> <!-- max number of items to list --> <widget_news_type>1</widget_news_type> <!-- possible values: 1 (latest events), 2 (upcoming events: events whose date is >=7 days respect current date) --> <widget_news_category>any</widget_news_category> <!-- possible values: any, from_content (since v57), category ID --> <widget_news_search></widget_news_search> <!-- (since v57pf1) possible values: no string = for no filter, string/text for standard search, (tag)+keyword for tag search [Example: (tag)action ] --> <widget_status>any</widget_status> <!-- possible values: featured, any (any = all Events which are active and approved) --> <widget_template>widget_event_list.tpl</widget_template> <!-- .tpl file name or HTML code inside CDATA --> </kwidget>
Example 2 - providing the HTML code directly.
In tis example, we have used a generic HTML code with generic CSS classes. You can change the HTML code as desired as long as you keep the CMS labels intact.
<kwidget> <widget_name>news_list</widget_name> <widget_num_news>5</widget_num_news> <!-- max number of items to list --> <widget_news_type>1</widget_news_type> <!-- possible values: 1 (latest events), 2 (upcoming events: events whose date is >=7 days respect current date) --> <widget_news_category>any</widget_news_category> <!-- possible values: any, from_content (since v57), category ID --> <widget_news_search></widget_news_search> <!-- (since v57pf1) possible values: no string = for no filter, string/text for standard search, (tag)+keyword for tag search [Example: (tag)action ] --> <widget_status>any</widget_status> <!-- possible values: featured, any (any = all Events which are active and approved) --> <widget_template> <!-- .tpl file name or HTML code inside CDATA --> <![CDATA[ <ul> <!-- ******************************************* The following is the data list/loop block HTML code: You can change the HTML code as desired, but you must keep intact the tags <kloop:widget_...> and </kloop:widget_...> CMS labels: You can remove the CMS labels you don't need, but you must not modify those that you keep ******************************************* --> <kloop:widget_news_list_{widget_id}> <li> <div class="eventCalendarIcon"> <div class="calendarMonth">{k.loop.value.news_date_month}</div> <div class="calendarDay">{k.loop.value.news_date_day}</div> </div> <div class="image"><a href="{k.loop.value.news_url}"><img src="{k.loop.value.news_img_url}" alt="" ></a></div> <div class="title"><a href="{k.loop.value.news_url}">{k.loop.value.news_title}</a></div> <div class="user">{k.lang.fe.published_by_short}: <a href="{k.loop.value.news_user_url}">{k.loop.value.news_user_alias}</a></div> <div class="date">{k.loop.value.news_date} <span class="{k.loop.value.news_date_status_class}">{k.loop.value.news_date_status} </span></div> <div class="description">{k.loop.value.news_description}</div> </li> </kloop:widget_news_list_{widget_id}> </ul> <!-- ******************************************* The following is the "more results" button HTML code: You can change the HTML code as desired CMS labels: You can remove the CMS labels you don't need, but you must not modify those that you keep ******************************************* --> <a href="{k.html.widget_more_results_link}" style="{k.html.widget_more_results_style}">{k.lang.fe.more_events} ></a> ]]> </widget_template> </kwidget>
Include a list of Galleries....
Example 1 - providing a template file reference.
In this example we are referencing the same template file used for the managed widgets. You can use that file as reference for the HTML code and/or create one of your own from it.
<kwidget> <widget_name>gallery_list</widget_name> <widget_num_galleries>5</widget_num_galleries> <!-- max number of items to list --> <widget_sort_by>date</widget_sort_by> <!-- possible values: date, title, views, random --> <widget_gallery_category>any</widget_gallery_category> <!-- possible values: any, from_content (since v57), category ID --> <widget_gallery_search></widget_gallery_search> <!-- (since v57pf1) possible values: no string = for no filter, string/text for standard search, (tag)+keyword for tag search [Example: (tag)action ] --> <widget_status>any</widget_status> <!-- possible values: featured, any (any = all Galleries which are active and approved) --> <widget_template>widget_gallery_list.tpl</widget_template> <!-- .tpl file name or HTML code inside CDATA --> </kwidget>
Example 2 - providing the HTML code directly.
In tis example, we have used a generic HTML code with generic CSS classes. You can change the HTML code as desired as long as you keep the CMS labels intact.
<kwidget> <widget_name>gallery_list</widget_name> <widget_num_galleries>5</widget_num_galleries> <!-- max number of items to list --> <widget_sort_by>date</widget_sort_by> <!-- possible values: date, title, views, random --> <widget_gallery_category>any</widget_gallery_category> <!-- possible values: any, from_content (since v57), category ID --> <widget_gallery_search></widget_gallery_search> <!-- (since v57pf1) possible values: no string = for no filter, string/text for standard search, (tag)+keyword for tag search [Example: (tag)action ] --> <widget_status>any</widget_status> <!-- possible values: featured, any (any = all Galleries which are active and approved) --> <widget_template> <!-- .tpl file name or HTML code inside CDATA --> <![CDATA[ <ul> <!-- ******************************************* The following is the data list/loop block HTML code: You can change the HTML code as desired, but you must keep intact the tags <kloop:widget_...> and </kloop:widget_...> CMS labels: You can remove the CMS labels you don't need, but you must not modify those that you keep ******************************************* --> <kloop:widget_gallery_list_{widget_id}> <li> <div class="stickers"> <img class="stickerPremium" style="{k.loop.value.gallery_sticker_premium_style}" src="{k.dir_public_frontend}/{k.theme}/images/spc.gif" title="{k.lang.fe.sticker_premium}" alt="" > <img class="stickerFavorited" style="{k.loop.value.gallery_sticker_favorited_style}" src="{k.dir_public_frontend}/{k.theme}/images/spc.gif" title="{k.lang.fe.sticker_favorited}" alt="" > <img class="stickerFeatured" style="{k.loop.value.gallery_sticker_featured_style}" src="{k.dir_public_frontend}/{k.theme}/images/spc.gif" title="{k.lang.fe.sticker_featured}" alt="" > <img class="stickerRestricted" style="{k.loop.value.gallery_sticker_restricted_style}" src="{k.dir_public_frontend}/{k.theme}/images/spc.gif" title="{k.lang.fe.sticker_restricted}" alt="" > </div> <div class="image"><a href="{k.loop.value.gallery_url}"><img src="{k.loop.value.gallery_img_url}" alt="" ></a></div> <div class="title"><a href="{k.loop.value.gallery_url}">{k.loop.value.gallery_title}</a></div> <div class="user">{k.lang.fe.published_by_short}: <a href="{k.loop.value.gallery_user_url}">{k.loop.value.gallery_user_alias}</a></div> <div class="date">{k.lang.fe.date}: {k.loop.value.gallery_date}</div> <div class="description">{k.loop.value.gallery_description}</div> </li> </kloop:widget_gallery_list_{widget_id}> </ul> <!-- ******************************************* The following is the "more results" button HTML code: You can change the HTML code as desired CMS labels: You can remove the CMS labels you don't need, but you must not modify those that you keep ******************************************* --> <a href="{k.html.widget_more_results_link}" style="{k.html.widget_more_results_style}">{k.lang.fe.more_galleries} ></a> ]]> </widget_template> </kwidget>
Include a list of Categories....
Example 1 - No template: Until WS.WebTV v56pf3, this Widget did not allow providing a template because the list was generated, internally, as an ul > li nested HTML structure.
<kwidget> <widget_name>category_list</widget_name> <widget_depth>1</widget_depth> <!-- possible values: 1, 2, 3, 4. Max category depth nesting level (1-4); for example 1 = list main categories without subcategories --> <widget_template></widget_template> <!-- no need to specify a template: The list will be generated as an ul > li nested structure --> </kwidget>
Example 2 - providing a template file reference (since WS.WebTV v56pf4).
In this example we are referencing the same "Default" template file used for the managed widgets. You can use that file as reference for the HTML code and/or create one of your own from it.
<kwidget> <widget_name>category_list</widget_name> <widget_depth>1</widget_depth> <!-- possible values: 1, 2, 3, 4. Max category depth nesting level (1-4); for example 1 = list main categories without subcategories --> <widget_template>widget_category_list.tpl</widget_template> <!-- .tpl file name or HTML code inside CDATA --> </kwidget>
Example 3 - providing the HTML code directly (since WS.WebTV v56pf4).
In tis example, we have used a generic HTML code with generic CSS classes. You can change the HTML code as desired as long as you keep the CMS labels intact.
<kwidget> <widget_name>category_list</widget_name> <widget_depth>1</widget_depth> <!-- possible values: 1, 2, 3, 4. Max category depth nesting level (1-4); for example 1 = list main categories without subcategories --> <widget_template> <!-- .tpl file name or HTML code inside CDATA --> <![CDATA[ <div class="itemListWrapper categoryList"> <ul class="itemList"> <!-- ******************************************* The following is the data list/loop block HTML code: You can change the HTML code as desired, but you must keep intact the tags <kloop:widget_...> and </kloop:widget_...> CMS labels: You can remove the CMS labels you don't need, but you must not modify those that you keep ******************************************* --> <kloop:widget_category_list_{widget_id}> <li class="item category level{k.loop.value.category_level}" data-id="category_{k.loop.value.category_id}"> <div class="image"> <a href="{k.loop.value.category_url}"><img src="{k.loop.value.category_img_social_url}"></a> </div> <div class="text"> <h4 class="title"><a href="{k.loop.value.category_url}">{k.loop.value.category_title}</a></h4> <!--<div class="description">{k.loop.value.category_description}</div>--> </div> </li> </kloop:widget_category_list_{widget_id}> </ul> </div> ]]> </widget_template> </kwidget>
Include a Tag cloud....
No template: This Widget does not require providing any template because the list is generated as an ul > li HTML structure.
Example.
<kwidget> <widget_name>tags</widget_name> <widget_num_tags>10</widget_num_tags> <!-- max number of items to list --> <widget_tag_cloud_type>global</widget_tag_cloud_type> <!-- possible values: global (tags gathered from all content), clips (tags gathered from clips) --> <widget_template></widget_template> <!-- no need to specify a template: The list will be generated as ul > li structure --> </kwidget>
Include the list of built-in products of the Store extension....
Example 1 - providing a template file reference.
In this example we are referencing the same template file used for the managed widgets. You can use that file as reference for the HTML code and/or create one of your own from it.
<kwidget> <widget_name>store_built_in_product_list</widget_name> <widget_item_list_include_built_in>1</widget_item_list_include_built_in> <!-- possible values: 0 (no), 1 (yes) - whether to include "global products" --> <widget_item_list_include_memberships>0</widget_item_list_include_memberships> <!-- possible values: 0 (no), 1 (yes) - whether to include "membership" products --> <widget_item_list_include_services>0</widget_item_list_include_services> <!-- possible values: 0 (no), 1 (yes) - whether to include "service" products --> <widget_item_list_include_donations>0</widget_item_list_include_donations> <!-- possible values: 0 (no), 1 (yes) - whether to include "donation" products --> <widget_template>widget_store_product_list.tpl</widget_template> <!-- .tpl file name or HTML code inside CDATA --> </kwidget>
Example 2 - providing the HTML code directly.
In tis example, we have used a generic HTML code with generic CSS classes. You can change the HTML code as desired as long as you keep the CMS labels intact.
<kwidget> <widget_name>store_built_in_product_list</widget_name> <widget_item_list_include_built_in>1</widget_item_list_include_built_in> <!-- possible values: 0 (no), 1 (yes) - whether to include "global products" --> <widget_item_list_include_memberships>0</widget_item_list_include_memberships> <!-- possible values: 0 (no), 1 (yes) - whether to include "membership" products --> <widget_item_list_include_services>0</widget_item_list_include_services> <!-- possible values: 0 (no), 1 (yes) - whether to include "service" products --> <widget_item_list_include_donations>0</widget_item_list_include_donations> <!-- possible values: 0 (no), 1 (yes) - whether to include "donation" products --> <widget_template> <!-- .tpl file name or HTML code inside CDATA --> <![CDATA[ <ul> <!-- ******************************************* The following is the data list/loop block HTML code: You can change the HTML code as desired, but you must keep intact the tags <kloop:widget_...> and </kloop:widget_...> CMS labels: You can remove the CMS labels you don't need, but you must not modify those that you keep ******************************************* --> <kloop:widget_store_product_list_{widget_id}> <li> <div class="image"><a href="{k.loop.value.product_url}"><img src="{k.loop.value.product_img_url}" alt="" ></a></div> <div class="title"><a href="{k.loop.value.product_url}">{k.loop.value.product_title}</a></div> <div class="description">{k.loop.value.product_description}</div> </li> </kloop:widget_store_product_list_{widget_id}> </ul> ]]> </widget_template> </kwidget>