Kompilowanie szablonu

W procesie kompilacji szablonu jest dla każdej ze stron zawartych w pliku structure.json szablonu serwisu tworzona statyczna strona HTML.

Podczas kompilacji metadane strony (na przykład 100.json) są łączone z układem strony (na przykład about.html), tak że uzyskuje się stronę HTML, która zostanie od razu wyświetlona bez konieczności użycia kontrolera w trybie wykonawczym. Kompilatory niestandardowe pozwalają w jeszcze większym stopniu ograniczyć wykonywanie kodu JavaScript w trybie wykonawczym, kompilując ze stroną elementy uprzednio dynamiczne, takie jak nawigacja czy składniki.

Polecenie cec compile-template wykonuje w odniesieniu do każdej ze stron serwisu następujące czynności:

  • Wczytanie metadanych serwisu i stron
  • Wczytanie układu stron i zastosowanie kompilatora układu stron
  • Dla każdego gniazda na stronie:
    • Rozwinięcie gniazda przy użyciu tabeli zdefiniowanej w pliku page.json
    • Dla każdego składnika w gnieździe:
      • Zastosowanie kompilatora składnika
      • Wstawienie wygenerowanego znacznikowego kodu składnika w odpowiednim miejscu w gnieździe
  • Rozwinięcie wszelkich makr w skompilowanym kodzie znacznikowym i wstawienie obiektu SCS JavaScript, używanego przez renderer Oracle Content Management w trybie wykonawczym
  • Zapisanie skompilowanego kodu znacznikowego strony w folderze src/templates/<szablon>/static

Aby skompilować swój serwis, należy uruchomić:

> cec compile-template BlogTemplate
Compile Template: compiling template BlogTemplate
Oracle Content Management Site Compiler

createPage: Processing pageId 100. Preview URL: 
http://localhost:8085/templates/BlogTemplate/index.html 
createPage: Processing pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail.html 
createPage: Processing pageId 401. Preview URL: 
http://localhost:8085/templates/BlogTemplate/about.html 
createPage: Processing pageId 402. Preview URL: 
http://localhost:8085/templates/BlogTemplate/search.html 
createPage: Processing pageId 403. Preview URL: 
http://localhost:8085/templates/BlogTemplate/authors.html 
All page creation calls complete.

Creating detail pages: 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063051-developing-content-layout- for-content-and-experience-cloud
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063052-dynamic-dom- manipulation-in-content-layout 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063045-getting-media-url-in- the-content-layout 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063053-getting-reference- items-in-content-layout 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063048-navigating-to-a- search-page-with-search-query 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063050-alex-read 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063047-jerrold-summers 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063049-kelly-emerson 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063043-samantha-howard 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063046-raising-triggers-from- content-layout 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063044-rendering-the-content- layout-using-mustache-template 
All detail page creation calls complete.

Błędy kompilacji

Podczas kompilacji mogą pojawiać się trzy typy komunikatów: "Informacja", "Ostrzeżenie" i "Błąd".

  1. Komunikaty informacyjne dotyczą problemów, o których należy wiedzieć, lecz zazwyczaj komunikaty są oczekiwane jako część procesu kompilacji i obejmują:
    • Elementy zawartości typu wypełniacz, które będą renderowane w trybie wykonawczym.
    • Brakujące kompilatory układów stron. Układy stron mogą nie zawierać żadnego elementu dynamicznego i dlatego ewentualny brak kompilatora nie jest uznawany za problem.
    • Elementy oznaczone jako renderowane przy dostępie, czyli takie, które w trybie wykonawczym mają być renderowane dynamicznie, mimo że strona została skompilowana.
  2. Komunikaty ostrzegawcze dotyczą problemów, które prawdopodobnie będą mieć wpływ na wydajność serwisu i które — jeśli to możliwe — należy wyeliminować. Elementy z tej kategorii obejmują:
    • Brak kompilatorów układów stron lub kompilatorów składników niestandardowych. Bez nich składniki będą renderowane dynamicznie na stronie, tak jak poprzednio.
    • Brakujące odwzorowania układów zawartości. Jest mało prawdopodobne, że do renderowania elementów zawartości powinien być używany systemowy, domyślny układ zawartości.
  3. Komunikaty o błędach dotyczą problemów i sygnalizują błędy kompilacji. Jeśli będzie to możliwe, kompilacja stron będzie kontynuowana, lecz ogólna kompilacja zakończy się błędem.
    • Najczęściej przyczyną są błędy kodu JavaScript w kompilatorach niestandardowych. Wszystkie błędy trzeba poprawić.

Uwaga:

W celu uniknięcia powtarzania się komunikatów dany komunikat pojawi się tylko raz podczas kompilacji bez względu na to, czy błąd wystąpił na jednej czy wielu stronach.

Dla poprzedniego przykładu został zwrócony następujący status ukończenia kompilacji:

Compilation completed with 0 errors and 3 warnings. 
to display warnings, run with --verbose (-v) option.

Jeśli etap kompilacji zostanie ponownie uruchomiony z opcją "-v", uzyska się następujący wynik:

> cec compile-template BlogTemplate --verbose
Compile Template: compiling template BlogTemplate 
Oracle Content Management Site Compiler

createPage: Processing pageId 100. Preview URL: 
http://localhost:8085/templates/BlogTemplate/index.html 
createPage: Processing pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail.html
Info: no content item specified for placeholder: a890a65c-c0fc-451b-966b-e606ca18a1f4 
component will render at runtime. 
Info: no content item specified for placeholder: c90bbc10-c9d8-4a54-8dd4-7a8251e8efbb 
component will render at runtime. 
Info: no content item specified for placeholder: f12691e1-79ab-4d1f-a8b9-3af8c638dd26 
component will render at runtime.
createPage: Processing pageId 401. Preview URL: 
http://localhost:8085/templates/BlogTemplate/about.html 
createPage: Processing pageId 402. Preview URL: 
http://localhost:8085/templates/BlogTemplate/search.html
Info: Component: "fdfd0392-e901-48f6-8044-36803c836aa1" of type "scs-contentlist" marked as 
"render on access", will not be compiled. 
Info: Component: "ba9f3711-4367-444e-ae38-71289fc10e73" of type "scs-contentlist" marked as 
"render on access", will not be compiled. 
createPage: Processing pageId 403. Preview URL: 
http://localhost:8085/templates/BlogTemplate/authors.html 
All page creation calls complete. 

Creating detail pages: 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063051-developing-content- layout-for-content-and-experience-cloud 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063052-dynamic-dom- manipulation-in-content-layout 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063045-getting-media-url-in- the-content-layout 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063053-getting-reference- items-in-content-layout 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063048-navigating-to-a- search-page-with-search-query 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063050-alex-read 
Warning: failed to find content layout map entry for: Starter-Blog-Author:header. Will compile 
using the system default layout.
Warning: failed to find content layout map entry for: Starter-Blog-Author:content. Will compile 
using the system default layout. 
Warning: failed to find content layout map entry for: Starter-Blog-Author:sidebar. Will compile 
using the system default layout.  
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063047-jerrold-summers 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063049-kelly-emerson 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063043-samantha-howard 
createPage: Processing detail pageId 105. 
Preview URL: http://localhost:8085/templates/BlogTemplate/post-detail/1481786063046-raising-triggers-from- content-layout 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063044-rendering-the-content- layout-using-mustache-template 
All detail page creation calls complete. 

Compilation completed with 0 errors and 3 warnings. 

*** compiled template is ready to test 
*** to render non-compiled pages, remove compiled files from under: /private/tmp/cec-
src/src/templates/BlogTemplate/static

Kompilowanie strony szczegółów

Podczas kompilowania strony szczegółów są scalane wszystkie elementy zawartości napotkane w trakcie kompilacji. Następnie jest rekompilowana strona szczegółów dla każdego znalezionego elementu zawartości, przy czym do zdefiniowania adresu URL nowej strony szczegółów jest używana wartość opisowa (slug).

Generowanie wyników kompilacji odbywa się w dwóch etapach:

  1. Kompilowanie strony
  2. Kompilowanie strony szczegółów

W poprzednim przykładzie są wyświetlane ostrzeżenia o braku wpisów odwzorowań układu zawartości dla strony Starter-Blog-Author. My jednak nie chcemy uzyskać stron szczegółów dla strony Starter-Blog-Author. Strona szczegółów ma zostać utworzona tylko dla elementów zawartości Starter-Blog-Post. Aby usunąć te błędy, można wykluczyć elementy zawartości z kompilacji strony szczegółów, jeśli te elementy w swoich ustawieniach nie zawierają jawnego odwołania do strony szczegółów; służy do tego następująca opcja:

--noDefaultDetailPageLink, -o  Do not generate compiled detail page for items/content lists
      that use the default detail page.

Po ponownym uruchomieniu kompilacji z wykluczeniem strony szczegółów, przy którym jest używana domyślna strona szczegółów, uzyskuje się następujący wynik:

> cec compile-template BlogTemplate --noDefaultDetailPageLink 
Compile Template: compiling template BlogTemplate 
Oracle Content Management Site Compiler 

createPage: Processing pageId 100. Preview URL: 
http://localhost:8085/templates/BlogTemplate/index.html 
createPage: Processing pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail.html 
createPage: Processing pageId 401. Preview URL: 
http://localhost:8085/templates/BlogTemplate/about.html 
createPage: Processing pageId 402. Preview URL: 
http://localhost:8085/templates/BlogTemplate/search.html 
createPage: Processing pageId 403. Preview URL: 
http://localhost:8085/templates/BlogTemplate/authors.html 
All page creation calls complete.

Creating detail pages: 
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063051-developing-content-
layout-for-content-and-experience-cloud
createPage: Processing detail pageId 105. Preview URL:
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063052-dynamic-dom -manipulation-in-content-layout
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063045-getting-media-url-in- the-content-layout
createPage: Processing detail pageId 105. Preview URL:  
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063053-getting-reference- items-in-content-layout
createPage: Processing detail pageId 105. Preview URL: 
http://localhost:8085/templates/BlogTemplate/post-detail/1481786063048-navigating-to-a- search-page-with-search-query
All detail page creation calls complete.

Compilation completed with no errors.

*** compiled template is ready to test 
*** to render non-compiled pages, remove compiled files from under: /private/tmp/cec-
src/src/templates/BlogTemplate/static

Kompilowanie określonych stron

W szablonie nie zawsze trzeba kompilować wszystkie strony. Można wybrać, które strony mają zostać skompilowane. Jest to przydatne, jeśli trwają prace nad określonymi stronami, dla których mają być wykrywane błędy lub które mają być aktualizowane bez konieczności ponawiania kompilacji całego serwisu.

Aby skompilować określone strony, należy użyć opcji --pages (-p), po której następuje lista stron do skompilowania.

Uwaga:

Uwaga: Jeśli elementy zawartości znajdują się na stronach szczegółów z odwołaniami do listy, to strony szczegółów także zostaną skompilowane, nawet gdy nie są jawnie dołączane.

cec compile-template BlogTemplate --pages 401,402 
Compile Template: compiling template BlogTemplate 
Oracle Content Management Site Compiler

createPage: Processing pageId 401. Preview URL: 
http://localhost:8085/templates/BlogTemplate/about.html 
createPage: Processing pageId 402. Preview URL: 
http://localhost:8085/templates/BlogTemplate/search.html 
All page creation calls complete.

Compilation completed with no errors. 
*** compiled template is ready to test 
*** to render non-compiled pages, remove compiled files from under: /private/tmp/cec- 
src/src/templates/BlogTemplate/static