2013-07-15 16 views
5

Tính năng Thư viện khách hàng (ClientLib) trong Adobe AEM (trước đây là Adobe CQ) giúp dễ dàng bao gồm thư viện khách theo thể loại và mỗi thư viện có thể lấy các thư viện khác thông qua các phụ thuộc. Tuy nhiên tài liệu xung quanh "Chủ đề" hơi mỏng.Chủ đề được áp dụng như thế nào trong Adobe AEM?

Điều này link là tất cả những gì tôi có thể tìm thấy đối tượng. Dưới đây là một đoạn trích của mã mẫu:

<%-- theme only (theme-js + css) --%> 
<cq:includeClientLib theme="cq.collab.calendar, cq.security" /> 

Nếu thẻ này được sử dụng như thế nào CQ sẽ xác định những gì Khách hàng muốn kéo vào? Liệu nó tìm kiếm một thuộc tính chủ đề của kiểu String []?

Hoặc tìm kiếm cấu trúc thư mục nhất định trong phần/etc/designs?

Hoặc nó có được chuyển thành các danh mục và thêm chủ đề-j vào cuối như vậy không?

cq.collab.calendar.theme-js 

Hoặc là chủ đề được gọi thông qua URL? Nói cách khác, từ "chủ đề", trong trường hợp này, là một mã thông báo được thay thế bằng bộ chọn từ một chủ đề được áp dụng URL?

Trả lời

8

Thư viện khách hàng nằm trong thư mục cq: ClientLibraryFolder. Thư mục này có thuộc tính được gọi là danh mục. Trong ví dụ sau, cq.collab.calendar và cq.security là loại:

<cq:includeClientLib theme="cq.collab.calendar, cq.security" /> 

Khi điều này bao gồm được gọi, nó đang tìm kiếm bất kỳ cq: ClientLibraryFolder với cq.collab.calendar loại hoặc cq.security được giao cho nó. Sử dụng thuộc tính chủ đề thêm cả css và javascript của clientLibs nằm trong thư mục chủ đề của cha mẹ ClientLibraryFolder. Nếu bạn xem nguồn trang của mình, chúng sẽ được thêm vào các tệp css và js của riêng chúng. Ví dụ, tôi tạo ra các cấu trúc sau đây theo geometrixx clientLibary:

geometrixx 
    clientlibs 
     themes 
      myTheme (clientLibray) 
       css.txt 
       myCSS.css 
       js.txt 
       myJS.js 

Nếu bạn sử dụng tài sản với clientlib này chủ đề bạn sẽ nhận được một myTheme.css và myTheme.js tập tin hiển thị trong tab nguồn/mạng của bạn.

Cờ theo chủ đề là một cách để tắt và bao gồm chủ đề. Cq sau đây: include sẽ bao gồm tất cả css trong clientLibrary, bao gồm cả các công cụ trong thư mục themes.

<cq:includeClientLib css="apps.geometrixx-main" /> 

Tuy nhiên, nếu tôi thêm cờ theo chủ đề và đặt nó là sai sự thật, bất cứ điều gì trong thư mục chủ đề bị loại trừ:

<cq:includeClientLib css="apps.geometrixx-main" themed="false" /> 

Vì vậy, trong trường hợp đó, myTheme.css sẽ không hiển thị. Một điều cần lưu ý, là cờ theo chủ đề, chỉ hoạt động trên "css tinh khiết và js bao gồm" Danh mục và thuộc tính chủ đề sẽ không hoạt động với điều này.

Câu trả lời cho câu hỏi này đi qua này một chút: What exactly does currentDesign.writeCssincludes include?

+0

Thuộc tính "theo chủ đề" sẽ được chơi như thế nào: "theo chủ đề: Cờ chỉ ra rằng chỉ nên bao gồm các thư viện theo chủ đề hoặc không theo chủ đề. Nếu bỏ qua, cả hai tập hợp đều được bao gồm. Chỉ áp dụng cho JS hoặc CSS thuần túy (không phải cho các danh mục hoặc chủ đề bao gồm). " Nếu chủ đề chỉ đơn giản là bao gồm các danh mục JS + CSS thì những gì "theo chủ đề hoặc không theo chủ đề" đề cập đến? Nó có vẻ như có một số loại hỗ trợ chủ đề nhưng có lẽ tôi đang đọc quá nhiều vào nó. – jedatu

+0

Được rồi, đã nghiên cứu và thử nghiệm nhiều hơn một chút và sửa đổi câu trả lời của tôi. – Woodifer

+0

Vì vậy, mặc dù myTheme có danh mục "apps.geometrixx-main", nó sẽ không được bao gồm khi theo chủ đề = false vì thư mục mẹ của nó được gọi là "chủ đề"? – jedatu

1

Nó đã được đề cập chủ đề mà được lấy từ các yêu cầu đã làm một ít đào một cuối cùng phát hiện ra nó cố gắng lấy nó từ request parameter có tên là "forceTheme "

private String getDefaultThemeName(SlingHttpServletRequest request) 
    { 
    String theme = request.getParameter("forceTheme"); 
    if (theme == null) { 
     theme = this.defaultUserThemeName; 
    } 
    return theme; 
    } 

Nhưng yêu cầu cần thiết.getThuộc tính vì sử dụng tham số truy vấn sẽ gửi tất cả yêu cầu tới pub.

Vì vậy, hãy đoán tùy chọn chủ đề này hoàn toàn không sử dụng.

2

Phụ thuộc vào ý bạn là "chủ đề". Nếu bạn được sử dụng để wordpress, drupal, vv, những gì được gọi là một chủ đề trong các hệ thống được gọi là một "thiết kế" trong CQ5/AEM.

Để đặt thiết kế, bạn chọn "đường dẫn thiết kế" trong thuộc tính trang. Điều này sẽ ảnh hưởng đến nơi thông tin về các thành phần cho mỗi mẫu được lưu trữ (tất cả các thay đổi được thực hiện trong chế độ thiết kế về thành phần nào được cho phép lưu trữ trong đường dẫn này) và là quy ước cho nơi lưu trữ tài nguyên hình ảnh CSS, JS và không phải DAM. Nó có kế hoạch, nhưng bạn có thể tái sử dụng mã và đánh dấu trong AEM/CQ5 nhưng hoàn toàn thay đổi giao diện bằng cách thay đổi thiết kế.

Các vấn đề liên quan