Компиляция своих шаблонов

При компиляции шаблона создается статическая HTML-страница для каждой страницы в файле structure.json для сайта в шаблоне.

На этапе компиляции метаданные страницы (например, 100.json) объединяются с макетом страницы (например, about.html), чтобы получить HTML-страницу, которая отображается немедленно без использования контроллера во время выполнения. Пользовательские компиляторы позволяют еще больше сократить выполнение кода JavaScript во время выполнения, скомпилировав в странице ранее динамические элементы, такие как элементы навигации и компоненты.

Команда cec cile-template выполняет для каждой страницы сайта следующие действия:

  • Чтение метаданных сайта и страниц.
  • Чтение макета страницы и примените любого компилятора макетов страниц.
  • Для каждой ячейки на странице:
    • Разверните ячейку с сеткой, заданной в файле page.json.
    • Для каждого компонента в ячейке:
      • Примените любой компилятор компонентов.
      • Вставьте созданную разметку компонента в соответствующее место внутри ячейки.
  • Разверните все макрокоманды в скомпилированной разметке и вставьте JavaScript-объект SCS, используемый рендерером Oracle Content Management во время выполнения.
  • Сохраните скомпилированную разметку страницы в папке src/templates/<template>/static.

Чтобы составить сайт, выполните следующую команду:

> 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.

Ошибки компиляции

Во время компиляции пользователь получает сообщения трех типов: информационные, предупреждающие и об ошибках.

  1. Информационные сообщения касаются проблем, о которых вам следует знать, но эти сообщения, вероятно, ожидаются как часть компиляции:
    • Элементы контента с заполнителями, рендеринг которых осуществляется во время выполнения.
    • Отсутствуют компиляторы макетов страниц. Макеты страниц могут не содержать динамических элементов, поэтому их отсутствие не считаются проблемой.
    • Элементы снабженные меткой "рендеринг при доступе", то есть разработчик сайта хочет, чтобы рендеринг этого компонента осуществлялся динамически во время выполнения, даже если страница скомпилирована.
  2. Предупреждающие сообщения касаются проблем, которые, скорее всего, могут повлиять на эффективность работы сайта и по возможности должны быть устранены. Элементы этой категории:
    • Отсутствуют компиляторы макетов контента или пользовательских компонентов. Без них компоненты динамически отображаются на странице, как это было ранее.
    • Отсутствуют карты макетов контента. Маловероятно, что для рендеринга элементов контента вам захочется использовать системный макет контента по умолчанию.
  3. Сообщения об ошибках касаются проблем, которые указывают на сбой компиляции. Страницы по возможности компилируются, но общая компиляция будет закрыта с ошибкой.
    • Скорее всего, это вызвано ошибками JavaScript в пользовательских компиляторах. Все ошибки должны быть устранены.

Примечание.:

Чтобы сократить количество повторяющихся сообщений, одно и то же сообщение отображается только один раз за компиляцию независимо от того, выполняется ли оно на одной или на нескольких страницах.

Предыдущий пример имеет следующий статус при выходе из компиляции:

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

При повторном выполнении компиляции с параметром "-v" отображается следующий результат:

> 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

Компиляция страниц сведений

Компиляция страницы сведений объединяет все элементы контента, которые встречаются во время компиляции. Затем программа повторно компилирует страницу сведений для каждого обнаруженного элемента контента, используя значение кода для определения URL-адреса новой страницы сведений.

Вывод предыдущей компиляции осуществляется в двух разделах:

  1. Компиляция страниц
  2. Компиляция страниц сведений

В предыдущем примере отображались предупреждения об отсутствии записей в карте макетов контента для страницы Starter-Blog-Author. Однако нам не нужны страницы сведений для Starter-Blog-Author. Страница сведений предназначена только для элементов контента Starter-Blog-Post. Чтобы удалить эти ошибки, мы можем исключить элементы контента из компиляции страницы сведений, если в их настройках нет явных ссылок на страницы сведений. Для этого используется следующий параметр:

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

Таким образом, повторная компиляция, за исключением создания страницы сведений, при котором используется страница сведений по умолчанию, создает следующие выходные данные:

> 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

Компиляция определенных страниц

Не требуется компилировать все страницы в шаблоне. Можно выбирать страницы для компиляции. Это полезно в случае работы с определенными страницами, которые требуется отлаживать или обновлять без постоянной повторной компиляции всего сайта.

Чтобы компилировать определенные страницы, укажите параметр --pages (-p), за которым следует список нужных страниц.

Примечание.:

Примечание. Если элементы контента на страницах в списке ссылаются на страницы сведений, эти страницы сведений также компилируются, даже если они не включены явно.

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