2013-07-15 22 views
5

Funkcja biblioteki klienta (ClientLib) w Adobe AEM (dawniej Adobe CQ) ułatwia dołączanie bibliotek klienckich według kategorii i każda biblioteka może pobierać inne biblioteki za pośrednictwem zależności. Jednak dokumentacja wokół "Motywów" jest trochę cienka.W jaki sposób są stosowane motywy w Adobe AEM?

Ten numer link dotyczy wszystkiego, co mogę znaleźć na ten temat. Oto fragment kodu próbki:

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

Jeśli ten tag miały być używane jak CQ by ustalić, co klienckie Libs ciągnąć się? Czy szuka właściwości tematu typu String []?

Czy szuka pewnej struktury katalogów w sekcji/etc/designs?

A może zajmuje to przekazane kategorie i dodaje do końca motyw-js?

cq.collab.calendar.theme-js 

Lub czy motyw jest wywoływany przez URL? Innymi słowy, słowo "motyw" w tym przypadku jest tokenem, który jest zastępowany selektorem z tematu stosowanego w adresie URL?

Odpowiedz

8

Biblioteki klienta znajdują się w folderze cQ: ClientLibraryFolder. Ten folder ma właściwość o nazwie category. W poniższym przykładzie cq.collab.calendar i cq.security są kategorie:

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

Kiedy to obejmować nazywa, to szuka jakiejkolwiek CQ: ClientLibraryFolder z cq.collab.calendar kategorii lub cq.security przypisane do niego. Użycie właściwości theme powoduje dodanie zarówno css, jak i javascript do clientLibs znajdujących się w folderze motywów nadrzędnego ClientLibraryFolder. Jeśli chcesz zobaczyć swoje źródło strony, zostaną one dodane do ich własnych plików css i js. Na przykład, stworzyłem następującą strukturę pod geometrixx clientLibary:

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

Jeśli użyć właściwości motywu z tej clientlib dostaniemy plik myTheme.css i myTheme.js pokazano w karcie źródło/sieci.

Flaga tematyczna to sposób na wyłączanie i włączanie tematu. Następujące cq: include będzie zawierało wszystkie css w bibliotece clientLibrary, w tym elementy w katalogu themes.

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

Jednak jeśli dodać tematycznych flagę i ustawić go na fałszywy, wszystko w katalogu tematycznego jest wykluczone:

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

Więc w tym przypadku, myTheme.css nie pojawi. Należy pamiętać, że flaga tematyczna działa tylko w "czystym css i js zawiera" Kategorie i właściwości kompozycji nie będą z tym działać.

Odpowiedź na to pytanie wykracza ponad to trochę: What exactly does currentDesign.writeCssincludes include?

+0

Jak działa "tematyczna" właściwość, to: "temat: Flaga, która wskazuje, czy powinny być dołączone tylko biblioteki tematyczne lub nie tematyczne. Jeśli pominięto, oba zestawy są uwzględnione. Dotyczy tylko czystego JS lub CSS obejmuje (nie dotyczy kategorii lub motywu). " Jeśli tematem są po prostu kategorie JS + CSS, to co odnosi się do "tematycznego lub niesformatowanego"? Wygląda na to, że istnieje pewne wsparcie dla motywów, ale może za dużo czytam. – jedatu

+0

Dobra, zrobiłem trochę więcej badań i testów i poprawiłem moją odpowiedź. – Woodifer

+0

Mimo że myTheme ma kategorię "apps.geometrixx-main", nie zostanie uwzględnione, gdy themed = false, ponieważ jego folder nadrzędny nazywa się "motywami"? – jedatu

1

już wspomniano, że motyw jest pobierany z żądania zrobił trochę kopanie w końcu okazało się, że stara się sprowadzić go z życzeniem parametru o nazwie „forceTheme "

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

Ale potrzebne request.getAttribute, ponieważ za pomocą parametrów zapytania będą wysyłać wszystkie żądania do pub.

Domyślam się, że ta opcja motywu w ogóle nie ma zastosowania.

2

Zależy od tego, co masz na myśli przez "temat". Jeśli jesteś przyzwyczajony do wordpress, drupal, itp., To, co w tych systemach nazywa się motywem, nazywa się "projektem" w CQ5/AEM.

Aby ustawić wzór, należy wybrać "ścieżka projektu" we właściwościach strony. Wpłynie to na miejsce przechowywania informacji o komponentach dla każdego szablonu (wszystkie zmiany wprowadzone w trybie projektowania na temat dozwolonych składników, gdzie są przechowywane pod tą ścieżką) i jest konwencją dotyczącą miejsca przechowywania zasobów obrazów CSS, JS i innych niż DAM. Planuje się, ale można ponownie użyć kodu i znaczników w AEM/CQ5, ale całkowicie zmienić wygląd, zmieniając projekt.