Макеты Шаблонов Liferay


Как шаблон макета оказываемых в



бет4/4
Дата04.10.2019
өлшемі236 Kb.
#49210
1   2   3   4
Байланысты:
Макеты Шаблонов Liferay


Как шаблон макета оказываемых в Liferay?

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


Главная Servlet в Liferay портал

Liferay Портал реализован в Struts и включает в себя Main Servlet Сервлет-класс com.liferay.portal.servlet. MainServlet как зарегистрированный ниже в ${PORTAL_ROOT_HOME}/WEB-INF/web.xml файл.





Main Servlet

com.liferay.portal.servlet.MainServlet


config


/WEB-INF/struts-config.xml,/WEB-INF/struts-config-ext.xml





debug


0





detail


0




1


Как показано на выделенной линии выше, Главное Servlet включает нагрузку на запуск элемента. Дополнительного содержания этого элемента должно быть целое число, указывающее порядок, в котором сервлет должен быть загружен. Контейнер должен гарантировать, что сервлеты, отмеченные ниже целые загружаются до сервлеты, отмеченные выше целые числа. Есть более чем 20 сервлеты зарегистрированных в Liferay портал web.xml и нагрузки на тип запуска Главная сервлета в натуральных числах 1 ниже, чем в любой другой сервлет в этом файле. Это указывает на то, что этот сервлет должен быть загружен (экземпляра и его инициализации () метод, называемый) на запуск веб-приложения после портал развертывания приложения.

Давайте внимательнее посмотрим на исходный код com.liferay.portal.servlet. MainServlet.java, который доступен в Liferay-портал-SRC-{version.number}. ZIP со страницы загрузки Liferay. init() метод сервлета вызывает несколько других методов инициализации для инициализации различных услуг, мероприятия, акции, и так далее. Следующие три метода, связанные с содержанием портлетов, расположение и внешний вид (тему) из страницы портала:



  • initPortlets метод анализирует все портлеты, определенных в портлет-custom.xml, портлет-ext.xml, Liferay-portlet.xml, и Liferay-портлет-ext.xml перед вызовом несколько других интерфейсов API для создания портлетов. В зависимости от среды Liferay, некоторые из этих XML-файлы, которые не могут существовать.

  • initLayoutTemplates метод анализирует все расположение шаблонов, определенных в Liferay-топологии templates.xml и Liferay макетов-шаблонов-ext.xml перед вызовом инициализации метод com.liferay.portal.service.LayoutTemplateLocalServiceUtil начать размещение шаблонов.

  • initThemes метод анализирует все темы, определенные в Liferay-вид и feel.xml и Liferay-выглядеть и чувствовать-ext.xml перед вызовом Init () метод для инициализации com.liferay.portal.service.ThemeLocalServiceUtil темы .

В дополнение к MainServlet, вы могли заметить существование com.liferay.portal.struts.PortletActionServlet в исходных кодах. Оба сервлеты простираются от ActionServlet. Тем не менее, MainServlet для Liferay Portal себя, который использует Struts в то время как PortletActionServlet для отдельных ВОЙН портлета, который использует Struts. У них разные стойки-config.xml файлы, чтобы они нуждаются в различных сервлеты.
Страница рендеринга, как объясняется с кодом потока

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

1. Первоначальный запрос приходит на сервер портала Liferay из браузера, и бьет службы (запрос, ответ) метод сервлета com.liferay.portal.servlet.MainServlet. Этот метод состоит в обработке запроса на обслуживание. Различные атрибуты сессии, такие как WebKeys.USER_ID и Globals.LOCALE_KEY хранятся в сессии. Некоторые атрибуты запроса в том числе и PageContext.EXCEPTION WebKeys.CTX сохраняются в запросе, а также. Эти объекты предназначены для использования с помощью кода ниже по течению.

2. Метод MainServlet.processServicePre называется.

3. Метод com.liferay.portal.events.EventsProcessorUtil.process называется начать preservice событий до Struts обрабатывает запрос. По умолчанию, preservice событий реализуются в com.liferay.portal.events.ServicePreAction из-за следующую строку в portal.properties, который упакован в портала impl.jar.

servlet.service.events.pre = com.liferay.portal.events.ServicePreAction

Планировка и тема, которая будет отображаться определяются в ServicePreAction.servicePre метод. Ниже приведен список некоторых из атрибутов запроса, которые хранятся для последующего использования кода:

WebKeys.LAYOUT: текущую схему

WebKeys.LAYOUTS: других доступных макетов

WebKeys.THEME: тема для отображения

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

WebKeys.THEME_DISPLAY: Все настройки, связанные с объектом themeDisplay

