Nhanh.vn website template
  • Giới thiệu
  • Layout
    • Layout chung
    • Header
    • Footer
    • CSS
    • Javascript
    • Font
    • Image
  • Page
    • Quản lý trang
      • Tổng quan
    • Trang chủ
    • Sản phẩm
      • Tìm kiếm
      • Danh sách sản phẩm
      • Danh mục sản phẩm
      • Chi tiết sản phẩm
      • Tag
      • Thương hiệu
      • Bảo hành
    • Đơn hàng
      • Giỏ hàng
      • Thanh toán
      • Thanh toán thành công
      • Danh sách đơn hàng
      • Tra cứu đơn hàng
    • Tin tức
      • Danh sách tin tức
      • Danh mục tin tức
      • Chi tiết tin tức
      • Tìm kiếm
    • Bộ sưu tập
      • Danh sách bộ sưu tập
      • Danh mục bộ sưu tập
      • Chi tiết bộ sưu tập
    • Promotion
      • Danh sách chương trình promotion
      • Chi tiết chương trình promotion
    • Campaign
      • Danh sách chương trình marketing
      • Chi tiết chương trình marketing
    • Season
      • Chi tiết season
    • Người dùng
      • Đăng ký
      • Đăng nhập
      • Đổi mật khẩu
      • Quên mật khẩu
      • Sửa thông tin
      • Thông tin
    • Affiliate
      • Affiliate
    • Trang khác
      • Quickview
      • Mini Cart
      • Hệ thống cửa hàng
Powered by GitBook
On this page
  1. Page
  2. Sản phẩm

Chi tiết sản phẩm

Các nội dung cơ bản của trang chi tiết sản phẩm

Trang chi tiết sản phẩm là trang chứa các thông tin chi tiết của sản phẩm như hình ảnh, thông tin về mô tả sản phẩm, chi tiết sản phẩm, các thuộc tính sản phẩm... và các thao tác mua bán sản phẩm. Trang sẽ giúp cho khách hàng có được cái nhìn cụ thể, rõ ràng nhất trước khi quyết định mua sản phẩm. Trang chi tiết sản phẩm sản phẩm của 1 website cơ bản thì sẽ bao gồm các nội dung sau:

Các thẻ meta

{% extends layout_layout %}
{% block meta %}
   {{ headTitle(product.name).setSeparator(' - ').setAutoEscape(false)|raw }}
    <meta name="keywords" content="{{ product.metaKeywords ?: product.name }}">
    <meta name="description" content="{{ product.metaDescription ?: product.name }}">
    <meta property="og:title" content="{{ product.metaTitle ?: product.name }}">
    <meta property="og:url" content="{{ product.canonicalLink }}">
    <meta property="og:image" content="{{ product.imageUri }}">
    <meta property="og:type" content="website">
    <link rel="canonical" href="{{ product.canonicalLink }}" />
{% endblock %}

Các thông tin về sản phẩm

  • Ảnh sản phẩm

Ảnh sản phẩm sẽ thường nằm ở vị trí đầu tiên của trang và sẽ được gọi ra như sau:

{% if (product.images) %}
    {% for i in product.images %}
        <a href="javascript:void(0)" data-attr="{{ i.thumbnailUri }}" class="image-frame" >
            <picture >
                <source data-srcset="{{ i.thumbnailUri }}" srcset="{{ i.thumbnailUri }}">
                <img loading="lazy" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" class="img-loop" alt="{{ product.name }}">
            </picture>
        </a>
    {% endfor %}
{% endif %}
  • Tên sản phẩm

Tên sản phẩm sẽ được đặt trong thẻ h1 như sau:

<h1>{{ product.name }}</h1>
  • Giá sản phẩm

Giá sản phẩm thường sẽ bao gồm giá mới, giá cũ và số phần trăm giảm giá (nếu có) của sản phẩm và sẽ được gọi ra như sau:

<div>
    <span>
        <strong>Giá:</strong>
    </span>
    

{% if (product.priceAfterDiscount > 0) %}
        <p>{{ product.priceAfterDiscount|number_format(0) }}đ</p>
        <del>{{product.price|number_format(0) }}đ</del>

    {% elseif (product.oldprice() > 0) %}
        <p>{{ product.price|number_format(0) }}đ</p>
        <del>{{ product.oldPrice|number_format(0) }}đ</del>
    {% else %}
        <p>{{ product.price|number_format(0) }}đ</p>
    {% endif %}
    {% if product.calcDiscountPercent > 0 %}
        <span>
            -{{ product.calcDiscountPercent}}%
        </span>
    {% endif %}


</div>
  • Thuộc tính sản phẩm

Thuộc tính của sản phẩm sẽ gồm 2 thuộc tính chính là màu và size, sẽ được gọi ra như sau:

{% set variableAttributes = product.variableAttributes %}
<div class="swatch-wrapper">
    {% set color = variableAttributes['color'] %}
    {% set flag=0 %}
    {% if color is not null or color is not empty %}
        {% set valuesColor = color.childValues %}
        {% set numbC =  (valuesColor | length) %}
        {% if(valuesColor is not null and numbC>0) %}
            {% set flag = flag + 1 %}
            <div class="req _colorSelect" column="{{ color.column }}">
                <span>Màu sắc</span>
                <div>
                    {% for attrValue in valuesColor %}
                       {% set arrColor = [] %}
                       {% set arrColor = arrColor|merge({ (color.column): attrValue.id }) %}
                       {% set img = getAttrValueImage(arrColor,false, {'return':'image','product':product}) %}
                       {% set pIdsAttrStr = getAttrValueImage(arrColor,true,{'product':product}) | json_encode() %}
                       {% set pIdsAttrStr = pIdsAttrStr | replace({'[': '', ']': ''}) %}
                        <a class="_pSelect {{ (numbCl == 1) ?'active':'' }}" data-psId="{{ pIdsAttrStr }}" data-id="{{ attrValue.id }}" data-src="{{ img }}">
                            {{ attrValue.name }}
                         </a>
                    {% endfor %}
                </div>
            </div>
        {% endif %}
    {% endif %}

    {% set size = variableAttributes['size'] %}
    {% if size is not empty %}
        {% set valuesSize = size.childValues %}
        {% set numbS = (valuesSize | length) %}
        {% if(valuesSize is not null and numbS>0) %}
            {% set flag = flag + 1 %}
            <div class="p-line">
                <div>{{ translate('Kích cỡ') }}</div>
                <div class="req _sizeSelect" data-column="{{ size.column }}">
                   {% for attrValueC in valuesSize %}
                          <a data-id="{{ attrValueC.id }}" class="{{ ((numbS == 1) ? 'active' : '') }}">
                              {{ attrValueC.name }}
                           </a>
                    {% endfor %}
                   </div>
              </div>
           {% endif %}
    {% endif %}

    {% if((flag==0) and (product.childs)) %}
        {% set flagchilds= product.childs|length %}
        <p>
            <span>Chọn sản phẩm</span>
            <select class="childProducts">
                <option value="1">Chọn sản phẩm</option>
                {% set name_parent = product.name %}
                {% for cp in product.childs %}
                    <option value="{{ cp.id }}, {{ cp.price }}"
                            href="{{ cp.imageUri }}"
                            data-src="{{ cp.imageUri }}">
                        {{ cp.name|replace({ name_parent :''}) }}
                    </option>
                {% endfor %}
            </select>
        </p>
    {% endif %}


</div>
  • Số lượng sản phẩm

Số lượng sản phẩm sẽ được tùy chỉnh theo ý muốn của khách hàng và sẽ thường gồm nút tăng, giảm, ô để nhập số lượng. Số lượng sản phẩm sẽ được gọi ra như sau:

<div class="_quantityCart">
    <a class="_subtract" data-id="{{ product.id }}">
         <i class="fal fa-minus"></i>
    </a>
    <input class="_numberProduct" max="{{ product.available }}" min="1"
               type="number" value="1" psId="{{ product.id }}">
    <a class="_plus" data-id="{{ product.id }}">
          <i class="fal fa-plus"></i>
     </a>
</div>
  • Nút thêm sản phẩm vào giỏ hàng và nút mua ngay

Nút thêm sản phẩm vào giỏ hàng và nút mua ngay sẽ được gọi ra như sau:

{% if(ivt <= 0) %}
    <a class="_addToCart" data-psid="{{ product.id }}">
           <i class="far fa-shopping-cart"></i>
        {{ translate('Sản phẩm tạm hết hàng') }}
    </a>
    <a class="_buyNow" data-psid="{{ product.id }}">
         {{ translate('Sản phẩm tạm hết hàng') }}
    </a>
{% else%}
     {% if (flag > 0) %}
         <a class="_addToCart" title="{{ translate('Vui lòng chọn màu sắc hoặc kích cỡ') }}!" data-ck="0" data-psid="{{ product.id }}" data-selId="{{ product.id }}" >
               <i class="far fa-shopping-cart"></i>
               {{ translate('Thêm vào giỏ hàng') }}
         </a>
         <a class="_buyNow" title="{{ translate('Vui lòng chọn màu sắc hoặc kích cỡ') }}!" data-ck="0" data-psid="{{ product.id }}" data-selId="{{ product.id }}" >
             {{ translate('Mua ngay') }}
         </a>
    {% else %}
         <a class="_addToCart" data-ck="1" data-psid="{{ product.id }}" data-selId="{{ product.id }}" >
             <i class="far fa-shopping-cart"></i>
            {{ translate('Thêm vào giỏ hàng') }}
         </a>
         <a class="_buyNow" data-ck="1" data-psid="{{ product.id }}" data-selId="{{ product.id }}" >
              {{ translate('Mua ngay') }}
         </a>
     {% endif %}
{% endif %}
  • Mô tả sản phẩm

Mô tả sản phẩm là phần mô tả ngắn của sản phẩm sẽ được thêm trong trang quản trị của khách hàng.

Mô tả sản phẩm được gọi ra như sau:

{{ product.description | raw }}
  • Chi tiết sản phẩm

Chi tiết sản phẩm là phần bài viết chi tiết của sản phẩm sẽ được thêm trong trang quản trị của khách hàng.

Chi tiết sản phẩm được gọi ra như sau:

{{ product.content| raw }}
  • Sản phẩm tương tự

Là những sản phẩm thuộc cùng 1 danh mục

{% set productRelated = searchProducts({'limit':5, 'categoryId':product.categoryId,'excludedIds': product.id}) %}
  • Sản phẩm đã xem

Là lịch sử những sản phẩm người dùng đã xem

{% set lastProduct = getHistory({'limit':5}) %}

Ví dụ box sản phẩm

{% set productRelated = searchProducts({'limit':5, 'categoryId':product.categoryId,'excludedIds': product.id}) %}
        {% if(productRelated is not empty) %}
        <div>
            {% for n in productRelated %}
                {% set priceDiscount = n.priceAfterDiscount %}
                {% set percent = n.calcDiscountPercent %}
                <div>
                    <a href="{{ n.viewLink }}">
                        <picture>
                            <source data-srcset="{{ n.thumbnailUri }}">
                            <img loading="lazy" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"
                                 alt="{{ n.name | raw }}"/>
                        </picture>
                    </a>
                    {% if(percent > 0) %}
                        <div>- {{percent }}%</div>
                    {% endif %}
                    <a href="{{ n.viewLink }}">{{ n.name | raw }}</a>
                    <div>
                        {% if p.priceAfterDiscount > 0 %}
                        <p>{{ p.priceAfterDiscount | number_format(0) }}₫
                        <del>{{ p.price | number_format(0) }}₫</del></p>
                        {% elseif (p.oldPrice > 0) %}
                            <p>{{ p.price | number_format(0) }}₫
                            <del>{{ p.oldPrice | number_format(0) }}₫</del></p>
                        {% else %}
                            <span>{{ p.price | number_format(0) }}₫</span>
                        {% endif %}
                    </div>
                </div>
            {% endfor %}
        </div>
    {% endif %}
  • Đánh giá sản phẩm

Là những đánh giá của người dùng về sản phẩm đấy (sao + bình luận + tên người bình luận ...).

Lấy trung bình đánh giá của người dùng (Đã làm tròn lên).


<div data-gb-custom-block data-tag="set" data-0='itemId' data-1='itemId' data-2='itemId' data-3='itemId'></div>

Lấy số lượt đánh giá

{% set rating = countRating({'itemId':product.id,'type':1}) %}

Lấy ra các comment đánh giá

{% set rate = getProductRates({'productId':product.id}) %}
PreviousDanh mục sản phẩmNextTag

Last updated 3 months ago