account/contact-detail
Chi tiết một yêu cầu hỗ trợ và các phản hồi.
- Tệp giao diện:
account/contact-detail.html - Đường dẫn:
/tai-khoan/lien-he/{contactId} - Controller:
App\Modules\Account\AccountController::contactDetailPage
Ngoài những biến dưới đây, slot này còn nhận toàn bộ biến toàn cục.
Biến của trang
| Biến | Kiểu | Mô tả | Từ phiên bản |
|---|---|---|---|
contact |
Contact |
Yêu cầu hỗ trợ đang xem, kèm lịch sử trả lời. | 1.0 |
error |
string | null |
Thông báo lỗi khi gửi phản hồi thất bại. | 1.0 |
Mã đầy đủ
Toàn bộ tệp account/contact-detail.html của bộ giao diện mặc định. Chép về templates/<bộ giao diện của bạn>/account/contact-detail.html rồi sửa theo ý muốn.
{%- comment -%}
/tai-khoan/lien-he/{id} — MỘT tin nhắn khách đã gửi. Chỉ đọc.
Từ 1.1 không còn hội thoại: `contact.body` là nội dung, `contact.messages`
đã bị bỏ, và không còn form trả lời. Tính năng hội thoại thuộc về module
ticket trong tương lai.
⚠️ `contact.body` do KHÁCH nhập và API trả về đúng như đã gõ. Liquid KHÔNG tự
escape, nên mọi giá trị người dùng nhập đều phải qua `| escape`.
⚠️ Mảng rỗng là TRUTHY trong Liquid — chặn `attachments` bằng `.size > 0`.
⚠️ KHÔNG hiển thị `is_spam` / `spam_score`: đó là thông tin nội bộ của nhân
viên, và cho khách thấy điểm spam của chính họ vừa vô ích vừa xúc phạm.
{%- endcomment -%}
{%- assign ct_status = contact.status | default: '' -%}
<div class="container page-content">
<div class="account-layout">
{% assign active_page = 'contacts' %}
{% include 'account/_sidebar' %}
<div class="account-main">
<a href="/tai-khoan/lien-he" class="back-link">← Quay lại</a>
<h1 class="page-title">{{ contact.title | escape }}</h1>
<span class="badge badge--{{ ct_status }}">
{% if ct_status == 'handled' %}Đã xử lý{% elsif ct_status == 'new' %}Mới{% else %}{{ ct_status | escape }}{% endif %}
</span>
{% if error %}<div class="alert alert--error">{{ error | escape }}</div>{% endif %}
<div class="message">
<p class="message__body" style="white-space:pre-line">{{ contact.body | escape }}</p>
<p class="message__meta">{{ contact.created_at | date: '%d/%m/%Y %H:%M' }}</p>
</div>
{% if contact.attachments.size > 0 %}
<ul class="attachments">
{% for a in contact.attachments %}
<li>
<a href="{{ a.url }}" target="_blank" rel="noreferrer noopener">{{ a.original_name | escape }}</a>
</li>
{% endfor %}
</ul>
{% endif %}
</div>
</div>
</div>