Вы можете настроить дослужебной события, предоставляя собственную реализацию таких как com.your.own.impl.ServicePreAction.java в плагине Liferay доб и добавив следующую строку конфигурации для вашего портала ext.properties:

servlet.service.events.pre = com.your.own.impl.ServicePreAction

4. Код темы инфраструктуры будет вызывать com.liferay.taglib.util.ThemeUtil класса оказать содержание темы. Это вызывает либо includeJSP () метод для включения JSP отображаемое содержимое, или includeVM () метод для включения скорости отображаемое содержимое.

5. При использовании скорости основе темы, запрос будет проходить через com.liferay.portal.velocity.VelocityVariables класса и его insertVariables метод. Именно здесь различные переменные скорости добавляются к скорости связи для использования вниз по течению тему системы.

6. / /html/common/themes/portal.jsp является "верхним уровнем" отображения страницы. Он выбирает portal_normal.jsp или portal_pop_up.jsp на основе текущего состояния отображения темы, и включает его, используя пользовательских тегов, осуществляемый com.liferay.taglib.theme.IncludeTag, что, в свою очередь, звонки com.liferay.taglib.util.ThemeUtil.include (). Скачать с Wow! книга www.wowebook.com

7. MainServlet.callParentService(request,response) вызывается перед вызовом super.service (запрос, ответ) метод. Эта услуга метод определен в суперклассе javax.servlet.http.HttpServlet из org.apache.struts.action.ActionServlet.

8. Struts вызывается для обработки запроса на обслуживание. Liferay использует пользовательский запрос Struts процессор com.liferay.portal.struts.PortalRequestProcessor. Его конструктор добавляет /portal/layout своей _lastPaths атрибут и PortalRequestProcessor.getLastPath(request) метод вычисляет последний путь посетили, и расходные материалы путь по умолчанию для первого входа в портал.

9. Как указано ниже, в ${PORTAL_ROOT_HOME}/WEB-INF/struts-config.xml, первоначальный запрос /portal/layout is handled by com.liferay.portal.action.LayoutAction







10. Следующая конфигурация в ${PORTAL_ROOT_HOME}/WEB-INF/tiles-defs.xml приносит странице портала в /portal/layout.jsp, которая указывает на /html/portal/layout.jsp файл.





11. В LayoutAction.execute метод, используется следующий код, чтобы получить themeDisplay и верстка:

ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute (WebKeys.THEME_DISPLAY);

Макета = themeDisplay.getLayout ();

12. LayoutAction.processLayout звонки includeLayoutContent метод, как показано ниже:

includeLayoutContent (запрос, ответ, themeDisplay, верстка);

13. LayoutAction.includeLayoutContent метод оказывает / HTML / портал / макет / просмотр / portlet.jsp как часть страницы портала, как показано ниже:

String path = StrutsUtil.TEXT_HTML_DIR;

/* path = "/html" */

path += PortalUtil.getLayoutViewPage(layout);

/* path = "/html/portal/layout/view/portlet.jsp" */

RequestDispatcher rd = ctx.getRequestDispatcher(path);

rd.include(req, stringServletRes);
14. LayoutAction.processLayout метод оказывает /html/portal/layout.jsp как часть страницы портала. Это достигается, как показано ниже:

return mapping.findForward("portal.layout");

Как вы можете видеть в шагах 13 и 14, выше portlet.jsp и layout.jsp являются двумя ключевыми файлами в портал рендеринга страницы. Портал включает в себя оказание расположение содержимого до загрузки страницы, потому портлетов на странице можно задать заголовок страницы и подзаголовок.

Теперь давайте более подробно рассмотрим / HTML / портал / макет / просмотр / portlet.jsp файл. Следующую строку занимает velocityTemplateContent качестве входного атрибута.

RuntimePortletUtil.processTemplate(application, request, response,

pageContext, velocityTemplateId, velocityTemplateContent)


При выводе этой velocityTemplateContent в консоли, и вы должны быть в состоянии видеть выход, как показано на следующем, когда вы используете пользовательский шаблон 1_3_columns шаблон, который мы создали ранее в этой главе.





















$processor.processColumn("column-1", "portlet-column-content portlet-column-content-only")



$processor.processColumn("column-2", "portlet-column-content portlet-column-content-first")



$processor.processColumn("column-3", "portlet-column-content")



$processor.processColumn("column-4", "portlet-column-content portlet-column-content-last")






Означает ли это выглядеть знакомо? Этот выход точно такие же, как в 1_3_columns.tpl который мы создали в шаблон макета 1_3_columns. Видите ли, мы создали пользовательский шаблон, применил его к странице портала, и этот файл шаблона макета назначается именно так, как это должно velocityTemplateContent атрибут.
Теперь давайте вернемся к RuntimePortletUtil.processTemplate API вызова в /html/portal/layout/view/portlet.jsp файл и посмотрите, как она работает. Во-первых, она генерирует следующего содержания:




















