0
0
Lập trình
Admin Team
Admin Teamtechmely

Truy xuất các trường từ tham số rendering "liên kết" trong Sitecore

Đăng vào 2 tuần trước

• 4 phút đọc

Chủ đề:

#xmcloud#sitecore

Giới thiệu

Trong quá trình làm việc với Sitecore, tôi đã gặp phải một tình huống khá thú vị liên quan đến việc thiết lập một khóa và giá trị bộ lọc để truyền vào Sitecore Search từ XM Cloud thông qua tham số rendering. Trong bài viết này, chúng ta sẽ tìm hiểu cách lấy các trường từ tham số rendering "liên kết" trong Sitecore, cũng như những thách thức và giải pháp liên quan.

Mục tiêu của bài viết

Mục tiêu của bài viết này là cung cấp cho bạn cái nhìn sâu sắc về cách làm việc với tham số rendering trong Sitecore, cụ thể là khi bạn cần lấy giá trị từ các trường liên kết như droplink và droplist. Chúng ta cũng sẽ thảo luận về những vấn đề thường gặp và các mẹo để tối ưu hóa hiệu suất.

Cấu trúc của tham số rendering

Khi làm việc với Sitecore, việc truyền các tham số rendering chính xác là rất quan trọng. Trong trường hợp cụ thể của tôi, tôi cần lấy các kết quả tìm kiếm và đôi khi giới hạn chúng theo một trường nhất định với giá trị cụ thể. Để thực hiện điều này, tôi đã sử dụng các trường droplink để giữ cho kết nối với các mục trong Sitecore.

  • Giữ liên kết: Khi bạn sử dụng droplink, bạn sẽ không mất dấu các mục nếu chúng di chuyển trong cây phân cấp.
  • Dễ dàng quản lý: Việc chọn và quản lý các giá trị từ taxonomy trong Sitecore trở nên dễ dàng hơn.

Mặc dù việc sử dụng droplink rất hợp lý, nhưng có một vấn đề phát sinh: mặc định, Sitecore Search không lưu ID mà chỉ lưu các giá trị văn bản. Điều này có nghĩa là nếu bạn cần ID của mục để sử dụng cho một API khác, bạn sẽ gặp khó khăn.

Thông tin hữu ích

  • API Push: Bạn có thể sử dụng API Push để lấy các giá trị mà bạn muốn, nhưng không phải lúc nào cũng cần thiết phải lấy mọi thứ.
  • Giá trị văn bản: Bạn cần lấy tên hoặc giá trị hiển thị từ trường thay vì chỉ ID.

Giải pháp: Cấu hình LayoutService.DetailedRenderingParams

Để giải quyết vấn đề này, bạn có thể thay đổi cấu hình trong Sitecore. Cụ thể, bạn cần thiết lập giá trị LayoutService.DetailedRenderingParams thành true. Khi làm điều này, đầu ra trên Edge sẽ hiển thị giá trị trường tùy chỉnh thay vì chỉ ID.

Cách thiết lập

  1. Truy cập vào cấu hình của Sitecore.
  2. Tìm kiếm LayoutService.DetailedRenderingParams.
  3. Thay đổi giá trị thành true.
  4. Lưu lại cấu hình và khởi động lại dịch vụ nếu cần.

Vấn đề phát sinh tiếp theo

Tuy nhiên, có một vấn đề khác mà bạn có thể gặp phải: nếu bạn thực sự cần ID của mục, bạn sẽ không thể lấy được chúng từ đầu ra. Điều này có thể gây khó khăn trong việc làm việc với các API khác. Để giải quyết, bạn có thể chuyển sang sử dụng droplist cho khóa và text cho giá trị.

Mẹo thực hành

  • Nếu bạn bật tính năng này, nó sẽ áp dụng cho tất cả các tham số rendering. Hãy xem xét kỹ lưỡng các trường loại "liên kết" bạn đã sử dụng.
  • Sau khi ID được thêm vào, việc lấy giá trị sẽ không còn đơn giản như trước. Bạn sẽ cần phải ánh xạ đến một mô hình để lấy ID đó.

Kiểm tra hồi quy

Đừng quên thực hiện kiểm tra hồi quy sau khi thay đổi cấu hình. Điều này sẽ giúp bạn đảm bảo rằng mọi thứ vẫn hoạt động như mong đợi.

Thực tiễn tốt nhất

  • Luôn kiểm tra các trường droplink: Đảm bảo rằng bạn đang sử dụng các trường này một cách hợp lý và có hiệu quả.
  • Sử dụng các giá trị văn bản: Trong các trường hợp bạn không cần ID, hãy sử dụng giá trị văn bản để giảm thiểu sự phức tạp.

Câu hỏi thường gặp (FAQ)

1. Tôi có thể lấy ID từ tham số rendering không?

Mặc định thì không, nhưng bạn có thể sử dụng API Push để lấy chúng.

2. Tại sao lại cần cấu hình LayoutService.DetailedRenderingParams?

Để đảm bảo rằng bạn nhận được giá trị trường tùy chỉnh thay vì chỉ ID.

Kết luận

Việc lấy các trường từ tham số rendering "liên kết" trong Sitecore có thể gặp phải một số thách thức, nhưng với những mẹo và cấu hình đúng, bạn có thể tối ưu hóa quy trình làm việc của mình. Hãy thử áp dụng những gì bạn đã học và đừng ngần ngại chia sẻ kinh nghiệm của mình với cộng đồng. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại ý kiến dưới bài viết này!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào