Gift message into product page of Prestige Theme

Solved
noemi2
Explorer
90 1 20

Hi all, 

I have been looking for a tutorial in order to add the possibility to my customer to let a gift Message into the product page. I know Shopify brings the possibility to write a gift message in the card page but it is not enough visible for my clients.

 

I am using Prestige theme and I would like to keep their template page for the products, I just want to add this possibility. Anyone can help me?

Accepted Solution (1)
KetanKumar
Shopify Partner
36590 3628 11813

This is an accepted solution.

@noemi2 

I have done this, please check.

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing

View solution in original post

Replies 38 (38)
KetanKumar
Shopify Partner
36590 3628 11813

@noemi2 

Thanks for post,

you can try this easy to manage 

https://ui-elements-generator.myshopify.com/pages/line-item-property

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
noemi2
Explorer
90 1 20

Thank you for your information! It works! But now, I would like to place it behind or over "ADD TO CART". 

If I copy the code behind the section product template, then it is displayed in the bottom of the product without being aligned into the layout.

Captura de pantalla 2020-06-22 a las 19.34.20.pngCaptura de pantalla 2020-06-22 a las 19.35.57.png

KetanKumar
Shopify Partner
36590 3628 11813

@noemi2 

I need your store login details. Yes, I know your login details are confidential. For this second option, I have added your store to my Shopify partner account so I will check your code easily and manage what you think about it?

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
noemi2
Explorer
90 1 20

yes, please! let me know what you need from my side. Thank you

KetanKumar
Shopify Partner
36590 3628 11813

@noemi2 

Thanks can you please give me store url so i will added 

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
noemi2
Explorer
90 1 20

Yes, is https://alblancatelier.myshopify.com/ / password alblanc90

KetanKumar
Shopify Partner
36590 3628 11813

@noemi2 

Thanks 

Thanks i have send request 

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
KetanKumar
Shopify Partner
36590 3628 11813

This is an accepted solution.

@noemi2 

I have done this, please check.

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
noemi2
Explorer
90 1 20

Thank you very much for your help @KetanKumar !! It is perfect!!

KetanKumar
Shopify Partner
36590 3628 11813

@noemi2 

Thanks for update.

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
kschmidt
Tourist
5 0 1

Hi @KetanKumar, I would like to include the gift message as part of our checkout process to be included on our confirmation email and the actual package upon shipping.  Does your code allow for that gift message to be printed on the confirmation (or even better, as a separate letter / slip that's included in the package upon shipment)?

Thank you! 

Tim_Gist
Explorer
92 2 8

Hi @kschmidt , Giftship certainly helps make that happen. If you wanted to try it out and need help with getting things set up, please let us know.

KetanKumar
Shopify Partner
36590 3628 11813

Hello, @kschmidt 

Thanks 

 

do you have able to this code 

https://ui-elements-generator.myshopify.com/pages/cart-attribute

try thy or contact me direct

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
ralgiftsolution
Excursionist
12 0 5

Hi, please how do I do this. I would like a gift note message on my product page. I'll appreciate your help. 

Thank you

 

KetanKumar
Shopify Partner
36590 3628 11813

@ralgiftsolution 

yes please try this code

https://ui-elements-generator.myshopify.com/pages/line-item-property

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
ralgiftsolution
Excursionist
12 0 5

Thank you very much for the solution. It worked.

KetanKumar
Shopify Partner
36590 3628 11813

@ralgiftsolution 

its my pleasure to help us 

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
KittyChio
New Member
2 0 0

@KetanKumar 

Hi, I am looking to add a restricted number of characters as a gift message on selected product pages of the Prestige Theme. Please advise if this is possible and how to implement it. 

Many Thanks,

Kitty

Tim_Gist
Explorer
92 2 8

@noemi2

I might recommend the app Giftship. It allows for gift message collection on either individual product pages of the full-cart page, along with many other powerful gifting features. The settings can be configured from right within Giftship's dashboard: https://apps.shopify.com/giftship

cocoa64
Excursionist
26 1 7

@noemi2 

Hello Noemi,

I'm using Prestige theme too and I did the ui-elements-generator thing to put variants on my product pages, but they aren't appearing in my cart.
So my question was, how did you manage to make your "message" visible in cart please?

Thank you

cocoa64
Excursionist
26 1 7

@KetanKumar 

Any help as to my question please?

KetanKumar
Shopify Partner
36590 3628 11813

Hello, @cocoa64 

Welcome to the Shopify community!
and Thanks for your Good question.

Please share your site URL,
So I will check and provide a solution here.

 

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
cocoa64
Excursionist
26 1 7

Thanks @KetanKumar for your reply!
I've been trying to find  a solution since a week now, it's getting on my nerves!

Here is the url : elmoritz.myshopify.com and password aoblai

cocoa64
Excursionist
26 1 7

I have tried adding the code below to the theme but it didn't work.. the thing is there is no <form> sections in the cart files! 

 

 

Show line item properties in the cart

 

To show product customization information in the cart:

 

  1. From your Shopify admin, go to Online Store > Themes.
  2. Find the theme you want to edit, and then click Actions > Edit code.
  3. In the Sections directory, click cart-template.liquid. If your theme doesn't have a cart-template.liquid, then open the Templates directory and click cart.liquid.
  4. Find the line containing the code {{ item.product.title }}. On a new line below, paste the following code:

    {% assign property_size = item.properties | size %}
    {% if property_size > 0 %}
      {% for p in item.properties %}
        {% assign first_character_in_key = p.first | truncate: 1, '' %}
        {% unless p.last == blank or first_character_in_key == '_' %}
          {{ p.first }}:
          {% if p.last contains '/uploads/' %}
            <a class="lightbox" href="{{ p.last }}">{{ p.last | split: '/' | last }}</a>
          {% else %}
            {{ p.last }}
          {% endif %}
          <br>
        {% endunless %}
      {% endfor %}
    {% endif %}

     

  5. Click Save.

This code checks each line item to see if it has any line item properties, and displays them if they exist.

cocoa64
Excursionist
26 1 7

I forgot to say that I've been testing this line properties on just a single product which is this one: 

https://elmoritz.myshopify.com/admin/themes/112927506597/editor#/collections/attache-sucette/product...

If you want to test it..

KetanKumar
Shopify Partner
36590 3628 11813

@cocoa64 

Thanks for it 

sorry but password doesn't work 

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
cocoa64
Excursionist
26 1 7

@KetanKumar Did you use : "aoblai" ?

It should work, it's the one set up by default on my shop..

https://elmoritz.myshopify.com/

KetanKumar
Shopify Partner
36590 3628 11813

@cocoa64 

Thanks 

can you please add above your code product template section code whenever do you have display 

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
cocoa64
Excursionist
26 1 7

@KetanKumar 

product.customizable.liquid

-------------------------------------------------------

{% section 'product-customizable-template' %}
{% section 'product-recommendations' %}
{% section 'recently-viewed-products' %}

<script>
window.ShopifyXR=window.ShopifyXR||function(){(ShopifyXR.q=ShopifyXR.q||[]).push(arguments)};
ShopifyXR('addModels', {{ product.media | where: 'media_type', 'model' | json }});
</script>

KetanKumar
Shopify Partner
36590 3628 11813

@cocoa64 

can you please add this file code

product-customizable-template

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
cocoa64
Excursionist
26 1 7

 @KetanKumar 

Here is the code for template product-customizable.liquid

{% section 'product-customizable-template' %}
{% section 'product-recommendations' %}
{% section 'recently-viewed-products' %}

<script>
  window.ShopifyXR=window.ShopifyXR||function(){(ShopifyXR.q=ShopifyXR.q||[]).push(arguments)};
  ShopifyXR('addModels', {{ product.media | where: 'media_type', 'model' | json }});
</script>
KetanKumar
Shopify Partner
36590 3628 11813

@cocoa64 

I need your store login details. Yes, I know your login details are confidential. For this second option, I have added your store to my Shopify partner account so I will check your code easily and manage what you think about it?

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
cocoa64
Excursionist
26 1 7

@KetanKumar I've just sent my details to the email in your signature.

KetanKumar
Shopify Partner
36590 3628 11813

@cocoa64 

Thanks for details i will check and let you know email

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
KetanKumar
Shopify Partner
36590 3628 11813

@cocoa64 

sorry i can't see your code where did you add?

If helpful then please Like and Accept Solution.
Want to modify or custom changes on store Hire me.
- Feel free to contact me on bamaniyaketan.sky@gmail.com regarding any help
Shopify Partner | Skype : bamaniya.sky
PSD to Shopify | Shopify Design Changes | Shopify Custom Theme Development and Desing | Custom Modifications In to Shopify Theme | SEO & Digital Marketing
cocoa64
Excursionist
26 1 7

@KetanKumar 

I deleted the one in the cart-items.liquid because it wasn't working. So there isn't any at the moment.

cocoa64
Excursionist
26 1 7

@KetanKumar 

product-customizable-template.liquid (in Sections)

 

{%- capture section_settings -%}
{
"enableHistoryState": true,
"templateSuffix": {{ product.template_suffix | json }},
"showInventoryQuantity": {{ section.settings.show_inventory_quantity | json }},
"showSku": {{ section.settings.show_sku | json }},
"stackProductImages": {{ section.settings.stack_images | json }},
"showThumbnails": {{ section.settings.show_thumbnails | json }},
"enableVideoLooping": {{ section.settings.enable_video_looping | json }},
"inventoryQuantityThreshold": {{ section.settings.inventory_quantity_threshold }},
"showPriceInButton": {{ section.settings.show_price_in_button | json }},
"enableImageZoom": {{ section.settings.enable_image_zoom | json }},
"showPaymentButton": {{ section.settings.show_payment_button | json }},
"useAjaxCart": {% if settings.cart_type == 'drawer' %}true{% else %}false{% endif %}
}
{%- endcapture -%}

<section class="Product Product--{{ section.settings.image_size }}" data-section-id="{{ section.id }}" data-section-type="product" data-section-settings='{{ section_settings }}'>
<div class="Product__Wrapper">
{%- capture action_list_items -%}
{%- if section.settings.enable_image_zoom -%}
<div class="Product__ActionItem hidden-lap-and-up">
<button class="RoundButton RoundButton--small RoundButton--flat" data-action="open-product-zoom">{% render 'icon' with 'plus' %}</button>
</div>
{%- endif -%}

{%- if section.settings.show_share_buttons -%}
<div class="Product__ActionItem hidden-lap-and-up">
<button class="RoundButton RoundButton--small RoundButton--flat" data-action="toggle-social-share" data-animate-bottom aria-expanded="false">
<span class="RoundButton__PrimaryState">{% render 'icon' with 'share' %}</span>
<span class="RoundButton__SecondaryState">{% render 'icon' with 'close' %}</span>
</button>

{%- assign share_url = shop.url | append: product.url -%}
{%- assign twitter_text = product.title -%}
{%- assign pinterest_description = product.description | strip_html | truncatewords: 15 | url_param_escape -%}
{%- assign pinterest_image = product.featured_media | img_url: '1024x' | prepend: 'https:' -%}

<div class="Product__ShareList" aria-hidden="true">
<a class="Product__ShareItem" href="https://www.facebook.com/sharer.php?u={{ share_url }}" target="_blank" rel="noopener">{%- render 'icon' with 'facebook' -%} Facebook</a>
<a class="Product__ShareItem" href="https://pinterest.com/pin/create/button/?url={{ share_url }}{% if pinterest_image != blank %}&media={{ pinterest_image }}{% endif %}&description={{ pinterest_description }}" target="_blank" rel="noopener">{%- render 'icon' with 'pinterest' -%} Pinterest</a>
<a class="Product__ShareItem" href="https://twitter.com/share?{% if twitter_text != blank %}text={{twitter_text}}&{% endif %}url={{ share_url }}" target="_blank" rel="noopener">{%- render 'icon' with 'twitter' -%} Twitter</a>
</div>
</div>
{%- endif -%}
{%- endcapture -%}

{%- comment -%}
--------------------------------------------------------------------------------------------------------------------
PRODUCT GALLERY
--------------------------------------------------------------------------------------------------------------------
{%- endcomment -%}

{%- assign initial_media_id = product.featured_media.id -%}
{%- assign initial_media_index = 0 -%}
{%- assign media_count = 0 -%}

{%- capture slideshow_media -%}
{%- for media in product.media -%}
{%- if media.alt == 'featured' or media.alt == 'featured mobile' -%}
{%- continue -%}
{%- endif -%}

{%- if product.selected_variant and media.id == product.selected_variant.featured_media.id -%}
{%- assign initial_media_index = media_count -%}
{%- assign initial_media_id = media.id -%}
{%- endif -%}

{%- capture supported_sizes -%}{%- render 'image-size', sizes: '200,400,600,700,800,900,1000,1200,1400,1600', image: media -%}{%- endcapture -%}

{%- case media.media_type -%}
{%- when 'image' -%}
<div id="Media{{ media.id }}" tabindex="0" class="Product__SlideItem Product__SlideItem--image Carousel__Cell {% if initial_media_id == media.id %}is-selected{% endif %}" data-media-type="image" data-media-id="{{ media.id }}" data-media-position="{{ media.position }}" data-image-media-position="{% increment image_position %}">
<div class="AspectRatio AspectRatio--withFallback" style="padding-bottom: {{ 100.0 | divided_by: media.aspect_ratio }}%; --aspect-ratio: {{ media.aspect_ratio }};">
{% assign image_url = media | img_url: '1x1' | replace: '_1x1.', '_{width}x.' %}

<img class="Image--lazyLoad Image--fadeIn" data-src="{{ image_url }}" data-widths="[{{ supported_sizes }}]" data-sizes="auto" data-expand="-100" alt="{{ media.alt | escape }}" data-max-width="{{ media.width }}" data-max-height="{{ media.height }}" data-original-src="{{ media | img_url: 'master' }}">
<span class="Image__Loader"></span>

<noscript>
<img src="{{ media | img_url: '800x' }}" alt="{{ media.alt | escape }}">
</noscript>
</div>
</div>

{%- when 'external_video' -%}
<div id="Media{{ media.id }}" tabindex="-1" class="Product__SlideItem Product__SlideItem--video Carousel__Cell {% if initial_media_id == media.id %}is-selected{% endif %}" data-media-type="external_video" data-media-id="{{ media.id }}" data-media-position="{{ media.position }}" data-video-host="{{ media.host | escape }}" data-video-id="{{ media.external_id | escape }}">
<div class="Image--lazyLoad Image--fadeIn" data-expand="-100">
<div class="VideoWrapper">
{{- media | external_video_tag: image_size: '1024x' -}}
</div>
</div>
</div>

{%- when 'video' -%}
<div id="Media{{ media.id }}" tabindex="-1" class="Product__SlideItem Product__SlideItem--video Carousel__Cell {% if initial_media_id == media.id %}is-selected{% endif %}" data-media-type="video" data-media-id="{{ media.id }}" data-media-position="{{ media.position }}">
<div class="Image--lazyLoad Image--fadeIn" data-expand="-100">
<div class="VideoWrapper VideoWrapper--native" style="padding-bottom: {{ 100.0 | divided_by: media.aspect_ratio }}%">
{{- media | video_tag: image_size: '1024x', controls: true -}}
</div>
</div>
</div>

{%- when 'model' -%}
<div id="Media{{ media.id }}" tabindex="-1" class="Product__SlideItem Product__SlideItem--model Carousel__Cell {% if initial_media_id == media.id %}is-selected{% endif %}" data-media-type="model" data-media-id="{{ media.id }}" data-media-position="{{ media.position }}">
<div class="Image--lazyLoad Image--fadeIn" data-expand="-100">
<div class="ModelWrapper">
{{- media | model_viewer_tag: image_size: '1024x', reveal: 'interaction', toggleable: true -}}
</div>
</div>
</div>
{%- endcase -%}

{%- assign media_count = media_count | plus: 1 -%}
{%- endfor -%}
{%- endcapture -%}

{%- if product.media.size > 0 -%}
<div class="Product__Gallery {% if section.settings.stack_images %}Product__Gallery--stack{% endif %} {% if section.settings.show_thumbnails and media_count > 1 %}Product__Gallery--withThumbnails{% else %}Product__Gallery--withDots{% endif %}">
<span id="ProductGallery" class="Anchor"></span>

{%- if action_list_items != blank -%}
<div class="Product__ActionList hidden-lap-and-up {% if product.media[initial_media_index].media_type != 'image' %}is-hidden{% endif %}">
{{ action_list_items }}
</div>
{%- endif -%}

{%- capture slideshow_nav -%}
{%- if media_count > 1 -%}
{%- if section.settings.show_thumbnails -%}
<div class="Product__SlideshowNav Product__SlideshowNav--thumbnails">
<div class="Product__SlideshowNavScroller">
{%- for media in product.media -%}
{%- if media.alt == 'featured' or media.alt == 'featured mobile' -%}
{%- continue -%}
{%- endif -%}

{%- capture nav_item_badge -%}
{%- case media.media_type -%}
{%- when 'model' -%}
<span class="Product__SlideshowNavBadge">{% render 'icon', icon: 'media-model-badge' %}</span>

{%- when 'video' or 'external_video' -%}
<span class="Product__SlideshowNavBadge">{% render 'icon', icon: 'media-video-badge' %}</span>
{%- endcase -%}
{%- endcapture -%}

{%- if section.settings.stack_images -%}
<a href="#Media{{ media.id }}" data-offset="-25" data-focus-on-click data-media-id="{{ media.id }}" class="Product__SlideshowNavImage AspectRatio {% if forloop.first %}is-selected{% endif %}" style="--aspect-ratio: {{ media.preview_image.aspect_ratio }}">
<img src="{{ media | img_url: '160x' }}" alt="{{ media.alt | escape }}">
{{- nav_item_badge -}}
</a>
{%- else -%}
<a href="{{ media | img_url: '1024x' }}" data-media-id="{{ media.id }}" class="Product__SlideshowNavImage AspectRatio {% if forloop.first %}is-selected{% endif %}" style="--aspect-ratio: {{ media.preview_image.aspect_ratio }}">
<img src="{{ media | img_url: '160x' }}" alt="{{ media.alt | escape }}">
{{- nav_item_badge -}}
</a>
{%- endif -%}
{%- endfor -%}
</div>
</div>
{%- endif -%}

{%- if section.settings.stack_images -%}
<div class="Product__SlideshowNav Product__SlideshowNav--dots">
<div class="Product__SlideshowNavScroller">
{%- for media in product.media -%}
{%- if media.alt == 'featured' or media.alt == 'featured mobile' -%}
{%- continue -%}
{%- endif -%}

<a href="#Media{{ media.id }}" data-offset="-25" data-focus-on-click class="Product__SlideshowNavDot {% if forloop.first %}is-selected{% endif %}"></a>
{%- endfor -%}
</div>
</div>
{%- endif -%}
{%- endif -%}
{%- endcapture -%}

{%- if section.settings.stack_images -%}
{{- slideshow_nav -}}
{%- endif -%}

{%- capture flickity_options -%}
{
"prevNextButtons": false,
"pageDots": false,
"adaptiveHeight": true,
"watchCSS": true,
"dragThreshold": 8,
"initialIndex": {{ initial_media_index }},
"arrowShape": {"x0": 20, "x1": 60, "y1": 40, "x2": 60, "y2": 35, "x3": 25}
}
{%- endcapture -%}

<div class="Product__Slideshow {% if section.settings.enable_image_zoom %}Product__Slideshow--zoomable{% endif %} Carousel" data-flickity-config='{{ flickity_options }}'>
{{ slideshow_media }}
</div>

{%- comment -%}Add the "view in your space" button, which allows to show the product in customer's environment (if the device supports it){%- endcomment -%}
{%- assign first_3d_model = product.media | where: 'media_type', 'model' | first -%}

{%- if first_3d_model -%}
<button class="Product__ViewInSpace Button Button--full" data-shopify-xr data-shopify-model3d-id="{{ first_3d_model.id }}" data-shopify-model3d-default-id="{{ first_3d_model.id }}" data-shopify-title="{{ product.title | escape }}" data-shopify-xr-hidden>
{%- render 'icon', icon: 'media-view-in-space' -%} {{- 'product.general.view_in_space' | t -}}
</button>
{%- endif -%}

{%- if media_count > 1 -%}
{%- comment -%}
IMPLEMENTATION NOTE: The reason we create ourselves our own UI instead of relying of the built-in feature of Flickity is that,
since the media API, Shopify requires to add arrows next to the dot. Unfortunately this layout is not
achievable easily using Flickity options only, so we have to run our own
{%- endcomment -%}

<div class="Product__SlideshowMobileNav {% if section.settings.stack_images or section.settings.show_thumbnails %}hidden-desk{% endif %}">
<button class="Product__SlideshowNavArrow Product__SlideshowNavArrow--previous" type="button" data-direction="previous" aria-label="{{ 'general.accessibility.previous' | t }}">
{% render 'icon' with 'media-arrow-left' %}
</button>

<div class="flickity-page-dots">
{%- for i in (1..media_count) -%}
<button type="button" class="dot {% if forloop.index0 == initial_media_index %}is-selected{% endif %}" data-index="{{ forloop.index0 }}"></button>
{%- endfor -%}
</div>

<button class="Product__SlideshowNavArrow Product__SlideshowNavArrow--next" type="button" data-direction="next" aria-label="{{ 'general.accessibility.next' | t }}">
{% render 'icon' with 'media-arrow-right' %}
</button>
</div>
{%- endif -%}

{%- unless section.settings.stack_images -%}
{{- slideshow_nav -}}
{%- endunless -%}
</div>
{%- endif -%}

{%- capture product_aside -%}
{%- comment -%}
--------------------------------------------------------------------------------------------------------------------
PRODUCT TABS
--------------------------------------------------------------------------------------------------------------------
{%- endcomment -%}

{%- render 'product-tabs' -%}

{%- comment -%}
--------------------------------------------------------------------------------------------------------------------
PRODUCT WEAR IT WITH

We allow merchants to add a tag that looks like __with:product-handle to feature an additional product
--------------------------------------------------------------------------------------------------------------------
{%- endcomment -%}

{%- for tag in product.tags -%}
{%- if tag contains '__with' -%}
{%- assign product_handle = tag | split: '__with:' | last -%}
{%- assign associated_product = all_products[product_handle] -%}

{%- if associated_product != empty -%}
<div class="Section Section--spacingNormal">
<header class="SectionHeader SectionHeader--center">
<h3 class="SectionHeader__Heading Heading u-h4">{{ 'product.buy_it_with.title' | t }}</h3>
</header>

{% render 'product-item', product: associated_product, use_horizontal: true, show_labels: false, show_product_info: true, show_vendor: false, show_price_on_hover: false %}
</div>

{%- break -%}
{%- endif -%}
{%- endif -%}
{%- endfor -%}
{%- endcapture -%}


<div class="Product__InfoWrapper">
<div class="Product__Info {% if media_count == 0 %}Product__Info--noGallery{% endif %}">
<div class="Container">
{%- render 'product-meta', product: product, show_description: true -%}

<br>
<p class="line-item-property__field">
<label>COULEUR CLIP</label><br>
<select required class="required" id="couleur-clip" name="properties[COULEUR CLIP]">
<option value="Sélectionner une option">Sélectionner une option</option>
<option value="A metal">A metal</option>
<option value="B light wood">B light wood</option>
<option value="C wood">C wood</option>
<option value="D rainbow">D rainbow</option>
<option value="E bronze">E bronze</option>
</select>
</p>
<p class="line-item-property__field">
<label>COULEUR ATTACHE</label><br>
<select required class="required" id="couleur-attache" name="properties[COULEUR ATTACHE]">
<option value="Sélectionner une option">Sélectionner une option</option>
<option value="1 papaye/papaya">1 papaye/papaya</option>
<option value="2 lin/linen">2 lin/linen</option>
<option value="3 sable/sand">3 sable/sand</option>
<option value="4 noisette/hazelnut">4 noisette/hazelnut</option>
<option value="5 noyer/hickory">5 noyer/hickory</option>
<option value="6 ardoise/slate">6 ardoise/slate</option>
</select>
</p>

{%- if product.template_suffix != 'coming-soon' -%}
{%- render 'product-form', product: product -%}
{%- endif -%}


{%- if section.settings.description_below_add_to_cart -%}
<div class="ProductMeta__Description">
<div class="Rte">
{%- comment -%}
We have figured out that some merchants were copy-pasting huge chunk of code into the product description,
which can make the theme crashes if it contains some special attributes used by the theme. We therefore make sure to process this
{%- endcomment -%}

{{ product.description | replace: 'data-section-type', 'data-section-type-placeholder' }}
</div>

{%- if section.settings.show_share_buttons -%}
<div class="ProductMeta__ShareButtons hidden-pocket">
<span class="ProductMeta__ShareTitle Heading Text--subdued u-h7">{{ 'product.form.share' | t }}</span>

{%- assign share_url = shop.url | append: product.url -%}
{%- assign twitter_text = product.title -%}
{%- assign pinterest_description = product.description | strip_html | truncatewords: 15 | url_param_escape -%}
{%- assign pinterest_image = product.featured_image | img_url: 'large' | prepend: 'https:' -%}

<div class="ProductMeta__ShareList Text--subdued">
<a class="ProductMeta__ShareItem" href="https://www.facebook.com/sharer.php?u={{ share_url }}" target="_blank" rel="noopener" aria-label="Facebook">{%- render 'icon' with 'facebook' -%}</a>
<a class="ProductMeta__ShareItem" href="https://twitter.com/share?{% if twitter_text != blank %}text={{twitter_text}}&{% endif %}url={{ share_url }}" target="_blank" rel="noopener" aria-label="Twitter">{%- render 'icon' with 'twitter' -%}</a>
<a class="ProductMeta__ShareItem" href="https://pinterest.com/pin/create/button/?url={{ share_url }}{% if pinterest_image != blank %}&media={{ pinterest_image }}{% endif %}&description={{ pinterest_description }}" target="_blank" rel="noopener" aria-label="Pinterest">{%- render 'icon' with 'pinterest' -%}</a>
</div>
</div>
{%- endif -%}
</div>
{%- endif -%}

{%- if section.settings.stack_images and product_aside != blank and media_count > 0 -%}
<div class="Product__QuickNav hidden-pocket">
<div class="Product__QuickNavWrapper">
<a href="#ProductAside" class="Heading Link Link--secondary u-h7">{{ 'product.form.view_info' | t }} {% render 'icon' with 'select-arrow-right' %}</a>
<a href="#ProductGallery" class="Heading Link Link--secondary u-h7">{{ 'product.form.view_images' | t }} {% render 'icon' with 'select-arrow-right' %}</a>
</div>
</div>
{%- endif -%}
</div>
</div>
</div>

{%- if product_aside != blank -%}
<div class="Product__Aside">
<span id="ProductAside" class="Anchor"></span>
{{- product_aside -}}
</div>
{%- endif -%}
</div>
</section>

{% include 'hypervisual' %}

{%- comment -%}
--------------------------------------------------------------------------------------------------------------------
FEATURED IMAGE

We allow merchants to use one image as a "featured image" by adding the alt tag "featured"
--------------------------------------------------------------------------------------------------------------------
{%- endcomment -%}

{%- for media in product.media -%}
{%- if media.alt == 'featured' -%}
{%- assign desk_featured_media = media.preview_image -%}
{%- endif -%}

{%- if media.alt == 'featured mobile' -%}
{%- assign mobile_featured_media = media.preview_image -%}
{%- endif -%}
{%- endfor -%}

{%- if desk_featured_media or mobile_featured_media -%}
{%- assign mobile_featured_media = mobile_featured_media | default: desk_featured_media -%}
{%- assign desk_featured_media = desk_featured_media | default: mobile_featured_media -%}

<div class="Product__FeatureImageWrapper" style="background: url({{ desk_featured_media | img_url: '1x1', format: 'jpg' }})">
<div class="Product__FeatureImage Product__FeatureImage--{{ section.settings.featured_image_size }} Image--lazyLoad Image--zoomOut hide-no-js" data-expand="-25" data-bgset="{{ mobile_featured_media | img_url: 'x850' }} [(max-width: 640px)] | {{ desk_featured_media | img_url: '1500x' }}"></div>

<noscript>
<div class="Product__FeatureImage Product__FeatureImage--{{ section.settings.featured_image_size }}" style="background-image: url({{ desk_featured_media | img_url: '1500x' }})"></div>
</noscript>
</div>

<style>
#shopify-section-{{ section.id }} + .shopify-section--bordered {
border-top: 0;
}
</style>
{%- else -%}
<style>
/* This is a bit hacky but allows to circumvent the complete independency of section (as next section included in the page does not know anything about this page) */

@media screen and (max-width: 640px) {
#shopify-section-{{ section.id }} + .shopify-section--bordered {
border-top: 0;
}

#shopify-section-{{ section.id }} + .shopify-section--bordered > .Section {
padding-top: 0;
}
}
</style>
{%- endif -%}

{%- comment -%}
--------------------------------------------------------------------------------------------------------------------
PHOTO SWIPE

This is the root container for the zoom functionality. Must not be removed, as order element is important.
--------------------------------------------------------------------------------------------------------------------
{%- endcomment -%}

{%- if section.settings.enable_image_zoom -%}
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
<!-- Background of PhotoSwipe -->
<div class="pswp__bg"></div>

<!-- Slides wrapper with overflow:hidden. -->
<div class="pswp__scroll-wrap">

<!-- Container that holds slides. Do not remove as content is dynamically added -->
<div class="pswp__container">
<div class="pswp__item"></div>
<div class="pswp__item"></div>
<div class="pswp__item"></div>
</div>

<!-- Main UI bar -->
<div class="pswp__ui pswp__ui--hidden">
<button class="pswp__button pswp__button--prev RoundButton" data-animate-left title="{{ 'product.slideshow.previous' | t }}">{% render 'icon' with 'arrow-left' %}</button>
<button class="pswp__button pswp__button--close RoundButton RoundButton--large" data-animate-bottom title="{{ 'product.slideshow.close' | t }}">{% render 'icon' with 'close' %}</button>
<button class="pswp__button pswp__button--next RoundButton" data-animate-right title="{{ 'product.slideshow.next' | t }}">{% render 'icon' with 'arrow-right' %}</button>
</div>
</div>
</div>
{%- endif -%}

{% schema %}
{
"name": "Product page",
"class": "shopify-section--bordered",
"settings": [
{
"type": "checkbox",
"id": "show_share_buttons",
"label": "Show social sharing buttons",
"default": true
},
{
"type": "checkbox",
"id": "show_vendor",
"label": "Show vendor",
"default": true
},
{
"type": "checkbox",
"id": "show_sku",
"label": "Show SKU",
"default": false
},
{
"type": "checkbox",
"id": "show_taxes_included",
"label": "Show price taxes notice",
"default": false
},
{
"type": "checkbox",
"id": "description_below_add_to_cart",
"label": "Description below add to cart",
"default": false
},
{
"type": "select",
"id": "selector_mode",
"label": "Selector type",
"options": [
{
"value": "block",
"label": "Block"
},
{
"value": "dropdown",
"label": "Dropdown"
}
],
"default": "dropdown"
},
{
"type": "checkbox",
"id": "show_color_swatch",
"label": "Show color swatch",
"default": false,
"info": "Some colors appear white? [Learn more](http://support.maestrooo.com/article/80-product-uploading-custom-color-for-color-swatch)."
},
{
"type": "checkbox",
"id": "show_color_carousel",
"label": "Show color carousel",
"info": "A pop-up selector with variant images for choosing colors. Only enables when color swatch is disabled.",
"default": false
},
{
"type": "checkbox",
"id": "show_quantity_selector",
"label": "Show quantity selector",
"default": true
},
{
"type": "checkbox",
"id": "show_inventory_quantity",
"label": "Show inventory quantity",
"info": "Make sure that your inventory is tracked. [Learn more](https://help.shopify.com/manual/products/inventory#set-up-inventory-tracking).",
"default": false
},
{
"type": "range",
"id": "inventory_quantity_threshold",
"label": "Inventory quantity threshold",
"info": "Only show inventory quantity if below threshold. Choose 0 to always show.",
"min": 0,
"max": 50,
"step": 1,
"default": 0
},
{
"type": "checkbox",
"id": "show_price_in_button",
"label": "Show price in add to cart button",
"default": false
},
{
"type": "checkbox",
"id": "show_payment_button",
"label": "Show dynamic checkout button",
"info": "Each customer will see their preferred payment method from those available on your store, such as PayPal or Apple Pay. [Learn more](https://help.shopify.com/manual/using-themes/change-the-layout/dynamic-checkout)",
"default": true
},
{
"type": "header",
"content": "Media"
},
{
"type": "paragraph",
"content": "Learn more about [media types](https://help.shopify.com/en/manual/products/product-media)"
},
{
"type": "select",
"id": "image_size",
"label": "Size",
"options": [
{
"value": "small",
"label": "Small"
},
{
"value": "medium",
"label": "Medium"
},
{
"value": "large",
"label": "Large"
},
{
"value": "fill",
"label": "Fill screen"
}
],
"default": "large"
},
{
"type": "checkbox",
"id": "stack_images",
"label": "Stack images on desktop",
"default": true
},
{
"type": "checkbox",
"id": "show_thumbnails",
"label": "Show thumbnails on desktop",
"default": true
},
{
"type": "checkbox",
"id": "enable_image_zoom",
"label": "Enable zoom",
"default": true
},
{
"type": "checkbox",
"id": "enable_video_looping",
"label": "Enable video looping",
"default": false
},
{
"type": "header",
"content": "Tabs"
},
{
"type": "page",
"id": "tab_page_1_handle",
"label": "First page"
},
{
"type": "page",
"id": "tab_page_2_handle",
"label": "Second page"
},
{
"type": "paragraph",
"content": "The theme also allows you to add specific tabs for a given product only. [Learn more about this feature](http://support.maestrooo.com/article/83-product-adding-different-tabs-per-product)."
},
{
"type": "header",
"content": "Reviews"
},
{
"type": "paragraph",
"content": "You need to install [Shopify's free Product Reviews](https://apps.shopify.com/product-reviews) app before enabling this option."
},
{
"type": "checkbox",
"id": "reviews_enabled",
"label": "Enable",
"default": false
},
{
"type": "header",
"content": "Featured image"
},
{
"type": "paragraph",
"content": "You can highlight an image after product tabs by adding the ALT tag \"featured\" to a given image. [Learn more](http://support.maestrooo.com/article/152-product-highlight-a-featured-image)."
},
{
"type": "select",
"id": "featured_image_size",
"label": "Section size",
"options": [
{
"value": "small",
"label": "Small"
},
{
"value": "normal",
"label": "Normal"
},
{
"value": "large",
"label": "Large"
}
],
"default": "large"
}
]
}
{% endschema %}

cocoa64
Excursionist
26 1 7

@KetanKumar  if you need any thing else tell me..

I will add below the code of cart-items.liquid in Snippets, where I found "{{ line_item.product.title }}... 

 

{%- assign for_drawer = true -%}

{%- if template == 'cart' or template == 'cart.ajax' -%}
{%- assign for_drawer = false -%}
{%- endif -%}

<div class="Cart__ItemList">
{%- unless for_drawer -%}
<div class="Cart__Head hidden-phone">
<span class="Cart__HeadItem Heading Text--subdued u-h7">{{ 'cart.items.product' | t }}</span>
<span class="Cart__HeadItem"></span>
<span class="Cart__HeadItem Heading Text--subdued u-h7" style="text-align: center">{{ 'cart.items.quantity' | t }}</span>
<span class="Cart__HeadItem Heading Text--subdued u-h7" style="text-align: right">{{ 'cart.items.total' | t }}</span>
</div>
{%- endunless -%}

{%- for line_item in cart.items -%}
{%- if for_drawer -%}
<div class="CartItemWrapper">
{%- endif -%}

<div class="CartItem">
<div class="CartItem__ImageWrapper AspectRatio">
<div class="AspectRatio" style="--aspect-ratio: {{ line_item.image.aspect_ratio }}">
<img class="CartItem__Image" src="{{ line_item.image | img_url: '240x' }}" alt="{{ line_item.image.alt | escape }}">
</div>
</div>

<div class="CartItem__Info">
<h2 class="CartItem__Title Heading">
<a href="{{ line_item.url }}">{{ line_item.product.title }}</a>
</h2>

<div class="CartItem__Meta Heading Text--subdued">
{%- unless line_item.product.has_only_default_variant -%}
<p class="CartItem__Variant">{{ line_item.variant.title }}</p>
{%- endunless -%}

{%- if line_item.properties != empty -%}
<ul class="CartItem__PropertyList">
{%- for property in line_item.properties -%}
{%- assign first_character_in_key = property.first | truncate: 1, '' -%}

{%- if property.last == blank or first_character_in_key == '_' -%}
{%- continue -%}
{%- endif -%}

<li class="CartItem__Property">{{ property.first }}: {{ property.last }}</li>
{%- endfor -%}
</ul>
{%- endif -%}

<div class="CartItem__PriceList">
{%- if line_item.original_price != line_item.final_price -%}
<span class="CartItem__Price Price Price--highlight">{{ line_item.final_price | money_without_trailing_zeros }}</span>
<span class="CartItem__OriginalPrice Price Price--compareAt">{{ line_item.original_price | money_without_trailing_zeros }}</span>
{%- else -%}
<span class="CartItem__Price Price">{{ line_item.final_price | money_without_trailing_zeros }}</span>
{%- endif -%}

{%- if line_item.line_level_discount_allocations != blank -%}
<ul class="CartItem__DiscountList">
{%- for discount_allocation in line_item.line_level_discount_allocations -%}
<li class="CartItem__Discount">
{%- render 'icon' with 'sale' -%}{{ discount_allocation.discount_application.title }}: -{{ discount_allocation.amount | money }}
</li>
{%- endfor -%}
</ul>
{%- endif -%}
</div>

{%- if line_item.unit_price_measurement -%}
<div class="CartItem__UnitPriceMeasurement">
<div class="UnitPriceMeasurement Heading Text--subdued">
<span class="UnitPriceMeasurement__Price">{{ line_item.unit_price | money_without_trailing_zeros }}</span>
<span class="UnitPriceMeasurement__Separator">/ </span>

{%- if line_item.unit_price_measurement.reference_value != 1 -%}
<span class="UnitPriceMeasurement__ReferenceValue">{{ line_item.unit_price_measurement.reference_value }}</span>
{%- endif -%}

<span class="UnitPriceMeasurement__ReferenceUnit">{{ line_item.unit_price_measurement.reference_unit }}</span>
</div>
</div>
{%- endif -%}
</div>

{%- capture item_actions -%}
<div class="CartItem__Actions Heading Text--subdued" style="text-align: center">
<div class="CartItem__QuantitySelector">
<div class="QuantitySelector">
{%- assign quantity_minus_one = line_item.quantity | minus: 1 -%}

<a class="QuantitySelector__Button Link Link--primary" title="{{ 'cart.items.set_quantity' | t: new_quantity: quantity_minus_one }}" href="{{ routes.cart_change_url }}?quantity={{ quantity_minus_one }}&id={{ line_item.key }}" data-quantity="{{ quantity_minus_one }}" data-line-id="{{ line_item.key }}" data-action="update-item-quantity">
{%- render 'icon' with 'minus' -%}
</a>

<input type="text" name="updates[]" id="updates_{{ line_item.key }}" class="QuantitySelector__CurrentQuantity" pattern="[0-9]*" data-line-id="{{ line_item.key }}" value="{{ line_item.quantity }}">

{%- assign quantity_plus_one = line_item.quantity | plus: 1 -%}

<a class="QuantitySelector__Button Link Link--primary" title="{{ 'cart.items.set_quantity' | t: new_quantity: quantity_plus_one }}" href="{{ routes.cart_change_url }}?quantity={{ quantity_plus_one }}&id={{ line_item.key }}" data-quantity="{{ quantity_plus_one }}" data-line-id="{{ line_item.key }}" data-action="update-item-quantity">
{%- render 'icon' with 'plus' -%}
</a>
</div>
</div>

<a href="{{ routes.cart_change_url }}?quantity=0&id={{ line_item.key }}" class="CartItem__Remove Link Link--underline Link--underlineShort" data-quantity="0" data-line-id="{{ line_item.key }}" data-action="remove-item">{{ 'cart.items.remove' | t }}</a>
</div>
{%- endcapture -%}

{{ item_actions }}
</div>

{%- unless for_drawer -%}
{{ item_actions }}

<div class="CartItem__LinePriceList Heading Text--subdued" style="text-align: right">
{%- if line_item.original_line_price != line_item.final_line_price -%}
<span class="CartItem__Price Price Price--highlight">{{ line_item.final_line_price | money_without_trailing_zeros }}</span>
<span class="CartItem__Price Price Price--compareAt">{{ line_item.original_line_price | money_without_trailing_zeros }}</span>
{%- else -%}
<span class="CartItem__Price Price">{{ line_item.final_line_price | money_without_trailing_zeros }}</span>
{%- endif -%}
</div>
{%- endunless -%}
</div>

{%- if for_drawer -%}
</div>
{%- endif -%}
{%- endfor -%}
</div>