[$TEMPLATE_COLUMN_column-1$]



[$TEMPLATE_COLUMN_column-2$]



[$TEMPLATE_COLUMN_column-3$]



[$TEMPLATE_COLUMN_column-4$]






Затем он генерирует следующий код, если у нас есть четыре портлетов, B, C, D и на этой странице и они загружены в колонках 1, 2, 3 и 4, соответственно.





















[$TEMPLATE_PORTLET_A$]



[$TEMPLATE_PORTLET_B$]



[$TEMPLATE_PORTLET_C$]



[$TEMPLATE_PORTLET_D$]





Это достигается путем следующий код в метод RuntimePortletUtil.processTemplate.

Map columnsMap = processor.getColumnsMap();

Iterator> columnsMapItr =

columnsMap.entrySet().iterator();

while (columnsMapItr.hasNext()) {

Map.Entry entry = columnsMapItr.next();

String key = entry.getKey();

String value = entry.getValue();

output = StringUtil.replace(output, key, value);

}

Для каждого столбца в макете страницы, класс PortletColumnLogic процессов каждого портлета использованием processContent() метод. В этом методе, HTML, которая окружает каждого окна портала не генерируется. Дальнейшая обработка затем делегированы метод RuntimePortletUtil.processPortlet ().



В конце концов, для каждого окна портала, методом com.liferay.portal.util.PortalUtil.renderPortlet () вызывается, в котором содержится призыв /html/portal/render_portlet.jsp оказать содержание отдельных портлетов. Это, в свою очередь, вызывает /html/common/themes/portlet.jsp,, который заканчивается вызовом /html/common/themes/portlet_content.jsp.

Наконец, следующая строка в конце RuntimePortletUtil.processTemplate () API вызова генерирует окончательный вывод, что portlet.jsp потребностей для визуализации.

return StringUtil.replace(output, "[$TEMPLATE_PORTLET_", "$]?", contentsMap);
Теперь тема, окон портала и шаблон макета на странице все обработке и подготовке. ProcessServicePost (запрос, ответ) метод Главная Servlet вызывается в конце концов блок внутри службы сервлета (запрос, ответ) метод.

Процесс метод класса com.liferay.portal.events.EventsProcessorUtil называется начать пост-служба событий процесса после Struts обрабатывает запрос. По умолчанию, после службы событий реализуются в com.liferay.portal.events.ServicePostAction из-за следующей строки конфигурации в portal.properties:

servlet.service.events.post=com.liferay.portal.events.ServicePostAction

Как и в дослужебной событий, вы можете настроить пост-служба событий, предоставляя собственную реализацию таких как com.your.own.impl.ServicePostAction.java в плагине доб в Liferay 6.x Плагины SDK и добавив следующую строку Ваш портал-ext.properties:

servlet.service.events.post=com.your.own.impl.ServicePostAction

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



По умолчанию конфигурации для верстки шаблона

Liferay Portal набора сотни конфигурации по умолчанию в portal.properties файл, который упакован в ${PORTAL_ROOT_HOME}/WEB-INF/lib/portal-impl.jar файл. Некоторые из этих параметров конфигурации, связанных с настроек внешнего вида и могут быть перезаписаны в portal-ext.properties файл.



Настройка шаблона макета по умолчанию ID

По умолчанию, Liferay использует 2_columns_ii шаблон макета по умолчанию макета. Если вы хотите, вы можете изменить это значение по умолчанию на свой собственный шаблон дизайна, такие как 1_3_columns шаблон макета, который мы создали в начале этой главы. Это можно сделать, добавив следующую строку portal-ext.properties файл установки Liferay. Обратите внимание, что вы можете найти ID шаблон макета в liferay-layout-templates.xml файл макета шаблона.

default.layout.template.id=1_3_columns

Остальные настройки по умолчанию, такие как по умолчанию Гость общественного макеты, по умолчанию Пользователь общественного макеты, пользователя по умолчанию Частные макеты и т.д. также может быть настроен на портале ext.properties-файл. Вы можете найти более подробную информацию о первоначальным настройкам по умолчанию в portal.properties.



Резюме

В этой главе вы узнали основные понятия Liferay макет портала, и как тема, макет и портлеты работают вместе, чтобы создать страницу портала, как создать свой собственный шаблон макета и отрисовки страниц кода потока, и так далее .



В следующей главе, мы будем смотреть на стиль страницы портала.

Достарыңызбен бөлісу:
1   2   3   4




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет