{"id":5160,"date":"2025-12-16T14:12:50","date_gmt":"2025-12-16T05:12:50","guid":{"rendered":"https:\/\/storecrm.com\/help\/?p=5160"},"modified":"2026-09-04T12:46:13","modified_gmt":"2026-09-04T03:46:13","slug":"favorite-list-page-customize","status":"publish","type":"post","link":"https:\/\/storecrm.com\/help\/en\/setting\/favorite-list-page-customize\/","title":{"rendered":"Customize the favorite list page with Liquid \u2014 three examples"},"content":{"rendered":"<p class=\"wp-block-paragraph\">StoreCRM's Advanced mode (Liquid) lets you edit the favorite list page structure, displayed product and variant information, and appearance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This page explains the three input areas, values provided by StoreCRM, how to display more than 20 favorites, and customization examples you can copy.<\/p>\n\n\n<!-- storecrm-sprint33:start:favorite-filter-sort -->\n<h2>Using Simple mode<\/h2><p>This page focuses on Advanced mode (Liquid). To adjust the list without editing code, use Simple mode on the [List screen] tab. Turn on [Standard display: show filtering and sorting] to provide sorting controls for both product-level and variant-level favorites.<\/p><p>A storefront preview appears on the right side of the settings screen. Check placement and wording before saving. Continue to Advanced mode below to edit Liquid or CSS.<\/p>\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1365\" height=\"1000\" src=\"https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-filter-sort-setting-20260903.png\" alt=\"Simple mode filtering and sorting settings with storefront preview\" class=\"wp-image-6144\" srcset=\"https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-filter-sort-setting-20260903.png 1365w, https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-filter-sort-setting-20260903-300x220.png 300w, https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-filter-sort-setting-20260903-1024x750.png 1024w, https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-filter-sort-setting-20260903-768x563.png 768w, https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-filter-sort-setting-20260903-16x12.png 16w\" sizes=\"(max-width: 1365px) 100vw, 1365px\" \/><\/figure>\n<!-- storecrm-sprint33:end:favorite-filter-sort -->\n\n<h2 class=\"wp-block-heading\">Open Advanced mode<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In StoreCRM, open Settings \u2192 Favorite settings \u2192 Favorite list page, then select Advanced mode (Liquid).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Advanced mode can be edited only while the store's default language is selected.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1365\" height=\"1000\" src=\"https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-advanced-fields-20260903.png\" alt=\"Page Liquid, Item template, and Custom CSS inputs in Advanced mode for the favorite list page\" class=\"wp-image-6146\" srcset=\"https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-advanced-fields-20260903.png 1365w, https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-advanced-fields-20260903-300x220.png 300w, https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-advanced-fields-20260903-1024x750.png 1024w, https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-advanced-fields-20260903-768x563.png 768w, https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-advanced-fields-20260903-16x12.png 16w\" sizes=\"(max-width: 1365px) 100vw, 1365px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Roles of the three input areas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The screen contains Page Liquid file, Item template, and Custom CSS input areas.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Input area<\/th><th>Role<\/th><th>Main editable content<\/th><\/tr><\/thead><tbody><tr><td>Page Liquid file<\/td><td>Defines the overall favorite list page.<\/td><td>Edit the heading, empty-state message, item insertion point, and Load more button.<\/td><\/tr><tr><td>Item template<\/td><td>Defines each item displayed in the list.<\/td><td>Edit the product image, name, stock status, add-to-cart button, and remove-from-favorites button.<\/td><\/tr><tr><td>Custom CSS<\/td><td>Controls the appearance of the page and items.<\/td><td>Edit colors, spacing, font sizes, columns, and mobile layout.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Separate item templates are saved for product-level and variant-level favorites.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The screen shows only the template for the currently selected favorite unit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For Product favorites edit the product template; for Variant favorites edit the variant template.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Page Liquid file<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This template wraps the entire page.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">StoreCRM uses the following three elements for rendering. Do not remove them.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>{{ custom_css }}<\/code>: insertion point for custom CSS<\/li><li><code>{{ favorite_items }}<\/code>: insertion point for rendered item templates<\/li><li><code>data-storecrm-items<\/code>: attribute used by StoreCRM to identify the item area<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><code>{{ favorite_items }}<\/code>On the element containing<code>data-storecrm-items<\/code>also add<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Item template<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Reference the array provided by StoreCRM using the same<code>index<\/code>and render each item.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Item templates are not repeated automatically, so the template requires the following loop.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{% if storecrm_item_count and storecrm_item_count &gt; 0 %}\n  {% for index in (0..storecrm_item_last_index) %}\n    {% assign item_title = storecrm_item_titles[index] %}\n    {{ item_title }}\n  {% endfor %}\n{% endif %}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Custom CSS<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Style the page by targeting class names used in the Page Liquid file and item template.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>&lt;style&gt;<\/code>Enter CSS only without style tags.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Values passed from StoreCRM to Liquid<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Advanced mode provides synchronized display values and values for controlling the list.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Synchronized display values<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Variable<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><code>storecrm_item_titles[index]<\/code><\/td><td>Product name. For variant-level favorites it can include the variant name.<\/td><\/tr><tr><td><code>storecrm_item_urls[index]<\/code><\/td><td>Product page URL. For variant-level favorites it points to the selected variant.<\/td><\/tr><tr><td><code>storecrm_item_thumbnail_urls[index]<\/code><\/td><td>Product image URL.<\/td><\/tr><tr><td><code>storecrm_item_availables[index]<\/code><\/td><td>is used when available for purchase; otherwise<code>'true'<\/code>is used<code>'false'<\/code>It is.<\/td><\/tr><tr><td><code>storecrm_item_product_ids[index]<\/code><\/td><td>Shopify product ID.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Use StoreCRM synchronized values for product name, URL, image, and stock status.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use the same<code>index<\/code>to correctly combine values for the same item.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{% assign item_title = storecrm_item_titles[index] | default: product.title %}\n{% assign item_url = storecrm_item_urls[index] | default: product.url %}\n{% assign item_thumbnail = storecrm_item_thumbnail_urls[index] %}\n{% assign item_available = storecrm_item_availables[index] %}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>default<\/code>The expression to the right of<code>product.title<\/code>and ... and<code>product.url<\/code>is a fallback when the synchronized value is empty.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">StoreCRM synchronized values are normally used, so the fallback can be omitted.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Keep the fallback to preserve display immediately after synchronization or when some data is empty.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Values for list control and actions<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Variable<\/th><th>Description<\/th><th>Main use<\/th><\/tr><\/thead><tbody><tr><td><code>storecrm_favorite_total_count<\/code><\/td><td>Total number of favorites<\/td><td>Determines whether there are no favorites.<\/td><\/tr><tr><td><code>storecrm_item_count<\/code><\/td><td>Number of items loaded this time<\/td><td>Determines whether the current page has items.<\/td><\/tr><tr><td><code>storecrm_item_handles[index]<\/code><\/td><td>Product handle<\/td><td>Passes the product to the add-to-cart operation.<\/td><\/tr><tr><td><code>storecrm_item_variant_ids[index]<\/code><\/td><td>Variant ID<\/td><td>Used for adding to cart and removing variant-level favorites.<\/td><\/tr><tr><td><code>storecrm_item_last_index<\/code><\/td><td>Last index of the array loaded this time<\/td><td><code>0<\/code>Loop from the starting index through this value.<\/td><\/tr><tr><td><code>storecrm_has_next_page<\/code><\/td><td>Whether another page exists<\/td><td>Determines whether the Load more button appears.<\/td><\/tr><tr><td><code>storecrm_next_cursor<\/code><\/td><td>Cursor for retrieving the next page<\/td><td>Set this on the Load more button without modifying the value.<\/td><\/tr><tr><td><code>mode<\/code><\/td><td>Favorite unit<\/td><td><code>product<\/code>or<code>variant<\/code>is determined.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Display more than 20 favorites<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Current Advanced mode can display more than 20 favorites while using StoreCRM synchronized values.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">StoreCRM retrieves up to 20 items at a time and appends them to the same list.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Initial display and preview automatically load up to five pages or 100 items. The Load more button remains when more items exist.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{% if storecrm_has_next_page and storecrm_next_cursor != blank %}\n  &lt;button\n    type=\"button\"\n    class=\"manual-favorites__more storecrm_customlist_load_more\"\n    data-storecrm-next-cursor=\"{{ storecrm_next_cursor }}\"\n    style=\"display:none;\"\n  &gt;\n    Load more\n  &lt;\/button&gt;\n{% endif %}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>storecrm_next_cursor<\/code>identifies the next data set. Do not split or transform it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The legacy single-template format is limited to 20 items.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If using the legacy format, migrate to the current separate Page Liquid file, Item template, and Custom CSS format.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to modify the default code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The default Advanced mode code works as a favorite list without modification.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You do not need to understand all of the code. Edit the relevant input area for the desired change.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>To change text, edit headings and button labels in the Page Liquid file or Item template.<\/li><li>To change colors, spacing, or columns, edit Custom CSS.<\/li><li>To reposition product images or names, edit the item template HTML.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Required parts of the Page Liquid file<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">StoreCRM uses the following three elements to display favorites.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>{{ custom_css }}<\/code>: loads the content entered in Custom CSS.<\/li><li><code>{{ favorite_items }}<\/code>: displays favorite products.<\/li><li><code>data-storecrm-items<\/code>: tells StoreCRM where to display products.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><code>{{ favorite_items }}<\/code>must be<code>data-storecrm-items<\/code>placed inside the element with the required attribute. Do not move these two parts separately.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Load more section loads favorites after the first 20. Keep it to display more than 20 items.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Required parts of the item template<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The default code combines product name, URL, image, and stock status from StoreCRM for each item. You can rearrange the surrounding HTML or add class names.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">the add-to-cart button's<code>data-cart-<\/code>Keep attributes beginning with the required prefix and the remove button's<code>data-product-id<\/code>, ,<code>data-variant-id<\/code>. Removing them prevents buttons from identifying the target product.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Product-level and variant-level templates are saved separately. Review both when using both favorite units.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What you can change with custom CSS<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Custom CSS controls columns, image size, text color, spacing, and mobile layout. Edit only CSS when product information and button behavior should remain unchanged.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Three favorite list design examples<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For the three examples below, first use the shared Page Liquid and item template, then switch Custom CSS for each example.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use StoreCRM synchronized values for name, URL, image, and stock status, with Shopify product information as a fallback for price and product type.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Store name, menu, currency, and search shown above each example come from the Shopify theme and are not included in the code.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Page Liquid shared by all three examples<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Paste the following code into Page Liquid file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{% assign list_title = &#039;Favorites&#039; %}\n{% assign list_title_suffix = &#039;&#039; %}\n{% assign item_unit_text = &#039;items&#039; %}\n{% assign item_count_text = &#039;items&#039; %}\n{% assign empty_text = &#039;There are currently no favorite items.&#039; %}\n{% assign more_text = &#039;Load more&#039; %}\n\n{{ custom_css }}\n\n&lt;section class=&quot;manual-favorites&quot;&gt;\n  &lt;header class=&quot;manual-favorites__header&quot;&gt;\n    &lt;h1 class=&quot;manual-favorites__title&quot;&gt;\n      {{ list_title }}&lt;span class=&quot;manual-favorites__title-suffix&quot;&gt;{{ list_title_suffix }}&lt;\/span&gt;\n    &lt;\/h1&gt;\n    &lt;p class=&quot;manual-favorites__count&quot;&gt;\n      &lt;span&gt;{{ storecrm_favorite_total_count }}&lt;\/span&gt;\n      &lt;span class=&quot;manual-favorites__unit manual-favorites__unit--items&quot;&gt;{{ item_unit_text }}&lt;\/span&gt;\n      &lt;span class=&quot;manual-favorites__unit manual-favorites__unit--count&quot;&gt;{{ item_count_text }}&lt;\/span&gt;\n    &lt;\/p&gt;\n  &lt;\/header&gt;\n\n  &lt;nav class=&quot;manual-favorites__breadcrumb&quot; aria-label=&quot;Breadcrumb&quot;&gt;\n    &lt;a href=&quot;\/help\/en\/&quot;&gt;Home&lt;\/a&gt;\n    &lt;span aria-hidden=&quot;true&quot;&gt;\/&lt;\/span&gt;\n    &lt;span&gt;{{ list_title }}&lt;\/span&gt;\n  &lt;\/nav&gt;\n\n  {% if storecrm_favorite_total_count == 0 %}\n    &lt;p class=&quot;manual-favorites__empty&quot;&gt;{{ empty_text }}&lt;\/p&gt;\n  {% endif %}\n\n  &lt;div class=&quot;manual-favorites__items&quot; data-storecrm-items&gt;\n    {{ favorite_items }}\n  &lt;\/div&gt;\n\n  {% if storecrm_has_next_page and storecrm_next_cursor != blank %}\n    &lt;button\n      type=&quot;button&quot;\n      class=&quot;manual-favorites__more storecrm_customlist_load_more&quot;\n      data-storecrm-next-cursor=&quot;{{ storecrm_next_cursor }}&quot;\n      style=&quot;display:none;&quot;\n    &gt;\n      {{ more_text }}\n    &lt;\/button&gt;\n  {% endif %}\n&lt;\/section&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Item template shared by all three examples<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Next paste the following code into Item template.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This code checks<code>mode<\/code>to determine the favorite unit and works for both product-level and variant-level templates.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{% if storecrm_item_count and storecrm_item_count &gt; 0 %}\n  {% for index in (0..storecrm_item_last_index) %}\n    {% assign item_handle = storecrm_item_handles[index] %}\n    {% assign product = all_products[item_handle] %}\n    {% assign product_id = storecrm_item_product_ids[index] %}\n    {% assign variant_id = storecrm_item_variant_ids[index] %}\n    {% assign item_title = storecrm_item_titles[index] | default: product.title %}\n    {% assign item_url = storecrm_item_urls[index] | default: product.url | default: &#039;#&#039; %}\n    {% assign item_thumbnail = storecrm_item_thumbnail_urls[index] %}\n    {% assign item_available = storecrm_item_availables[index] %}\n    {% assign item_category = product.type | default: product.vendor %}\n    {% assign display_variant = product.selected_or_first_available_variant | default: product.variants.first %}\n\n    {% if mode == &#039;variant&#039; and variant_id != blank and product != blank %}\n      {% for variant in product.variants %}\n        {% assign candidate_id = variant.id | append: &#039;&#039; %}\n        {% if candidate_id == variant_id %}\n          {% assign display_variant = variant %}\n          {% break %}\n        {% endif %}\n      {% endfor %}\n    {% endif %}\n\n    {% assign cart_variant_id = variant_id | default: display_variant.id %}\n    {% assign row_id = product_id %}\n    {% if mode == &#039;variant&#039; and variant_id != blank %}\n      {% assign row_id = variant_id %}\n    {% endif %}\n\n    &lt;article class=&quot;manual-favorite-item storecrm_customlist_id-{{ row_id }}&quot;&gt;\n      &lt;a class=&quot;manual-favorite-item__image&quot; href=&quot;\/help\/en\/{{ item_url }}\/&quot;&gt;\n        {% if item_thumbnail != blank %}\n          &lt;img src=&quot;{{ item_thumbnail }}&quot; alt=&quot;{{ item_title | escape }}&quot; loading=&quot;lazy&quot;&gt;\n        {% endif %}\n      &lt;\/a&gt;\n\n      &lt;div class=&quot;manual-favorite-item__body&quot;&gt;\n        {% if item_category != blank %}\n          &lt;p class=&quot;manual-favorite-item__category&quot;&gt;{{ item_category }}&lt;\/p&gt;\n        {% endif %}\n\n        &lt;h2 class=&quot;manual-favorite-item__name&quot;&gt;\n          &lt;a href=&quot;\/help\/en\/{{ item_url }}\/&quot;&gt;{{ item_title }}&lt;\/a&gt;\n        &lt;\/h2&gt;\n\n        {% if item_available == &#039;true&#039; %}\n          &lt;p class=&quot;manual-favorite-item__status is-available&quot;&gt;In stock&lt;\/p&gt;\n        {% else %}\n          &lt;p class=&quot;manual-favorite-item__status is-unavailable&quot;&gt;Out of stock&lt;\/p&gt;\n        {% endif %}\n\n        {% if display_variant != blank %}\n          &lt;p class=&quot;manual-favorite-item__price&quot;&gt;\n            &lt;span class=&quot;manual-favorite-item__price-current&quot;&gt;{{ display_variant.price | money }}&lt;\/span&gt;\n            &lt;span class=&quot;manual-favorite-item__price-tax&quot;&gt;Tax included&lt;\/span&gt;\n            {% if display_variant.compare_at_price and display_variant.compare_at_price &gt; display_variant.price %}\n              &lt;span class=&quot;manual-favorite-item__price-before&quot;&gt;{{ display_variant.compare_at_price | money }}&lt;\/span&gt;\n            {% endif %}\n          &lt;\/p&gt;\n        {% endif %}\n\n        &lt;div class=&quot;manual-favorite-item__actions&quot;&gt;\n          {% if item_available == &#039;true&#039; and cart_variant_id != blank %}\n            &lt;a\n              class=&quot;manual-favorite-item__cart&quot;\n              href=&quot;\/help\/en\/{{ item_url }}\/&quot;\n              data-cart-variant-id=&quot;{{ cart_variant_id }}&quot;\n              data-cart-product-id=&quot;{{ product_id }}&quot;\n              data-cart-product-handle=&quot;{{ item_handle }}&quot;\n            &gt;\n              Add to cart\n            &lt;\/a&gt;\n          {% endif %}\n\n          &lt;a class=&quot;manual-favorite-item__view&quot; href=&quot;\/help\/en\/{{ item_url }}\/&quot;&gt;View product&lt;\/a&gt;\n\n          &lt;a\n            class=&quot;manual-favorite-item__remove&quot;\n            href=&quot;\/help\/en\/{{ item_url }}\/&quot;\n            data-product-id=&quot;{{ product_id }}&quot;\n            {% if mode =&quot;=&quot; &#039;variant&#039; and variant_id != &quot;blank&quot; %}\n data-variant-id=&quot;{{ variant_id }}&quot;\n            endif&gt;\n            &lt;span class=&quot;manual-favorite-item__heart&quot; aria-hidden=&quot;true&quot;&gt;&hearts;&lt;\/span&gt;\n            &lt;span class=&quot;manual-favorite-item__remove-label&quot;&gt;Remove from favorites&lt;\/span&gt;\n          &lt;\/a&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    &lt;\/article&gt;\n  {% endfor %}\n{% endif %}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Simple card layout<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Displays products as three-column cards with image, name, price, stock status, and cart button.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"671\" height=\"786\" src=\"https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-card-20260903.png\" alt=\"Favorite list with products in three-column cards\" class=\"wp-image-6148\" srcset=\"https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-card-20260903.png 671w, https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-card-20260903-256x300.png 256w, https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-card-20260903-10x12.png 10w\" sizes=\"(max-width: 671px) 100vw, 671px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Paste the following code into Custom CSS.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.manual-favorites {\n  max-width: 1200px;\n  margin: 32px auto 80px;\n  padding: 0 20px;\n  color: #222;\n}\n.manual-favorites__header {\n  display: flex;\n  align-items: flex-end;\n  gap: 12px;\n  margin-bottom: 18px;\n}\n.manual-favorites__title {\n  margin: 0;\n  font-size: 32px;\n}\n.manual-favorites__title-suffix {\n  display: none;\n}\n.manual-favorites__count {\n  margin: 0 0 3px;\n  font-size: 14px;\n  font-weight: 700;\n}\n.manual-favorites__unit--count {\n  display: none;\n}\n.manual-favorites__breadcrumb {\n  display: flex;\n  gap: 12px;\n  margin-bottom: 28px;\n  color: #777;\n  font-size: 13px;\n}\n.manual-favorites__breadcrumb a {\n  color: inherit;\n  text-decoration: none;\n}\n.manual-favorites__items {\n  display: grid;\n  grid-template-columns: repeat(3, minmax(0, 1fr));\n  gap: 24px 20px;\n}\n.manual-favorite-item {\n  position: relative;\n  border: 1px solid #ececec;\n  background: #fff;\n}\n.manual-favorite-item__image {\n  display: block;\n  aspect-ratio: 1 \/ 1;\n  overflow: hidden;\n  background: #f6f6f6;\n}\n.manual-favorite-item__image img {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n}\n.manual-favorite-item__body {\n  padding: 14px;\n}\n.manual-favorite-item__category {\n  display: none;\n}\n.manual-favorite-item__name {\n  margin: 0 0 12px;\n  font-size: 16px;\n}\n.manual-favorite-item__name a {\n  color: inherit;\n  text-decoration: none;\n}\n.manual-favorite-item__status {\n  display: inline-flex;\n  margin: 0 0 12px;\n  padding: 5px 8px;\n  border: 1px solid #ddd;\n  font-size: 12px;\n}\n.manual-favorite-item__status.is-unavailable {\n  border-color: #e9b4b4;\n  color: #b00020;\n  background: #fff7f7;\n}\n.manual-favorite-item__price {\n  display: flex;\n  align-items: baseline;\n  gap: 8px;\n  margin: 0 0 14px;\n}\n.manual-favorite-item__price-current {\n  font-size: 16px;\n  font-weight: 700;\n}\n.manual-favorite-item__price-tax,\n.manual-favorite-item__price-before {\n  color: #777;\n  font-size: 11px;\n}\n.manual-favorite-item__price-before {\n  text-decoration: line-through;\n}\n.manual-favorite-item__actions {\n  display: grid;\n  gap: 10px;\n}\n.manual-favorite-item__cart {\n  display: inline-flex;\n  justify-content: center;\n  align-items: center;\n  min-height: 46px;\n  padding: 10px 14px;\n  border: 1px solid #111;\n  color: #fff;\n  background: #111;\n  text-decoration: none;\n}\n.manual-favorite-item__view {\n  display: none;\n}\n.manual-favorite-item__remove {\n  position: absolute;\n  top: 12px;\n  right: 12px;\n  color: #dc2f3b;\n  text-decoration: none;\n}\n.manual-favorite-item__heart {\n  font-size: 24px;\n  line-height: 1;\n}\n.manual-favorite-item__remove-label {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  overflow: hidden;\n  clip: rect(0 0 0 0);\n}\n.manual-favorites__more {\n  display: flex;\n  justify-content: center;\n  min-width: 180px;\n  margin: 32px auto 0;\n  padding: 12px 20px;\n}\n@media (max-width: 749px) {\n  .manual-favorites__items {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 18px 10px;\n  }\n  .manual-favorite-item__body {\n    padding: 10px;\n  }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Simple list layout<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Uses a smaller image with name, price, and action buttons in one row.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"671\" height=\"636\" src=\"https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-horizontal-20260903.png\" alt=\"Favorite list with product image and information in one row\" class=\"wp-image-6150\" srcset=\"https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-horizontal-20260903.png 671w, https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-horizontal-20260903-300x284.png 300w, https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-horizontal-20260903-13x12.png 13w\" sizes=\"(max-width: 671px) 100vw, 671px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Paste the following code into Custom CSS.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.manual-favorites {\n  max-width: 900px;\n  margin: 32px auto 80px;\n  padding: 0 20px;\n  color: #222;\n}\n.manual-favorites__header {\n  display: flex;\n  align-items: flex-end;\n  gap: 12px;\n  margin-bottom: 18px;\n}\n.manual-favorites__title {\n  margin: 0;\n  font-size: 32px;\n}\n.manual-favorites__title-suffix {\n  display: none;\n}\n.manual-favorites__count {\n  margin: 0 0 3px;\n  font-size: 14px;\n  font-weight: 700;\n}\n.manual-favorites__unit--count {\n  display: none;\n}\n.manual-favorites__breadcrumb {\n  display: flex;\n  gap: 12px;\n  margin-bottom: 26px;\n  color: #777;\n  font-size: 13px;\n}\n.manual-favorites__breadcrumb a {\n  color: inherit;\n  text-decoration: none;\n}\n.manual-favorites__items {\n  border-top: 1px solid #ddd;\n}\n.manual-favorite-item {\n  position: relative;\n  display: grid;\n  grid-template-columns: 110px minmax(0, 1fr);\n  gap: 24px;\n  min-height: 165px;\n  padding: 14px 0;\n  border-bottom: 1px solid #ddd;\n}\n.manual-favorite-item__image {\n  display: block;\n  align-self: center;\n  aspect-ratio: 1 \/ 1;\n  overflow: hidden;\n  background: #f5f5f5;\n}\n.manual-favorite-item__image img {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n}\n.manual-favorite-item__body {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) 150px;\n  grid-template-rows: 1fr auto;\n  column-gap: 24px;\n}\n.manual-favorite-item__category,\n.manual-favorite-item__status {\n  display: none;\n}\n.manual-favorite-item__name {\n  grid-column: 1;\n  grid-row: 1;\n  margin: 0 0 8px;\n  font-size: 15px;\n}\n.manual-favorite-item__name a {\n  color: inherit;\n  text-decoration: none;\n}\n.manual-favorite-item__price {\n  grid-column: 1;\n  grid-row: 2;\n  display: flex;\n  align-items: baseline;\n  gap: 8px;\n  margin: 0;\n}\n.manual-favorite-item__price-current {\n  font-size: 15px;\n  font-weight: 700;\n}\n.manual-favorite-item__price-tax,\n.manual-favorite-item__price-before {\n  color: #777;\n  font-size: 11px;\n}\n.manual-favorite-item__price-before {\n  text-decoration: line-through;\n}\n.manual-favorite-item__actions {\n  grid-column: 2;\n  grid-row: 1 \/ 3;\n  align-self: end;\n  display: flex;\n  align-items: center;\n  justify-content: flex-end;\n}\n.manual-favorite-item__cart {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  min-height: 46px;\n  padding: 10px 14px;\n  border: 1px solid #111;\n  color: #fff;\n  background: #111;\n  text-decoration: none;\n}\n.manual-favorite-item__view {\n  display: none;\n}\n.manual-favorite-item__remove {\n  position: absolute;\n  top: 14px;\n  right: 8px;\n  color: #dc2f3b;\n  text-decoration: none;\n}\n.manual-favorite-item__heart {\n  font-size: 24px;\n  line-height: 1;\n}\n.manual-favorite-item__remove-label {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  overflow: hidden;\n  clip: rect(0 0 0 0);\n}\n.manual-favorites__more {\n  display: flex;\n  justify-content: center;\n  min-width: 180px;\n  margin: 32px auto 0;\n  padding: 12px 20px;\n}\n@media (max-width: 749px) {\n  .manual-favorite-item {\n    grid-template-columns: 88px minmax(0, 1fr);\n    gap: 12px;\n  }\n  .manual-favorite-item__image {\n    grid-column: 1;\n    grid-row: 1 \/ 3;\n  }\n  .manual-favorite-item__body {\n    display: contents;\n  }\n  .manual-favorite-item__name {\n    grid-column: 2;\n    grid-row: 1;\n  }\n  .manual-favorite-item__price {\n    grid-column: 2;\n    grid-row: 2;\n  }\n  .manual-favorite-item__actions {\n    grid-column: 1 \/ -1;\n    grid-row: 3;\n    justify-content: stretch;\n    margin-top: 12px;\n  }\n  .manual-favorite-item__cart {\n    width: 100%;\n  }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Favorite list for a typical Japanese ecommerce site<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Places product information in a bordered box with stock status, price, and three action buttons.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"671\" height=\"726\" src=\"https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-detailed-20260903.png\" alt=\"Japanese ecommerce-style favorite list with product information and actions in one row\" class=\"wp-image-6152\" srcset=\"https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-detailed-20260903.png 671w, https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-detailed-20260903-277x300.png 277w, https:\/\/storecrm.com\/help\/wp-content\/uploads\/2025\/12\/main-storecrm-en-favorite-list-detailed-20260903-11x12.png 11w\" sizes=\"(max-width: 671px) 100vw, 671px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Remove all in the image was provided by legacy code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Current Advanced mode does not support bulk removal, so it is not included below.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Paste the following code into Custom CSS.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.manual-favorites {\n  max-width: 920px;\n  margin: 32px auto 80px;\n  padding: 0 20px;\n  color: #2f2f2f;\n}\n.manual-favorites__header {\n  display: flex;\n  align-items: baseline;\n  gap: 12px;\n  margin-bottom: 14px;\n  padding-bottom: 14px;\n  border-bottom: 1px solid #ddd;\n}\n.manual-favorites__title {\n  margin: 0;\n  font-size: 24px;\n}\n.manual-favorites__count {\n  margin: 0;\n  font-size: 13px;\n  font-weight: 700;\n}\n.manual-favorites__unit--items,\n.manual-favorites__breadcrumb {\n  display: none;\n}\n.manual-favorites__items {\n  display: grid;\n  gap: 12px;\n}\n.manual-favorite-item {\n  display: grid;\n  grid-template-columns: 120px minmax(0, 1fr);\n  gap: 16px;\n  padding: 14px;\n  border: 1px solid #ddd;\n  background: #fff;\n}\n.manual-favorite-item__image {\n  display: block;\n  align-self: center;\n  aspect-ratio: 1 \/ 1;\n  overflow: hidden;\n  background: #f6f6f6;\n}\n.manual-favorite-item__image img {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n}\n.manual-favorite-item__body {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) 210px;\n  grid-template-rows: repeat(4, auto);\n  column-gap: 16px;\n  align-content: center;\n}\n.manual-favorite-item__category {\n  grid-column: 1;\n  grid-row: 1;\n  margin: 0 0 6px;\n  color: #777;\n  font-size: 12px;\n  text-transform: uppercase;\n}\n.manual-favorite-item__name {\n  grid-column: 1;\n  grid-row: 2;\n  margin: 0 0 8px;\n  font-size: 16px;\n  line-height: 1.6;\n}\n.manual-favorite-item__name a {\n  color: inherit;\n  text-decoration: none;\n}\n.manual-favorite-item__status {\n  grid-column: 1;\n  grid-row: 3;\n  align-self: flex-start;\n  justify-self: start;\n  margin: 0 0 8px;\n  padding: 5px 9px;\n  border: 1px solid #ddd;\n  color: #555;\n  font-size: 12px;\n}\n.manual-favorite-item__status.is-unavailable {\n  border-color: #e9b4b4;\n  color: #b00020;\n  background: #fff7f7;\n}\n.manual-favorite-item__price {\n  grid-column: 1;\n  grid-row: 4;\n  display: flex;\n  align-items: baseline;\n  gap: 8px;\n  margin: 0;\n}\n.manual-favorite-item__price-current {\n  font-size: 19px;\n  font-weight: 800;\n}\n.manual-favorite-item__price-tax,\n.manual-favorite-item__price-before {\n  color: #777;\n  font-size: 11px;\n}\n.manual-favorite-item__price-before {\n  text-decoration: line-through;\n}\n.manual-favorite-item__actions {\n  grid-column: 2;\n  grid-row: 1 \/ 5;\n  align-self: center;\n  display: grid;\n  gap: 8px;\n}\n.manual-favorite-item__cart,\n.manual-favorite-item__view,\n.manual-favorite-item__remove {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  min-height: 38px;\n  padding: 8px 14px;\n  text-decoration: none;\n}\n.manual-favorite-item__cart {\n  border: 1px solid #111;\n  color: #fff;\n  background: #111;\n}\n.manual-favorite-item__view {\n  border: 1px solid #333;\n  color: #222;\n  background: #fff;\n}\n.manual-favorite-item__remove {\n  border: 1px solid #ddd;\n  color: #777;\n  background: #fff;\n}\n.manual-favorite-item__heart {\n  display: none;\n}\n.manual-favorites__more {\n  display: flex;\n  justify-content: center;\n  min-width: 180px;\n  margin: 32px auto 0;\n  padding: 12px 20px;\n  border: 1px solid #2f2f2f;\n  color: #2f2f2f;\n  background: #fff;\n}\n@media (max-width: 749px) {\n  .manual-favorite-item {\n    grid-template-columns: 92px minmax(0, 1fr);\n    gap: 12px;\n    padding: 10px;\n  }\n  .manual-favorite-item__image {\n    grid-column: 1;\n    grid-row: 1 \/ 5;\n  }\n  .manual-favorite-item__body {\n    display: contents;\n  }\n  .manual-favorite-item__category,\n  .manual-favorite-item__name,\n  .manual-favorite-item__status,\n  .manual-favorite-item__price {\n    grid-column: 2;\n  }\n  .manual-favorite-item__actions {\n    grid-column: 1 \/ -1;\n    grid-row: 5;\n    margin-top: 10px;\n  }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Preview, save, and restore defaults<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Preview<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Click Preview to check the current Liquid and CSS before saving.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Preview does not save changes. Click Save after confirming the result.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Preview supports up to 100 products. Also test the published page with zero, one, and more than 20 items.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Restore defaults<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Restore defaults replaces the Page Liquid file, both product and variant item templates, and Custom CSS with default content.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This also resets the item template for the unit not currently shown.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Restoring defaults does not save automatically. Review the content and click Save.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To preserve customizations, copy the Page Liquid, both item templates, and CSS to a text file before restoring defaults.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Unsupported code and notes<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Script tags are not supported.<\/li><li><code>onclick<\/code>Inline event handlers on HTML elements are not supported.<\/li><li>URLs that execute scripts are not supported.<\/li><li><code>{{ custom_css }}<\/code>, ,<code>{{ favorite_items }}<\/code>, ,<code>data-storecrm-items<\/code>must not be removed.<\/li><li>Attributes used for removing favorites or adding to cart<code>data-<\/code>must not be removed without checking their purpose.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Before major Liquid or CSS changes, save the original content and verify appearance and behavior in both preview and the actual store.<\/p>","protected":false},"excerpt":{"rendered":"StoreCRM\u306e\u300c\u4e0a\u7d1a\u8005\u30e2\u30fc\u30c9\uff08Liquid\uff09\u300d\u3067\u306f\u3001\u304a\u6c17\u306b\u5165\u308a\u4e00\u89a7\u30da\u30fc\u30b8\u306e\u69cb\u9020\u3001\u5546\u54c1\u30fb\u30d0\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u306e\u8868\u793a [&hellip;]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-5160","post","type-post","status-publish","format-standard","hentry","category-setting"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/storecrm.com\/help\/en\/wp-json\/wp\/v2\/posts\/5160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/storecrm.com\/help\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/storecrm.com\/help\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/storecrm.com\/help\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/storecrm.com\/help\/en\/wp-json\/wp\/v2\/comments?post=5160"}],"version-history":[{"count":19,"href":"https:\/\/storecrm.com\/help\/en\/wp-json\/wp\/v2\/posts\/5160\/revisions"}],"predecessor-version":[{"id":6154,"href":"https:\/\/storecrm.com\/help\/en\/wp-json\/wp\/v2\/posts\/5160\/revisions\/6154"}],"wp:attachment":[{"href":"https:\/\/storecrm.com\/help\/en\/wp-json\/wp\/v2\/media?parent=5160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/storecrm.com\/help\/en\/wp-json\/wp\/v2\/categories?post=5160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/storecrm.com\/help\/en\/wp-json\/wp\/v2\/tags?post=5160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}