Điểm:1

Dường như không thể định dạng ngày theo nhánh từ UTC sang ngôn ngữ của Người dùng

lá cờ in

Tôi đang cố định dạng trường ngày từ loại nội dung sự kiện mà tôi đã tạo để có thể chuyển ngày vào một trình xuất sự kiện tạo sự kiện trong lịch chẳng hạn như Google, Apply, Yahoo và Microsoft. tôi sử dụng lịch_link cần một vài trường và ngày để tạo sự kiện lịch phù hợp.

{# lịch_liên kết(link_type, title, start_date, end_date, all_day, description, location) #}
{% set linkGoogle = calendar_link("google", node.field_event_title.value|raw|replace({'[html format="full_html" different_values="0"]': "", '[/html]': "" })|striptags, ngày(dateStartField), ngày(dateEndField), sai, "", "") %}
{% set linkICS = calendar_link("ics", node.field_event_title.value|raw|replace({'[html format="full_html" different_values="0"]': "", '[/html]': "" })|striptags, ngày(dateStartField), ngày(dateEndField), sai, "", "") %}
{% set linkYahoo = calendar_link("yahoo", node.field_event_title.value|raw|replace({'[html format="full_html" different_values="0"]': "", '[/html]': "" })|striptags, ngày(dateStartField), ngày(dateEndField), sai, "", "") %}
{% set linkWebOutlook = calendar_link("webOutlook", node.field_event_title.value|raw|replace({'[html format="full_html" different_values="0"]': "", '[/html]': "" })|striptags, ngày(dateStartField), ngày(dateEndField), sai, "", "") %}

Điều này hoạt động tốt. Tuy nhiên, khi tôi lấy trường ngày, nó ở dạng UTC chứ không phải ở ngôn ngữ của người dùng. Tôi hiểu tại sao, vì Drupal lưu trữ ngày ở dạng UTC trong cơ sở dữ liệu. (Lưu ý: node.field_event_start_date.value bằng dateStartField vì tôi chỉ thực hiện một số định dạng đơn giản với twig)

{{ node.field_event_start_date.value }}

Tôi đã tìm thấy một số đề xuất như sử dụng tiện ích mở rộng Intl của Twig sẽ cung cấp bộ lọc Twig, localizeddate hoặc format_datetime (tôi nghĩ localizeddate là phiên bản cũ), nhưng khi tôi sử dụng trình soạn nhạc để cài đặt tiện ích mở rộng twig (https://twig.symfony.com/doc/3.x/filters/format_datetime.html):

nhà soạn nhạc yêu cầu twig/intl-extra
nhà soạn nhạc yêu cầu twig/bó phụ

nó không hoạt động. Twig không nhận ra các bộ lọc. Tôi đã thử xem thông tin từ đây. Tôi đã thấy những người khác tham khảo khái niệm kích hoạt tiện ích mở rộng Twig cho các dự án Symfony nhưng tôi không chắc điều đó sẽ ở đâu trong phần phụ trợ của trang Drupal. Xem hình ảnh đính kèm để biết lỗi bộ lọc:

nhập mô tả hình ảnh ở đây

Mã có format_datetime được cho là tính đến ngôn ngữ của người dùng (Bật https://twig.symfony.com/doc/3.x/filters/format_datetime.html việc sử dụng format_datetime mặc định được cho là có tính đến ngôn ngữ hiện tại):

<span>Calendar Start Date TimeZone Format: {{ calStartDate|format_datetime }}</span>

Tôi gần như cạn kiệt ý tưởng khi cố gắng định dạng ngày UTC của mình thành ngày được bản địa hóa thông qua Twig mà tôi có thể đưa vào trình xuất liên kết lịch. Tôi biết tôi có thể định dạng ngày thành múi giờ cụ thể bằng các bộ lọc Twig cơ bản, nhưng tôi không thể kiểm tra ngôn ngữ của người dùng là gì, do đó làm cho phương pháp này trở nên vô hiệu vì ngôn ngữ sẽ là động và không tĩnh.

Có một cách tiếp cận tốt hơn? Tôi có nên tạo một hook php để sửa đổi các trường ngày cho nút--event.html.twig không? Điều này có phù hợp không? Tôi không nghĩ mình cần tạo một mô-đun chỉ cho vấn đề đơn giản này nhưng tôi không chắc.

Hãy cho tôi biết nếu bạn có bất kỳ đầu mối hoặc giải pháp nào cho bất kỳ vấn đề nào của tôi.

Cảm ơn,
thợ thuộc da

Điểm:0
lá cờ cn

Thật khó để xử lý định dạng ngày Drupals UTC với các thư viện không phải Drupal, hãy lấy dấu thời gian Unix:

{{ node.field_date.date.gettimestamp }}

Hoặc định dạng tốt hơn các trường Drupal bằng trình định dạng trường Drupal. Trong Twig bạn có thể sử dụng |xem bộ lọc của Tweak cành cây:

{{ node.field_date[0]|view }}

Bạn có thể thêm một mảng làm đối số cho cài đặt trình định dạng trường. Ngay cả khi bạn chỉ muốn giải quyết vấn đề này bằng mã, hãy tạm thời định cấu hình bộ định dạng trường trong giao diện người dùng và xuất cấu hình kết quả. Sau đó, bạn biết các cài đặt cho |xem(). Nhìn thấy https://git.drupalcode.org/project/twig_tweak/-/blob/3.x/docs/cheat-sheet.md#view

Bạn có thể làm nhiều thứ hơn trong PHP. Nhìn thấy Cách nhận chuỗi ngày được định dạng từ đối tượng DateTimeItem

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.